【问题标题】:Serial driver in userspace用户空间中的串行驱动程序
【发布时间】:2019-01-02 08:19:09
【问题描述】:

是否可以在用户空间编写串行驱动程序,但设备是否在系统中显示为常规串行驱动程序/dev/ttyS0

完整的故事是我们有一个pci express fpga,pci express fpga背后有几个设备:serials、canbus、i2c、mdio等。

我想将它实现为uio_pci_generic,但串行驱动程序有点问题,因为我们宁愿它显示为常规串行/dev/ttyS0

如果上述不可行:是否可以在内核(串行)中实现一些 pci 设备,而在用户空间中实现其他设备?中断方面有问题吗?

感谢您的任何想法。

【问题讨论】:

    标签: linux-kernel kernel-module pci


    【解决方案1】:

    是的,您可以使用 pty.用户态驱动打开pty的主端,想使用串口的应用打开从端。搜索 Linux pty。

    【讨论】:

    • 不会是 ttyS0,而是 ttypX。我认为这是可以接受的。
    • 还是不一样的。我们不能设置波特率,或者例如使用 stty,对吧?
    • 是的,我想你可以。 stackoverflow.com/questions/21641754/…
    • 最后一点:您是否熟悉任何显示 pty 与真实设备的示例?非常感谢!
    【解决方案2】:

    在任何需要使用中断的地方,您都需要为内核空间而不是用户空间编写代码。中断处理程序需要在原子上下文中提供服务,而用户空间无法提供原子上下文。第二件事——如果你需要写 HAL 层——它也必须写在内核空间中。

    【讨论】:

    • 使用uio_pci_generic,可以在用户空间等待中断。
    猜你喜欢
    • 2013-02-23
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多