LINUX的串口非标准波特率更改

说实话,这个过程有点复杂。
要更改 Linux 系统中的波特率,必须触及内核。
以Xilinx的Zynq7 02 0平台和4 .1 4 内核为例。
需要增加波特率1 0万的功能。

第一步是修改两个文件:/drivers/tty/tty_baudrate.c 和 /include/uapi/asm-generic/termbits.h。
在termbits.h中,将CBAUD常数从001 001 7 更改为003 001 7 这个操作非常重要,与波特率掩码的计算有关。
看图1 就可以理解。
然后需要添加两个新的定义,如图2 所示。

接下来,进入drivers/tty/tty_baudrate.c文件。
首先将两个数字添加到波特率列表中,1 00000 和 B1 00000。
看图4 ,它被添加到那里。
然后更改 speed_ttty_termios_baud_rate(structktermiostermios) 函数。
如果您查看图 5 ,就会发现新逻辑已添加到圆圈区域。
使用002 0001 和重新定义的CBAUDEX2 来计算并确定如何更改波特率。

内核改了之后,应用端也需要改。
一般使用tcsetattr函数来设置。
设置之前,必须先对齐c_cflag。
例如,这样写: c 结构 termios termios_new; termios_new.c_cflag |= 002 0001 ; //其余配置省略 tcsetattr(fdcom, TCSANOW, &termios_new);
这会将串行端口波特率更改为 1 00,000。
如果要使用不同的波特率,只需在头文件中添加定义并在应用程序页面上赋值即可。

修改linux调试串口

说到Linux串口调试,我已经做过很多次了。
说到这;更新内核启动参数和系统配置文件是调试串口时的常见步骤。

首先,我们必须修改内核启动参数。
这需要打开 /etc/default/grub 文件。
这个文件有一个GRUB_CMDLINE_LINUX参数,那就是关键。
需要添加或者修改里面的串口调试配置。
例如,可以在末尾添加console=ttyS0,1 1 5 2 00n8 ;所以串口为ttyS0,波特率为1 1 5 2 00; 8 个数据位;无奇偶校验位和 1 个停止位。
请记住在保存文件后更新 GRUB 配置,通常使用 sudo update-grub 命令,或者对于某些发行版,您可能需要使用 grub2 -mkconfig -o /boot/grub2 /grub.cfg。
最后,重新启动系统以使这些更改生效。

之后,您可能需要修改系统配置文件。
系统上是否有/etc/inittab文件;需要打开它,添加或修改串口调试相关的配置。
例如,您可以添加行 1 :2 3 4 5 :respawn:/sbin/minicom-s;这样minicom就会在系统启动时自动运行。
不过,这只是一个示例,具体配置取决于您使用的串口调试工具和您的需求。
保存文件后,重启系统或重启相关服务使更改生效。

另一个技巧是使用stty命令修改串口参数。
Linux内核启动后,可以使用该命令。
例如,使用 stty -F /dev/ttyS0 1 1 5 2 00 cs8 parenb cstopb 命令将 ttyS0 设置为 1 1 5 2 00;数据位为8 位;从停止位到1 位;没有帕比特。

注意:必须先备份相关配置文件。
不同的Linux发行版和硬件配置可能会有所不同;具体动作可能需要根据实际情况进行调整。
如果无法生成串口调试信息,请检查配置文件中串口配置是否正确。