gpt4 book ai didi

linux - 命令行配置 TTY 设备

转载 作者:太空狗 更新时间:2023-10-29 12:35:52 24 4
gpt4 key购买 nike

我目前的任务是将一些 16550 兼容芯片的驱动程序从 QNX 移植到 Linux。该芯片提供多个 UART,每个都被视为标准的 16550 串行端口,尽管有一些扩展。

现在,在 QNX 中,整个设备驱动程序被打包到一个独立的可执行文件中,它既充当驱动程序又充当提供的 UART(波特率、环回模式等)的初始配置器。这在 QNX 中很自然,因为设备驱动程序在用户空间中运行,只不过是标准的可执行文件。

在 Linux 上,OTOH,驱动程序现在作为内核模块实现,可随意加载。而且,那个模块是制作方提供的,所以我不想修改或打太多补丁。

对我来说,剩下的任务是提供一些机制来设置这些 UART 的参数。它们被视为/dev/ttyPREFIXX 设备。我打算通过在感兴趣的串行端口上调用标准 termios(即 tcsetattr() 或 ioctls)的标准 C 编程可执行文件来做到这一点。

这让我想到了一个问题:我的方法正确吗?而且,如果是,那么如何实现持久配置?据我所知(来自这个例子:http://www.easysw.com/~mike/serial/serial.html),termios 函数作用于 OPEN 设备。简而言之:他们打开设备,设置参数,读取或写入,然后关闭端口。关闭端口后,配置(波特率等)是否丢失?我希望它不是,因为它已经存储在硬件中。

有人可以向我确认配置是持久的吗?而且,如果没有,如何实现这种持久性,以便将来再次打开该端口并期望它具有一些预先建立的参数的应用程序?如果不是,我是否应该修改模块内核以接受一些参数,然后在加载时进行配置?

我现在打算采用的方法是编写打开端口的 C 可执行文件,设置它们的配置,然后关闭端口。我希望后面的应用程序会看到具有所需配置的端口。

谢谢。

最佳答案

您可能想看看 sttysetserial。尊者Serial-HOWTO (哇,我最后一次向任何人推荐 HOWTO 是什么时候?)可能也是一个很好的起点。

关于linux - 命令行配置 TTY 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com