[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 メーリングリストの案内