有时在初始化后串行写操作块

时间:2013-06-23 15:17:10

标签: serial-port embedded-linux

我的嵌入式Linux机箱有2个串口应用程序,它用包裹电缆测试所有串口(只有Rx连接到Tx,没有其他引脚)。 第二个(非控制台)端口工作正常。 第一个(控制台)端口有时可以工作,但有时会做无法解释的事情。 为了测试第一个频道,我在打开之前杀死了'getty'。重生也是禁止的。 然后我做以下事情:

    system("killall getty");
    Sleep(1000);
    if ((fd = open(Name, O_RDWR | O_NOCTTY | O_NONBLOCK)) <= 0)
    MsgFatal("Serial '%s' open error %d.", Name, errno);
    BRN = B115200;
    tcgetattr(fd, &Opts);
    cfsetispeed(&Opts, BRN);
    cfsetospeed(&Opts, BRN);
    cfmakeraw(&Opts);
    Opts.c_cflag |= PARENB;
    Opts.c_cflag |= PARODD;
    Opts.c_cflag &= ~CSTOPB;
    Opts.c_cflag &= ~CRTSCTS;    /* no HW flow control */
    Opts.c_cflag |= CLOCAL | CREAD;
    tcsetattr(fd,TCSANOW,&Opts));

在此之后,SOMETIMES(我的意思是在应用程序的一些运行中)下一个写操作块!

任何建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

首先,getty进程的死亡应立即由其父级initBusyBox的一个方面获得,然后重新启动。需要多长时间可以变化,但通常很快。但这不应影响写入端口。

你怎么知道写的阻塞?请显示该代码。