gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:03 25 4
gpt4 key购买 nike

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

我想到的是:

  • 编写一个用户空间库,它通过经典的打开、读取、写入简单地与提供的设备文件(在/dev/.. 中)进行交互
  • 引用上图,开发一个字符设备驱动程序并将这个模块包含在内核中,这样用户空间库就可以通过IOCTL(或类似的)与它交互,然后这个新模块将直接与(pre-存在) 设备驱动程序
    (然而,这个解决方案对我来说听起来不太好:我读到在内核模块中使用用户空间的东西,比如打开、读取、写入不是一个好主意——尽管这是可能的——)

我的问题是:我应该走哪条路,为什么?
此外,任何有关该主题的文章/书籍/链接都将受到高度赞赏。
提前致谢!

最佳答案

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

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

关于c - Linux 上的用户空间串行通信库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com