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