[Armadillo:05458] Re: DMA転送を有効にした場合のシリアル通信プログラムについて

nakai email@hidden
2010年 7月 20日 (火) 18:12:54 JST


nakaiです。

> 1つ質問なのですが、通常のモード(stty -F /dev/ttymxc2 115200 sane)は
> DMA転送に対応していないということなのでしょうか?

現状でいうと、対応できないということになりますね。
これがどの設定によるものなのかは調査できていません。

申し訳ありません。


(2010/07/20 15:59), Myoukan Kiyohito wrote:
> 明官です。
> 
> rawモードで
>  cat /dev/ttymxc2>  file
> を試したところ受信できることを確認しました。
> 
> テストプログラムもrawモードで動作するように変更したところ
> 受信できるようになりました。
> ありがとうございます。
> 
> 1つ質問なのですが、通常のモード(stty -F /dev/ttymxc2 115200 sane)は
> DMA転送に対応していないということなのでしょうか?
> 
> 以上、よろしくお願いいたします。
> 
> <テストプログラム>
> #include<stdio.h>
> #include<sys/types.h>
> #include<sys/stat.h>
> #include<fcntl.h>
> #include<termios.h>
> 
> #define SERIAL_PORT "/dev/ttymxc2"
> #define FALSE 0
> #define TRUE 1
> volatile int STOP=FALSE;
> 
> int main()
> {
>      char buf[255];                    /* バッファ */
>      int fd=0;                           /* ファイルディスクリプタ */
>      struct termios oldtio, newtio;    /* シリアル通信設定 */
>      int res;
> 
>      fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY);   /* デバイスをオープンする */
>      tcgetattr(fd,&oldtio); /* 現在のシリアルポートの設定を待避させる*/
>      bzero(&newtio, sizeof(newtio)); /* 新しいポートの設定の構造体をクリアする */
> 
>      newtio = oldtio;                  /* ポートの設定をコピー */
> 
>      cfmakeraw(&newtio);       /*←追加 rawモードに変更*/
>      cfsetspeed(&newtio, B115200);    /*←追加 速度設定*/
> 
>      tcflush(fd, TCIFLUSH);
>      tcsetattr(fd,TCSANOW,&newtio);
> 
>      while (STOP==FALSE) {     /* 終了条件が満たされるまでループ */
>         if((res = read(fd,buf,255)) == -1){
>             printf("read error\n");
>             continue;
>         }
>         write(fd,buf,res);
>         buf[res]=0;             /* printf で使うため,文字列の終端をセットする */
>         printf(":%s:%d\n", buf, res);
>         if (buf[0]=='z') STOP=TRUE;
>      }
>      /* ポートの設定をプログラム開始時のものに戻す */
>      sleep(1);
>      tcsetattr(fd,TCSANOW,&oldtio);
>      close(fd);
>      return 0;
> }
> 
>> -----Original Message-----
>> From: email@hidden
>> [mailto:email@hidden] On Behalf Of nakai
>> Sent: Tuesday, July 20, 2010 1:54 PM
>> To: Armadillo series general discussion list
>> Subject: [Armadillo:05455] Re: DMA転送を有効にした場合のシリアル通信プログラム
>> について
>>
>> nakaiです。
>>
>> 簡単に動作確認してみました。
>>
>>>>> ・DMA転送の設定は、linux2.6.x/arch/arm/mach-mx25/serial.h の
>>>>>  UART3_DMA_ENABLE=1
>> を変更してビルド。ビルドしたカーネルで以下の手順で動作をみました。
>>
>> 	A420 ttymxc2<===シリアル変換ケーブル + クロスケーブル===>  PC
>> 					PCではTeratermを使用。
>>
>> A420にログインし、
>> stty -F /dev/ttymxc2 115200 raw
>> で設定し、
>> echo test>  /dev/ttymxc2
>> でPC側に文字列"test"が表示されることを確認。
>>
>> cat /dev/ttymxc2>  file
>> としておきPC側から文字列(約6kバイト)を送信(ファイル送信::バイナリモードを使
>> 用)。
>>
>> 上記はできるようです。
>>
>> stty -F /dev/ttymxc2 115200 sane
>> とした場合は、PC側から1バイト送った時点でシリアルの応答がなくなる(?)ようで
> す。
>>
>> 参考: http://www.linux.or.jp/JM/html/GNU_sh-utils/man1/stty.1.html
>>
>> rawモードで試していただけますか?
>>
>> _______________________________________________
>> 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
> 




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