上海佳实电子科技有限公司的工程师们在嵌入式Linux的驱动开发过程中积极学习和总结。
通过查询网络可知:Linux中I/O设备可以分为两类:块设备和字符设备。这两种设备并没有硬件上的区别,主要是基于不同的功能进行了分类,而它们之间的区别也主要是在是否能够随机访问并操作硬件上的数据。
字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。比如,调制解调器是典型的字符设备。
块设备:应用程序可以随机访问设备数据,可自行确定读取数据的位置。硬盘是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512Byte)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
两种设备本身并没用严格的区分,主要是由于字符设备和块设备驱动程序提供的访问接口不一样。