[Armadillo:02131] Re: シリアル受信でデータ取りこぼし

mizo email@hidden
2007年 9月 29日 (土) 19:01:53 JST


溝渕です。

確認した結果、ハードウェアフロー制御はONになっておりました。
確認方法ですが、

1: PC → Armadillo-9 へ10KBのデータをwrite()関数で一気に転送
2: Armadillo-9 側で、read(), sleep(1)を繰り返す

この際に、PC側から、statserialでシリアルポートを監視したところ、PC側の
CTSがon/offを繰り返していました。

また、テストに使用したArmadillo-9のユーザランドイメージですが、
http://armadillo.atmark-techno.com/howto/free-com1
にある、inittab(atmark-dist-20070914/vendors/AtmarkTechno/Armadillo-
9/etc/inittab)の変更までを行なった状態で、ビルドしたイメージを使用してい
ます。

>> また、この時、データを取りこぼしていました。
>> (5164byte送信して、5158byte受信)

確認していただきたいのですが、
struct termios  newtio;
と宣言した場合に、
newtio.c_cc[VMIN]
の値はいくつに設定されているでしょうか?

select()でデータを待つ場合、この値以上のサイズのデータが来なければ、
select()を抜けません。

7以上の値を設定していたりはしないでしょうか?

よろしくお願いします。



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