《精通linux设备驱动程序开发》 第4章基本概念 学习笔记

主要内容:

  • 设备和驱动程序介绍
  • 中断处理
  • 设备类型
  • 内存屏障
  • 电源管理

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驱动程序需要意识到电源状态,并对待机、睡眠和电池电压低等事件做出反应。在切换到低功耗模式时,驱动程序能够利用硬件支持节能功能。

 

posted @ 2020-08-22 10:37  铅灰色天空  阅读(131)  评论(0编辑  收藏  举报