[Armadillo:04991] Re: [a500fx][ttymxc] 送っていない 0xff を連続受信するモードに陥る

Yasushi SHOJI email@hidden
2010年 2月 23日 (火) 16:19:59 JST


詳細なレポートにもかかわらず、反応が非常に遅くてすみません。

overrunから抜けられないのかもしれないので、調べてみます。
以下、簡単なコメントです。

At Tue, 27 Oct 2009 17:01:17 +0900,
URATAN Shigenobu wrote:
> 
[...]
>     ・再現手順 [2] であればユーザープロセスにも CPU が回ることから、
>       ハードウェアの「受信*中*ステートに中途半端に入って抜けない」問題か?
>         (再現手順 [1] だと debug 出力で CPU/uart を食い尽くすようで)

送り手が12倍速だと、なにかあるのかもしれませんね。overrun が立つので、
そこの処理でしょうか。256回ごとに overrun のビットが落るのは、

	static void mxcuart_rx_chars(uart_mxc_port * umxc)
	{
		struct tty_struct *tty = umxc->port.info->tty;
		volatile unsigned int ch, sr2;
		unsigned int status, flag, max_count = 256;

と、max_count == 256 だからかと。

RxのFIFOは、32文字分あります。途中で計算しているときに、32という数字
FIFOのサイズ以外で見たのですが、どこだか忘れてしまいました…。

> 余談
>     ・kernel から見たレジスタアドレスが、iMX31 仕様書のアドレス値に対して
>       オフセットされているのはなぜ?

ごめんなさい。どこの値ですか?
ioremap()しているからでしょうか?

>     ・今回の問題とは(たぶん)まったく関係ないが、
>       mxc_uart.c の この(patch参照) if() 文の記述、ボクはまずいと思います。

どれですか?

>     ・cp /dev/xxx ... すると device file そのものがコピーされちゃうんですね !?

最近は普通です。:-) 昔の cp は、中身のコピーをしていたはずですが、新しい
POSIX では、deprecated な動作です。
-- 
           yashi



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