[Armadillo:06930] Re: 420のUARTドライバ受信バッファについて

Takenoshita Koyo email@hidden
2011年 3月 31日 (木) 12:04:21 JST


竹之下です。

[MSK製品開発G]H.Taguchi さんは書きました:
> 田口と申します。
> 横から失礼いたします。
> 
> 230.4kbpsだと、秒間23.04kByte(UARTは通常8ビットの転送に10ビット使います)ですので、64KByteに対して3秒弱ですね。
そもそも、思いっきり計算間違いしてますね。38分なわけが無い。
申し訳ありません。
訂正ありがとうございます。

> 
> 
> On Thu, 31 Mar 2011 10:46:20 +0900
> Takenoshita Koyo <email@hidden> wrote:
> 
>> 竹之下です。
>>
>>> 230.4kbpsでどの位の時間とUARTへデータを取りに行かなくても取りこぼさなく 
>>> て済むか
>>> UARTの受信処理について詳細知っている方おられましたらご教授願えないでしょ 
>>> うか。
>> UART(シリアル通信)のバッファ処理は色々な箇所で行われています。
>>
>> まず、i.MX25のUARTコントローラが内部に32バイトのRx/TxFIFOを持っています。この
>> FIFOに溜まったデータをカーネルが読み出して、カーネル空間のバッファに溜めます。
>>
>> カーネルでのバッファリングは、mxc_uart.cの中ではなく、ttyレイヤで行っています[*1]。
>> ttyレイヤでは、最大64kByte(65536byte)のバッファリングを行います[*2]。
>>
>> ですので、アプリからみて「どの位の時間データを取りにいかなくても取りこぼさないか?」
>> という問いに対する回答としては、
>> 64kByte / (230.4kbps/8) = 2275.55...sec = 約38分
>> となります。
>>
>> 思っていたよりも、かなり大きなバッファが用意されているのですね。
>>
>> *1: Linux カーネルのシリアル通信に関する階層構造は、以下のページのFigure 3が参考になると
>>     思います。
>>     http://www.linux.it/~rubini/docs/serial/serial.html
>> *2: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=01da5fd83d6b2c5e36b77539f6cbdd8f49849225
>>
>> -- 
>> Koyo Takenoshita
>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 


-- 
Koyo Takenoshita




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