[Armadillo:05457] Re: DMA転送を有効にした場合のシリアル通信プログラムについて
Myoukan Kiyohito
email@hidden
2010年 7月 20日 (火) 15:59:07 JST
明官です。
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 メーリングリストの案内