【发布时间】:2016-06-15 08:36:46
【问题描述】:
输入硬件:BeagleBone Black,上面运行一些 GNU/Linux 发行版。
我想要实现的目标:我想将一些UART 外围设备设置为921600 波特值,并能够设置其他与串行相关的设置(例如开始/停止位、奇偶校验、数据位、硬件流)控制等)。
到目前为止,在 Linux 中,我已经找到了至少三种配置此参数的方法:
- 使用
struct termios形成termios.h头文件。 - 使用来自
asm/termios.h头文件的struct termios2。 - 使用
stty(1)GNU/Linux 实用程序。
有什么问题:
第一种方法我不能使用921600波特率值(没有定义这么高的值,它只能达到230400 baud。所以这个方法不起作用。
第二种方法为我提供了一种更改自定义baud 速率值的方法,但也很棘手,因为它不提供tcgetattr()、tcsendbreak()、tcflush() 等一些功能。这个函数存在于第一种方法中,由于(1),我不能同时包含头文件termios.h和asm/termios.h。
最后一种方法也不起作用,或者至少它不适用于我想要进行的所有设置。这是我正在使用的当前方法,我正在打开目标文件,我得到一个文件描述符,对该文件描述符我设置通信参数(波特(首先我设置一个较低的值)、奇偶校验、开始/停止位等)使用第一种方法,然后我使用stty(1) 实用程序将波特率值更改(覆盖)为921600(我调用system(...) 函数来执行此操作)。
例如,如果我想更改 HW flow control,此方法将不起作用(它不会覆盖该设置,就像 baud 值发生的情况一样)。
有什么解决办法?
像这样将两种设置参数的方法混合到UART-communication链接可以吗?
【问题讨论】:
标签: linux embedded-linux termios baud-rate