BAKの日記: 今日の戦果
は,結構あった.
昨日から UART の割り込みが busy になって hang up する,という症状を持ち越していた. やはり,UART のデバッグ出力を UART にだすのは,不確定性原理が働いてしまい,無理があるのである :-)
で,昨晩,回路図を眺めて気がついていたデバッグ用のシリアルポートを使ってみる. コネクタが D-sub ではなくピンヘッダなので,てきとーにハンダ付けして変換ケーブルを工作.
で,デバッグ用の print 出力関数を(printk はコンソールにもメッセージを吐くので使えない)こしらえて,いたるところに埋め込む.
「む,多重割り込みがかかってるぞ」
割り込み処理の中で当該割り込みを一時的にマスクする関数の定義を間違えていたのであった. (ここらはフルスクラッチ)
そこで,直してみると… 画面いっぱいに「hoge」の文字が… とりあえずぶちこんでおいた偽 init の起動に成功なのだ.
それでは,と,busybox を使った,もうちょいマトモな userland をぶちこんでみる. をを,shell が起動するではないか.
更に調子こいて PCI バスインターフェースのドライバをぶちこむ. 最新のカーネルソースツリーには入ってないので,ちと古いドライバを持ってきて,名前をテキトーに書き換えてコンパイル・リンク.
cat /proc/pci してみると,見事にバス上のデバイスの情報が表示される.
更に更に調子こいて IDE ドライバをぶちこんでみる. これは,ソースツリーそのまま.
が,うんのつきもここまで. 今度はさすがに認識されなかった. generic のドライバが「PIO で動くよん」とは言うけれど,デバイスは認識されず.
/proc/pci の内容をよくよく見ると,何か変. I/O アドレスが 0x0 のままだし,IDE インターフェースじゃなくて non-VGA なビデオチップが見える.
さらに,しばらくすると UART が hangup する,という現象も. 今度は IRQ busy な状態ではないようなので,追っかけるが大変そうな感じ.
とかやってたら,終電の時間になったので,今週はここでお開きなのであった.