Linux kernel 用户空间中的串行驱动程序

Linux kernel 用户空间中的串行驱动程序,linux-kernel,kernel-module,pci,Linux Kernel,Kernel Module,Pci,是否可以在用户空间中编写串行驱动程序,但设备是否在系统中显示为常规串行驱动程序/dev/ttyS0 完整的故事是,我们有一个pci express fpga,pci express fpga背后有几个设备:串行、CAN总线、i2c、mdio等 我本想将其实现为uio\u pci\u generic,但是串行驱动程序有点问题,因为我们希望它显示为常规的串行/dev/ttyS0 如果无法实现上述功能:是否可以在内核(串行)中实现一些pci设备,在用户空间中实现其他设备?在中断方面有问题吗? 谢谢你的

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

完整的故事是,我们有一个pci express fpga,pci express fpga背后有几个设备:串行、CAN总线、i2c、mdio等

我本想将其实现为
uio\u pci\u generic
,但是串行驱动程序有点问题,因为我们希望它显示为常规的串行
/dev/ttyS0

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


谢谢你的建议。

是的,你可以用pty来完成。用户模式驱动程序打开pty的主端,希望使用串行端口的应用程序打开从端。搜索Linux pty。

是的,您可以使用pty进行搜索。用户模式驱动程序打开pty的主端,希望使用串行端口的应用程序打开从端。搜索Linux pty.

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

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

它不是ttyS0,而是ttypX。我想这是可以接受的,但还是不一样。我们不能设置波特率,或者使用stty,对吗?是的,我想你可以。最后一点:您是否熟悉使用真实设备显示pty的任何示例?谢谢!它不是ttyS0,而是ttypX。我想这是可以接受的,但还是不一样。我们不能设置波特率,或者使用stty,对吗?是的,我想你可以。最后一点:您是否熟悉使用真实设备显示pty的任何示例?谢谢!使用uio_pci_generic,可以在用户空间中等待中断。使用uio_pci_generic,可以在用户空间中等待中断。