morimayu
2018年3月6日 19時45分
森と申します。
いつもお世話になっております。
デバイスドライバ(ローダブルモジュール)より、/dev/ttymxc1をオープンしread/writeの動作検証を行っているのですが、
read/write(ドライバと実際の入出力間)の性能が悪いようです。
ボーレートを9600で設定した場合、以下の結果になっております。
パケットチャプチャー上では、Write直後10ms程度で受信(10byte程度のデータ)
readで読み取れるまでに70~80ms程度掛かっているようです。
(write後からreadまでの時間を計測)
ボーレートを38400に変更すると、やや早くなるものの、50ms程度掛かっております。
現在動作させているのは、readとwriteのみで他の負荷は無い状態です。
/dev/ttymxc1を使っての通信性能としては、これが限界なのでしょうか?
それとも、何か改善する方法等あるのでしょうか。
ご教授いただけますでしょうか。
コメント
morimayu
at_mizo
2018年3月7日 9時18分
溝渕です。
> ボーレートを9600で設定した場合、以下の結果になっております。
> パケットチャプチャー上では、Write直後10ms程度で受信(10byte程度のデータ)
パリティ無しの8bitデータの場合は、start/stopも含めて、
10bit = 1Byte
です。
これより、ボーレートが9600だと、データの実効レートは、
960Byte/s
となります。
1Byte送るために必要な時間は、
1 / 960 = 約1.04ms
となります。
10Byteだと、送信後およそ10msで受信が完了するのは期待値通りのように考え
られます。
"10ms"というのは、どこからどこまでの時間でしょうか。
> readで読み取れるまでに70~80ms程度掛かっているようです。
> (write後からreadまでの時間を計測)
これは、自身でループバックした場合のことでしょうか。
また、時間はどのように測定していますか。