如何配置串行端口(/dev/ttysx)的波特率



我创建了一个新的内核模块来设置网络设备,使用带有串行端口的Linux平台的板。(/dev/ttysx)该模块类似于滑移模块。它定义了一条新的纪律。

除了波特速率配置外,一切都很好。我正在使用的董事会在配置过程中需要特定的波特率,以及用于数据传输的新baudrate之后。

我试图使用tty_encode_baud_rate()原始性配置此Baud速率,并且可以使用tty_termios_baud_rate()原始的tty_termios_baud_rate()正确设置它。问题是它不起作用。UART波特率没有更改。

我在这一点上需要帮助。

我用来更改baudrate的源代码是:

down_write( &tty->termios_rwsem);
old_termios = tty->termios;
cflag = tty->termios.c_cflag;
tty_encode_baud_rate(tty, (speed_t)115200, (speed_t)115200);
if (tty->ops->set_termios)
    tty->ops->set_termios(tty, &old_termios);
printk( " New TTY baudrate is %dn", tty_termios_baud_rate(&tty->termios));
up_write(&tty->termios_rwsem);

谢谢您的帮助

我遇到了相同的问题,并在我的ldisc打开函数中使用此代码段解决了:

struct ktermios new_termios;
/* set baudrate */
down_read(&tty->termios_rwsem);
new_termios = tty->termios;
up_read(&tty->termios_rwsem);
tty_termios_encode_baud_rate(&new_termios, 38400, 38400);
tty_set_termios(tty, &new_termios);

相关内容

  • 没有找到相关文章

最新更新