[Armadillo:00277] シリアルIF HT3010でoverrun

Takamura Naoya email@hidden
2005年 5月 10日 (火) 16:15:36 JST


高村@テラテクニカと申します。

ノーマルArmadillo(Armadillo-9ではありません)に
 シリアルインターフェース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が受け取らない
ということだと予想しています。

IDE周りのドライバをいじればよいのは分かるのですが、私の力不足で手に負えません。
どなたか、情報や対処法をご教示願えないでしょうか?




armadillo メーリングリストの案内