読者です 読者をやめる 読者になる 読者になる

Armadilloでシリアルoverrun

組み込み linux

Armadilloに
 シリアルインターフェースHT3010
 CFカードドライブHT3040
を接続して使用
カーネル linux-2.4.21-rmk1-armadillo-2
PCMCIAドライバ pcmcia-armadillo-2.4.21

シリアルで9600bpsでデータを受信し、そのデータをCFカードに記録
シリアル用のドライバは、8250.cを自分でArmadillo用に書き換えて使用

問題なのが、CFカードの上の記録済みデータファイルをgzipで圧縮すると
シリアルでオーバーランエラーが起こる
syslogには以下のようなエラーが出力される
May 9 15:51:37 armadillo kernel: ttyS: 1 input overrun(s)

シリアルのFIFOは有効にしているので、1msec/byte * 16byte = 16msec以上の割り込み禁止
期間が生じてしまっている

原因としては、PC104の割り込み線がCPUの割り込み1つだけを共有しているせいだと思われる
 CFカードへのアクセスで、PC104バスに割り込みが生じる
 割り込み線を共有しているので、シリアルの受信割り込みが生じてもCPUが受け取らない
ということだと予想

Armadillo MLに質問を投げてみたが...