繁体   English   中英

Linux上的用户空间串行通信库

[英]Userspace Serial communication Library on Linux

我需要开发一个(用户空间)库来处理Linux上的串行通信(在Zynq-Zybo板上:UART,SPI,I2C)。
我浏览了各种网站和资料,并研究了xilinx-linux内核,以及有关O'Reilly Linux Device Drivers的一些参考。
到目前为止,我发现:Linux已经包含自己的内核模块来处理通信(例如:UART内核模块处理外围设备,以便它们显示在/ dev /中,并且可以通过该设备文件与该设备进行交互。从用户空间使用打开,读取,写入等)。
我还读到,作为一种常见的模式,与设备驱动程序的交互是通过字符设备驱动程序完成的,该字符设备驱动程序在用户空间中访问,并负责与设备驱动程序的交互(下图中的详细信息)
在此处输入图片说明

我想到的想法是:

  • 编写一个用户空间库,该库通过经典的open,read,write与所提供的设备文件(在/ dev / ..中)进行简单交互
  • 参考上图,开发一个字符设备驱动程序,并将此模块包含在内核中,以便用户空间库仅通过IOCTL(或类似方法)与之交互,然后此新模块将直接与(现有)设备进行交互司机
    (但是,这种解决方案对我来说听起来不太好:我读到在内核模块内部使用用户空间之类的东西,例如open,read,write并不是一个好主意-尽管可能)-

我的问题是:我应该采用哪种方式,为什么?
此外,无论关于该主题的任何文章/书籍/链接都将受到高度赞赏。
提前致谢!

快速搜索中似乎有很多库,所以不确定为什么要发明轮子,例如https://www.acmesystems.it/user_i2c

但是无论如何,如果它是新型的总线/设备,那么用户空间库始终是一个好方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM