[Suzaku:00146] Re: UARTでデータ転送がつまづきます

kyosuke yoshizu email@hidden
2004年 11月 17日 (水) 16:19:50 JST


yoshizuです





>At Wed, 17 Nov 2004 15:02:28 +0900,
>kyosuke yoshizu wrote:
>[...]
>> パターン3)失敗
>>
>>   UART_A <------UART_B
>>        ------->
>>  
>>     UART_Aで受信待ちしてUART_Bから”BBBBBBBB"を送信します
>>  
>>     UART_Aでは”BBBBBBBB"を正しく受信できました
>>
>>     UART_Bで受信待ちしてUART_Aから”AAAAAAAA"送信します
>>
>>     UART_Bでは”BBBBBBBB"を受信してしまいます。(ここでは”
AAAAAAAA"
>> を期待しています)

>これだけでは、わからないのでほぼ勘ですが、UART_Aが "BBBBBBBBB"を受信し
>たときにはすでに、UART_Bでも "BBBBBBBBB"を受信していませんか?



受信していました

UART_Aが受信を実行すると UART_Bも受信するようです



>UART_A
>が "AAAAAAA"を書くまえに UART_Bから read()するとどうなります?


 BBBBBBBBをreadしてしまいます 


または、
>UART_Bの Rx interrupt数は増えてませんか?


UART_Bの送信後に UART_BがBBBBBBBBを受信したときの割り込み数は
以下のようにUART_Bの Rx interrupt数は113個も増えています

せいぜい10個以内ではないでしょうか?



実行前

0: port:ffff2000 irq=1 baud:0 tx:7573 rx:378
1: port:ffff8000 irq=3 baud:0 tx:2687 rx:1723 (UART_A) 
2: port:ffff8200 irq=4 baud:0 tx:2851 rx:1606 (UART_B)


UART_B BBBBBBBB送信してBBBBBBBB受信後

Microblaze UARTlite serial driver version 1.00
0: port:ffff2000 irq=1 baud:0 tx:7784 rx:382
1: port:ffff8000 irq=3 baud:0 tx:2814 rx:1837 (UART_A)
2: port:ffff8200 irq=4 baud:0 tx:2965 rx:1719 (UART_B)





>同じ Cのコードを 2つの serial portがある linux pcで試すと、どうなりま
>す?

 
  これはすぐにできそうもありません




>--






            yashi







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