1. 字符设备—c
应用程序和驱动程序之间进行数据读写的时候,数据是以“字节”为单位。数据交互的时候,是按照固定的顺序传输的;数据是实时传输的,是没有缓存的。字符设备是没有文件系统的。
绝大部分设备驱动是字符设备:LED、BEEP、按键、键盘、触摸屏、摄像头、液晶屏、声卡、IIC、SPI、…
应用程序:系统IO函数
open(“/dev/led_drv”, O_RDWR)
read() write() ioctl() mmap() close()
2. 块设备—b
应用程序和驱动程序之间进行数据读写的时候,数据是以“块”为单位,1block=1024KB。块设备是有缓存的,块设备是有文件系统的。
大容量的存储设备一般都是块设备:nand flash、eMMC、SD、U盘、硬盘、…
#cat /proc/partitions
major minor #blocks name
179 0 7634944 mmcblk0
179 1 65536 mmcblk0p1
179 2 772096 mmcblk0p2
179 3 438272 mmcblk0p3
179 4 1 mmcblk0p4
179 5 8192 mmcblk0p5
179 6 22528 mmcblk0p6
179 7 6324224 mmcblk0p7
179 16 4096 mmcblk0boot1
179 8 4096 mmcblk0boot0
8 0 1956864 sda
8 1 1802240 sda1
应用程序访问块设备
#ls /dev/sda* -l
brw-rw-rw- 1 root root 8, 0 Jan 1 00:11 /dev/sda --->U盘
brw-rw-rw- 1 root root 8, 1 Jan 1 00:11 /dev/sda1 ---U盘的一个放数据的分区
1)挂载—块设备是有文件系统的。
#mount -t vfat /dev/sda1 /data
vfat ---->fat32
2)像访问普通文件一样访问块设备的内容。
标准IO函数:fopen()/fread()/fwrite()/fclose()
3. 网络设备
网卡类的设备:有线网卡、无线网卡、…,网络设备是没有设备文件的。
应用程序:
socket套接字: IP + 端口号

被折叠的 条评论
为什么被折叠?



