用于uart整体设计的linux驱动程序

时间:2011-04-25 12:56:31

标签: c linux linux-device-driver

**你好,我是一名新手编写的驱动程序,用于在LINUX中使用3 16550 UART芯片的基于PCI的串行板。每个uart芯片支持4个通道(4个串行端口)。

在我的Linux驱动程序代码中,我想过为每个端口使用线程,即共4x3 = 12个端口。你认为为每个端口提供一个专用线程是个好主意,我可能会使用一个特定的通道来实现一个零调制解调器,其他通道RS422其他一些通道RS485等等

我认为线程编程的原因是所有线程都要独立运行,每个线程 - 每个端口都可能处于活动状态或未使用。所以我的目标是让它们尽可能地彼此独立。

请让我知道这种类型的驱动程序的总体设计应该是什么样的。请提供类似的链接/来源。

这是我第一次做这样的事情..我的逻辑是正确的/不正确的还是只是一个错误的流程,这是无效的,听起来绝对可怕 谢谢和问候**

2 个答案:

答案 0 :(得分:0)

我猜测在每个端口上你都会运行一些协议,在这种情况下,每个端口有一个线程的设计很有意义IMO,因为它允许你干净地构建协议驱动程序。

我们多年来一直在使用这样的设计,并且由于历史原因,我们使用System V消息将协议线程与调度程序/管理程序线程连接起来。 SysV消息并非没有自己的问题(例如,它们不具有select()能力),因此您可能希望查看this SO article替代方案。

答案 1 :(得分:0)

Linux内核有许多用于处理串行IO的架构代码。据我所知,没有明确需要线程,因为内核通过回调等来完成通知等。拿起一本关于Linux驱动程序开发的书可能不会有什么坏处。