计算机系统的硬件主要由 CPU、 存储器和外设组成。 随着 IC 制作工艺的发展, 目前, 芯片的集成度越来越高, 往往在 CPU 内部就集成了存储器和外设适配器。 譬如, 相当多的 ARM、 PowerPC、 MIPS 等处理器都集成了 UART、 I2C 控制器、 SPI 控制器、 USB 控制器、 SDRAM 控制器等, 有的处理器还集成了 GPU(图形处理器) 、 视频编解码器等。 驱动针对的对象是存储器和外设(包括 CPU 内部集成的存储器和外设, 而不是针对 CPU 内核。 Linux 将存储器和外设分为 3 个基础大类: 字符设备驱动, 块设备驱动, 网络设备驱动。
其中, 理解和掌握字符设备驱动的概念最重要, 因为在后续工作中我们遇到的大部分是字符设备。 为什么会这么说呢? 比如说我们选了一个 cpu,不管它是哪个厂家的, 比如它是三星的或者恩智浦的或者 T(I 德州仪器) , 那么他们都会给你提供一个 bsp 包, 在这个开发包里面, 像块设备驱动和网络设备驱动已经做好了, 我们要做的事情是配置一下就可以用了。 平常开发的时候用的最多的就是字符设备驱动, 我们掌握了字符设备的开发, 那么我们开发产品基本上就没有什么问题了。
字符设备指那些必须以串行顺序依次进行访问的设备, 如触摸屏、 磁带驱动器、 鼠标等。 块设备可以按任意顺序进行访问, 以块为单位进行操作, 如硬盘、 eMMC 等。 字符设备和块设备的驱动设计有出很大的差异, 但是对于用户而言, 它们都要使用文件系统的操作接口 open() 、 close() 、 read() 、 write()等进行访问。 网络设备主要有哪些呢? 从字面意思可以看出, 和网络相关的都是网络设备, 比如 WiFi, 以太网。 在 Linux 系统中, 网络设备面向数据包的接收和发送而设计, 它并不倾向于对应于文件系统的节点。内核与网络设备的通信与内核和字符设备、 网络设备的通信方式完全不同, 网络设备主要还是使用套接字接口。
linux 设备驱动分类及特点
最新推荐文章于 2025-03-07 15:33:33 发布