主要内容:
- 设备和驱动程序介绍
- 中断处理
- 设备类型
- 内存屏障
- 电源管理
1. 设备和驱动程序介绍
设备驱动程序承担了和硬件交互的工作,同时为应用程序和内核中其他的部分访问这些设备提供接口。
2. 中断处理
中断,就是由于I/O操作的不确定因素和设备之间速度不匹配,需要通过中断的方式唤起处理器的注意。
中断请求(IRQ)号,就是中断设备被分配的标识符;
中断服务例程(ISR),当处理器检测到某一IRQ对应中断,将停止现在工作,并启动该IRQ对应ISR;
中断上下文,ISR拥有立即执行的特权,ISR需要执行于受限制的环境下;
3. 设备类型
Udev,是将设备管理的任务推向用户空间,而设备管理是将动态创建的设备结点,进行设备命名;
sysfs,就是内核结构化设备模型在用户空间的称呼,位于内存的文件系统中,包含内核数据结构信息;
Kobject 封装了一些公用的对象属性,如引用计数,通常被嵌在更大的数据结构中,主要字段(定义在include/linux/kobject.h文件中),如下:
Kref对象,用于引用计数管理;
Kset 的指针,表征kobject归属的对象集;
Kobj_type,用于描述kobject的对象类型;
4. 内存屏障
为了阻止处理器重新排序指令,可以在代码中添加一个屏障,wmb()函数可以阻止写操作的移动,rmb()函数可以阻止读操作的移动,mb()函数会设置读-写的屏障。
5. 电源管理
电源管理,在使用电池的设备中,电池管理非常关键。Linux驱动程序需要意识到电源状态,并对待机、睡眠和电池电压低等事件做出反应。在切换到低功耗模式时,驱动程序能够利用硬件支持节能功能。