默认波特率 - Linux / U-Boot

9

我正在开发一个使用u-boot的嵌入式linux系统。 U-boot通过console= bootarg设置ttyS0串口的波特率,但我也想将ttyS[1-3]的默认波特率设置为其他值(而不是9600)。

在这个系统中,U-boot向内核传递了设备树(dts/dtb),但在那里设置波特率似乎不起作用。

需要注意的是,此系统类似于canyonlands板(ppc460ex)。

在u-boot、内核或设备树中是否有任何方法可以更改串口的默认波特率?


这是一个编程问题吗? - Gabe
我认为...更改默认波特率要么是内核模块,要么是设备树源代码的更改。我只是不知道应该在哪里进行。 - dan6470
是使用您的ttys的“应用程序”将设置相应串行端口的波特率。 您想要使用ttyS [1-3] 做什么? 程序正在使用它们吗? - Longfield
系统的控制台位于ttyS0上,但我还需要将Linux启动脚本的消息输出到ttyS1。因此,没有任何应用程序会设置波特率。 - dan6470
那么如何实现启动脚本将消息传输到ttyS1呢?然后这些脚本在向其发送任何消息之前,需要设置ttyS1的波特率。请查看stty命令。 - Longfield
嗨,dan6470,我的同事通过修改.dts文件成功地更改了串行波特率。我不知道他具体做了什么,但当我问他关于串行问题(u-boot和linux的波特率不同)时,他说我使用了错误的.dtb文件。希望这能给你一些线索。 - Dien Nguyen
2个回答

2
有时下面文件中的值会覆盖DTS文件中给出的信息。 请在u-boot源代码中检查下面的文件。
boot/include/configs/[board name].h -- used for specifying environment and CPU peripheral   default value
boot/common/[board name]_cmd_common.h               

0

在原文中提到设备设置似乎被内核忽略了。

在这个系统中,U-boot将设备树(dts/dtb)传递给内核,但是在那里设置波特率似乎没有起作用。

如果您在设备树中硬编码了新的波特率,则可能会在引导过程中被覆盖。在随后的引导过程中,设备树在传递给内核之前由u-boot更新。请查看u-boot源代码中的ft_board_setup()。我自己一直在使用PowerPC 44X分支的u-boot,并且fdt代码更新了串行设备的“clock-frequency”而不是“current-speed”属性。您正在使用的分支可能具有不同的代码库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接