用户空间中的串行驱动程序
Serial driver in userspace
是否可以在用户空间中编写串行驱动程序,但设备是否在系统中显示为常规串行驱动程序/dev/ttyS0
?
完整的故事是我们有一个pci express fpga,pci express fpga背后有几个设备:serials,canbus,i2c,mdio等
我想将其实现为 uio_pci_generic
,但串行驱动程序有点问题,因为我们希望它显示为常规串行 /dev/ttyS0
。
如果以上不可能:是否可以在内核(串行)中实现某些 pci 设备,而在用户空间中实现其他 pci 设备?中断方面有问题吗?
感谢任何想法。
是的,您可以使用 pty 执行此操作。用户态驱动打开pty的master端,想要使用串口的应用打开slave端。搜索 Linux pty.
在任何需要使用中断的地方,您都需要为内核 space 而不是用户 space 编写代码。中断处理程序需要在原子上下文中提供服务,而用户 space 无法提供原子上下文。第二件事 - 如果你需要编写 HAL 层 - 它也必须在内核中编写 space.
是否可以在用户空间中编写串行驱动程序,但设备是否在系统中显示为常规串行驱动程序/dev/ttyS0
?
完整的故事是我们有一个pci express fpga,pci express fpga背后有几个设备:serials,canbus,i2c,mdio等
我想将其实现为 uio_pci_generic
,但串行驱动程序有点问题,因为我们希望它显示为常规串行 /dev/ttyS0
。
如果以上不可能:是否可以在内核(串行)中实现某些 pci 设备,而在用户空间中实现其他 pci 设备?中断方面有问题吗?
感谢任何想法。
是的,您可以使用 pty 执行此操作。用户态驱动打开pty的master端,想要使用串口的应用打开slave端。搜索 Linux pty.
在任何需要使用中断的地方,您都需要为内核 space 而不是用户 space 编写代码。中断处理程序需要在原子上下文中提供服务,而用户 space 无法提供原子上下文。第二件事 - 如果你需要编写 HAL 层 - 它也必须在内核中编写 space.