总线设备
内核将总线控制器与总线协议的实现分离,驱动开发人员只需要实现硬件控制的部分,总线协议由总线的核心驱动实现
主控制器硬件驱动实现消息的收发,消息格式由上层的核心驱动实现
BIO(struct bio)由多个BVEC组成,每个BVEC(struct bio_vec)描述数据所在内存页面,在页面中的偏移,数据的长度,数据所在的扇区
引脚功能可以使用pinctrl节点定义,pinctrl节点一般由内核事先定义好,只需要修改设备树节点,增加对应的引脚
驱动I2C从设备方法:
1. 通过I2C从设备内核态驱动
优点:实时性好
2. 通过I2C主设备提供的字符设备接口实现用户态驱动(应用程序)
优点:不会调用内核的GPL接口,不存在开源风险,应用程序出现问题不会导致系统重启
块设备驱动
使用CHS表示磁盘大小
C柱面数(磁道数)0-255
H磁头数 0-255
S每磁道扇区数 0-255
每个扇区512字节
DOS分区
1. 主分区表:磁盘的首扇区,只有4个表项,第一个分区是C盘
2. 扩展分区:指向下一个分区表的指针,每个扩展分区表有4个表项
3. 逻辑分区:放在扩展分区表中的分区,第一个逻辑分区D盘
GPT分区
格式化mkfs(磁盘分区)+文件系统类型
网络设备驱动
网卡驱动和协议栈之间的接口:
0. sk_buff结构体
1. 上行:netif_rx(网卡驱动调用)
2. 下行:ndo_start_xmit(协议栈调用)
百兆网卡发送数据包格式: