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

    stay hungry, stay foolish
  • 相关阅读:
    Java的快速失败和安全失败
    Java RMI与RPC的区别
    Java动态代理之JDK实现和CGlib实现(简单易懂)
    JVM——字节码增强技术简介
    Linux内存分配机制之伙伴系统和SLAB
    操作系统动态内存管理——malloc和free的工作机制
    Java中的Map
    Java的PriorityQueue
    Java中的List
    Java中的Set
  • 原文地址:https://www.cnblogs.com/zygote/p/13544673.html
Copyright © 2011-2022 走看看