2. Linux驱动简述 — [野火]嵌入式Linux驱动开发实战指南——基于LubanCat

2. Linux驱动简述 — [野火]嵌入式Linux驱动开发实战指南——基于LubanCat

2.1. Linux三大驱动¶

在讲Linux三大驱动前,先讲一下Linux设备分类。

linux是文件型系统,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。在文件系统的linux下面,都有对应文件与键盘、鼠标、硬盘等实实在在硬件硬件设备关联,访问这些文件就可以访问实际硬件。

按照读写存储数据方式,我们可以把设备分为以下几种:字符设备、块设备和网络设备。

而Linux三大驱动就是指对这些设备的驱动,即字符设备、块设备驱动和网络设备驱动。

2.1.1. 字符设备¶

字符设备指能够像字节流串行顺序依次进行访问的设备,对它的读写是以字节为单位。

字符设备的特点:

一个字节一个字节读写的设备

读取数据需要按照先后数据(顺序读取)

每个字符设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称 设备节点)来使用驱动程序操作字符设备。

常见的字符设备有鼠标、键盘、串口、SPI、I2C等

2.1.2. 块设备¶

块设备是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。

块设备的特点:

数据以固定长度进行传输,比如512K

块设备能够随机访问,而字符设备则只能顺序访问。

块设备包括硬盘、磁盘、U盘和SD卡等

每个块设备在/dev目录下对应一个设备文件,linux用户程序可以通过设备文件(或称设备节点)来使用驱动程序操作块设备。

块设备可以容纳文件系统,所以一般都通过文件系统来访问,而不是/dev设备节点。

2.1.3. 网络设备¶

网络设备驱动不同于字符设备和块设备,不在/dev下以文件节点代表,而是通过单独的网络接口来代表。

网络设备的特点:

网络接口没有像字符设备和块设备一样的设备号和/dev设备节点,只有接口名,如eth0,eth1

对网络设备的访问只能通过socket操作,而不是open、closc、read、write

相关推荐

李白光速解锁大招技巧:真的能缩短30%冷却时间吗?
在哪个应用商店能下载365

李白光速解锁大招技巧:真的能缩短30%冷却时间吗?

📅 07-09 👁️ 3795
身高1米5体重多少标准
在哪个应用商店能下载365

身高1米5体重多少标准

📅 09-06 👁️ 432