如何 在linux下编程 控制外设?

如何 在linux下编程 控制外设?,第1张

假如你的 Linux 已经移植好, 相应外设的驱动都有了,那就直接用Linux 标准的API *** 作(如 read, write, ioctl)

既然你这样问, 估计你都没驱动的了, 先写驱动吧. 用别人的也行,不过你的外设要与别人的一模一样, 外设与ARM的接口完全一致.( 这个基本上不可能.)

Linux中的SPI、IPC、USB等子系统都利用了典型的把主机驱动和外设驱动分离的想法,让主机端只负责产生总线上的传输波形,而外设端只是通过标准的API来让主机端以适当的波形访问自身。因此这里面就涉及了4个软件模块:1)主机端的驱动。根据具体的IC、SPI、USB等控制器的硬件手册, *** 作具体的IPC、SPI、USB等控制器,产生总线的各种波形。2)连接主机和外设的纽带。外设不直接调用主机端的驱动来产生波形,而是调一个标准的API。由这个标准的API把这个波形的传输请求间接“转发”给了具体的主机端驱动。当然,在这里,最好把关于波形的描述也以某种数据结构标准化。3)外设端的驱动。外设接在I-C、SPI、USB这样的总线上,但是它们本身可以是触摸屏、网卡、声卡或者任意一种类型的设备。我们在相关的i2c_driver、spi_driver、usb_driver这种xxx_driver的probe () 函数中去注册它具体的类型。当这些外设要求IP℃、SPI、USB等去访问它的时候,它调用“连接主机和外设的纽带”模块的标准API。4)板级逻辑。板级逻辑用来描述主机和外设是如何互联的,它相当于一个“路由表”。假设板子上有多个SPI控制器和多个SPI外设,那究竟谁接在谁上面管理互联关系,既不是主机端的责任,也不是外设端的责任,这属于板级逻辑的责任。这部分通常出现在arch/arm/mach-xxx下面或者arch/arm/bootldts下面。什么叫良好的软件设计一言以蔽之,让正确的代码出现在正确的位置。不要在错误的时间、错误的地点,编写一段错误的代码。在LKML中,关于代码出现在错误的位置,常见的台词是代码“out of place"。Linux通过上述的设计方法,把一堆杂乱不友好的代码变成了4个轻量级的小模块,每个模块都各得其所。每个模块都觉得很“爽”,站在主机端想一想,它其实也是很“爽”的,因为它的职责本来就是产生波形,而现在我们就让它只产生波形不干别的站在外设端想一想,它也变得一身轻松。

Linux系统的设备管理器通常位于/dev目录下。/dev目录包含了系统中所有的设备文件,这些文件用于管理系统中的硬件设备,包括磁盘驱动器、网络接口、打印机和其他设备。

您可以使用ls命令查看/dev目录下的内容,例如:

ls /dev

这将显示/dev目录下的所有文件和文件夹。您也可以使用grep命令来搜索/dev目录下的特定设备文件,例如:

ls /dev | grep sda

这将显示/dev目录下名称中包含“sda”的文件,这可能是系统中的硬盘驱动器。

注意,/dev目录中的设备文件是虚拟文件,不是真实的文件。它们是系统内核用于管理设备的接口,可以通过程序访问和 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/5905222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存