zoukankan      html  css  js  c++  java
  • Andriod深度探索—HAL与驱动开发 第八 章 读书笔记and一点心得

    Linux驱动的代码重用

         Linux 驱动的代码重用有很多种方法。可以采用标准C 程序的方式。将要重用的代码放在其他的文件(在头文件中声明〉中。如果要使用某些功能, include 相应的头文件即可(这种方式称为静态重用)。也可以使用另外一种动态重用的方式,也就是一个Linux 驱动可以使用另外←个Linux驱动中的资源(函数、变量、宏等〉。

    强行卸载Linux驱动

         如果编写的Ljnux 驱动程序在逻辑上是正确的,那么可以正常装载和卸载,但在某些情况下,可能某些程序会出现异常情况。这时Linux 驱动可能会无法正常卸载。

    情况一:初始化函数崩溃

         由于Linux 驱动模块的初始化函数(通过module_init 宏指定的函数〉进行了某些操作而崩溃,从而导致初始化函数无法正常返田二这种情况的表现是当前Linux 驱动模块没用被任何其他的Linux 驱动模块使用,但却显示已经被引用了一次。

    情况二:卸载函数被阻塞  

       在使用rmmod 命令卸载Linux 驱动时,系统会调用卸载函数(跑过module_exit 宏指定的函数),只有卸载函数成功返回肘, Linux 驱动才会被翻载。如果卸载函数被阻塞(可能是死循环、并发等情况引起的阻塞), rmmod 命令也会被阻塞. 也就是说永远不会执行到卸载Linux 驱动模块的代码。这种情况的表现是一执行rmmod 命令就会停在那不动了,永远也不会返回到系统的操作提示符。

         不管是哪种情况,都需要解决一个不可回避的问题,就是要获取表示要卸载的Linux 驱动模块的module 结构体指针。因为struct module 表示了Linux 驱动的相关信息.  

    蜂鸣器(PWM)驱动

    蜂鸣器也称PWM,基本原理是通过脉冲来控制蜂鸣器的打开和停止。本节通过I/O命令来打开和停止PWM的。

    心得:PWM驱动与LED驱动的实现流程类似,可能还要简单一些。本章演示了如何将一个Linux驱动分成多个实现文件,使用了比较简单的PWM驱动。这章主要讲解了Linux驱动常用的代码重用方式。此外还介绍了一种强行卸载Linux驱动的方法。通过这种方法,就可以免去不断重启机器的痛苦了。

    本人博客地址:http://home.cnblogs.com/u/jie617530/

  • 相关阅读:
    中南财经政法大学深圳校友会政法分会上线
    我们为什么需要校友录 人脈存摺
    北京印刷学院校友录试运行
    南京理工大学校友会正式上线
    我们为什么需要校友录 校友录的传播学解读
    CC校友录贴吧 CCBarV0908 正式发布
    我们为什么需要校友录 快捷的校友信息云图
    我们为什么需要校友录 精英圈子准入证 一辈子的学分
    我们为什么需要校友录 某某大学深圳校友录年底盘点
    我们为什么需要校友录 又到一年毕业时毕业感怀文集
  • 原文地址:https://www.cnblogs.com/jie617530/p/5656504.html
Copyright © 2011-2022 走看看