パスワードを忘れた? アカウント作成
738417 journal

BAKの日記: レガシーデバイス

日記 by BAK

な問題で悩みまくりである.

IDE コントローラとして PC/AT のサウスブリッヂのっけてるボードなのだが,このサウスブリッヂがイヤーンな味をかもしだしている.

まず,パワーオン状態で PCI バスに IDE コントローラが見えていない. ISA ブリッヂにコマンド送ってやらないと,PCI バス上に IDE コントローラが見えてこないらしい. ま,これは大した問題ではない(というわけでもないのだが.初期化するタイミングにちと悩んだ).

が,こまるのはこの IDE コントローラ. PCI デバイスのくせに I/O アドレスが移動できない. コンフィグレーションいじっても,意地でも 1f0/170 から動こうとしないのである.

そうすると何が困るか,というと,物理アドレスでの配置. まず,MIPS の場合,I/O アドレス空間,という概念がない. メモリマップド I/O である. さらに,アーキテクチャの縛りで,0x00000000 の物理アドレスに RAM がないと困ったことになる. つまり,ISA I/O 空間に対応したアドレスには RAM が詰まっていて,こいつはどうしようもないのである.

もちろん,CPU 側の PCI ブリッヂで,0x00000000 からの PCI 空間をマップすることもできるのだが,これをやると,PCI 空間と 物理アドレス空間がストレートにマップしない.

ストレートにマップしないと,デバイスドライバ側に細工してやる必要があるのだが,これはこれでおおごとである. 自分のところで使うだけならこれでもいいんだけど,パッチの merge なんて考えているので… うーむ. maling list に投げてみるかなぁ.

教訓: PC/AT のサウスブリッヂは,その過去のしがらみを背負っているので,避けるのが吉. 何が悲しゅうて MIPS マシンで PC/AT 互換機のしがらみにつき合わなくてはならんのか…

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...