第7章

第 3 部 市販 PC カード・ホスト・コントローラ制御編
第7章
DOS 上で 16 ビット PC カードと 32 ビット CardBus カードを制御
CardBus ブリッジの制御方法と
PC カード・イネーブラの作成技法
大中 邦彦/熊谷 あき
16 ビット PCIC は ISA バス・ベースでもあるため,今後は使われることはないだろうと思われる.しかし,32
ビット PCIC である CardBus ブリッジは PCI バス・ベースなので,組み込み機器で使われる場面が増えると思わ
れる.また CardBus ブリッジは 16 ビット PCIC の機能も含んでいる.そこで,ここでは CardBus ブリッジに焦点
を絞り,PC カード・イネーブラの具体的な作成事例について詳しく解説する.
● PC カード・サポート・ソフトウェアの形態
PC カードをサポートするソフトウェアの形態とし
ては,大きく分けて重装備型と軽装備型という二つの
考え方があります(図 1).
(編集部)
させ,PC カードに割り当てたリソースを解放し,次
に PC カードが差し込まれるのを待ちます.
このように,あらゆる PC カードに対応する本格的
なプラグ&プレイを実現するためには,PC カードを
重装備型の代表は,Windows などのプラグ&プレイ
正しく判別できる必要があります.しかし,PC カー
対応 OS 上の PC カード・システムでしょう.PC カー
ドの発展途上において,正しくないタプルが記述され
ドが差し込まれると自動的に何のカードであるかを判
た PC カードが存在することも事実です.また,CIS
定し,PC カードが必要とするリソースを調べてその
に記述されている内容だけでは PC カードの種類を特
環境で既に使用されているリソースとぶつからないよ
定できない場合もあります.そこで,Windows など
うにアドレスなどを割り当てます.そして,PC カード
では,CIS に記録されている製品名などの名前から
に対応するドライバ・ソフトウェアを起動します.
PC カードを識別するためのデータベースを持ってい
もし,システム内にドライバが存在しない場合には,
ます.
ドライバのインストールを促します.PC カードが抜
もう一方の軽装備型としては,イネーブラと呼ばれ
き取られれば,ドライバ・ソフトウェアの動作を停止
るソフトウェアがあります.一般的にイネーブラは,
CPUカード
PCカード・
スロット
シリアル
通信カード
アプリケーション・
ソフトウェア
ドライバ
カード・サービス
図1
PC カード・サポート・
ソフトウェアの形態
ソケット・サービス
(a) windowsなど
シリアル通信プログラム
カード・イネープラ
(PCカード・アクセス関数)
(b) 組み込みシステム
(シリアル通信アプリケーションの例)
171
第 3 部 市販 PC カード・ホスト・コントローラ制御編
製の CardBus ブリッジでは,一部動作しないものがあ
ります.
写真 1 にリコー社製 CardBus ブリッジ R5C478II を
搭載した PCI バス増設タイプの CardBus ブリッジ・
ボードを示します.これ以外にも,リコー社製 Card
Bus ブリッジを搭載したノート・パソコンでも動作確
認をしています.
1
プラグ&プレイを実現するには
● システムで使用中のリソースを把握する
写真 1 R5C478II 搭載 PCI バス増設タイプ CardBus ブリッ
ジ・ボード
プラグ&プレイを実現するには,今現在そのシステ
ムでどの I/O やメモリ,割り込みが使われているかを
常時把握しておき,新たにリソースを割り当てる場合
目的とする PC カードが既にソケットに挿入されてい
は使用中のリソースと衝突しないように未使用の領域
る状態で実行され,カードのコンフィグレーションを
を探して,その空間で動作できるようコンフィグレー
行って適切に PC カードのリソースをシステムにマッ
ションする必要があります.
ピングしたのち,そのカード用のドライバやソフトウ
Windows 上であればプラグ&プレイに完全対応して
ェアを実行するという形態をとります.つまり,PC
いるので,OS がすべてのリソースを把握し管理してい
カードの初期化ルーチンといえるでしょう.
ます.しかしDOS はプラグ&プレイではないため,OS
イネーブラは,PC カードの必要とするリソースを
割り当てるのが仕事で,差し込まれた PC カードのメ
ーカ名や製品名を識別する必要は特にありません.
パソコンはあらゆる意味で汎用ですから,やりたい
に問い合わせてもリソース情報は得られません.
実は DOS 環境では,BIOS と連携することで,リ
ソース情報を取得します.486 や Pentium 以降の PC/
AT 互換機にはプラグ&プレイ BIOS(以降 PnP BIOS)
ことに合わせてそのつど PC カードを差し込み,ソフ
が搭載されており,この PnP BIOS がシステム・リ
トウェアを起動します.しかし,ここで想定している
ソースを管理しています.
組み込み用途では,システムにモデム通信機能をもた
しかし,筆者は PC/AT 互換機の BIOS には詳しく
せたり,LAN に対応させるためといったように,初
ないので,PnP BIOS を直接呼び出してリソース情報
めから用途を想定して使用します.PC カードのデー
を取得するプログラムを書くことができません.そこ
タベースをもったり,複雑に階層化されたドライバ構
で,参考文献(3)でも紹介されているプラグ&プレイ
造を採用する必要はないわけです.
BIOS 情報表示ツール
(PnP.COM)
を活用してみました.
● 対象 OS とハードウェア
● プラグ&プレイ BIOS 情報表示ツール
OS として Windows や Linux を想定すると,それぞ
れの OS ごとのデバイス・ドライバの知識などが必要
PnP.COM とは
プラグ&プレイ BIOS 情報表示ツール PnP.COM と
になります.ここでは CardBus ブリッジの制御の具体
は,PnP BIOS を呼び出してシステムで使用中のリ
的な事例を解説するのが主眼なので,C 言語が分かれ
ソース情報を一覧表示するツールです.このツールの
ばサンプル・プログラムが読めることが望まれます.
使い方そのものについては,参考文献(3)を参照して
そこで,ここでは DOS 環境で動作する PC カード・イ
ください.
ネーブラを作成します.使用するプログラミング言語
には DOS 版の LSI C-86 試食版を使用しました.
また,標準 PCI-CardBus ブリッジに準拠したすべて
リスト 1 に USEDLIST コマンドで取得したリソース
情報表示の様子を示します.上から,DMA チャネルの
使用状況,IRQ 割り当て,そして 64K バイト分の I/O
の CardBus ブリッジに基本的には対応しています.リ
ポートと,4G バイト分のメモリ空間の使用状況です.
コー社製の CardBus ブリッジではほぼすべてが問題な
表示中でたとえば「16550A Compatible COM Port」と
く動作しますが,Texas Instruments 社(以降 TI 社)
表示のあるリソースは,シリアル・ポートに使われて
172