zoukankan      html  css  js  c++  java
  • 第八章读书笔记

      一、Linux驱动的代码重用

        由于编译是由多个文件组成的Linux驱动,所以有时候需要对代码的重用。Linux驱动的代码重用有很多种方法,可以采用标准C程序的方式,将要重用的代码放在其他的文件中,如果要用某些功能,include相应的头文件即可。也可以使用另外一种动态重用的方式,也就是一个Linux驱动可以使用另外一个Linux驱动中的资源。

        当Linux驱动包含多个文件,Makefile文件就需要使用module-y来指定所有的目标文件。而不能只指定被引用的目标文件。

      二、强行卸载Linux驱动

        正常的驱动程序是可以正常装载和卸载的, 但是当出现异常情况时,Linux驱动可能会无法正常卸载,这时就需要强行来卸载。但是我们讨论的方法并不能强行卸载所有Linux驱动模块,只有由于异常情况而导致的Linux驱动模块无法卸载的情况。

        1、初始化函数崩溃:由于Linux驱动模块的初始化函数进行了某些操作而崩溃,从而导致初始化函数无法正常返回。这种情况的表现是当前Linux驱动模块没有被其他的Linux驱动模块使用,但却显示已经被引用了一次。

        2、卸载函数被阻塞:卸载函数被阻塞后,rmmod命令也会被阻塞,这种情况的表现是一执行rmmod命令就会停在那不动了,永远也不会返回到系统的操作提示符。

        那么该怎么卸载呢?需要解决一个问题就是获取表示要卸载的Linux驱动模块的module结构体指针。因为struct module表示了Linux驱动的相关信息。但是由于卸载的Linxu驱动无法再次安装,因此无法在该Linux驱动程序中获取module结构体指针,我们的解决方案是从/proc/kallsyms文件中查找系统分配给药卸载的Linux驱动的module结构体的首地址,然后将该首地址强行转换成module结构体指针。

       三、PWM驱动

        通过I/O命令可以打开和停止PWM。PWM驱动与LED驱动实现流程相似,蜂鸣器也称为脉冲宽度调制,也就是PW。基本原理是通过脉冲来控制蜂鸣器的打开和停止。

  • 相关阅读:
    Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
    第十三周项目2:形状类族中的纯虚函数
    js中的null和undefined
    javaScript Windows相关
    Array和ArrayList的异同点
    汉语-词语-人才:T型人才
    图书-计算机-软件编程:《程序员的自我需要》
    智力-智力测试-门萨:百科
    智力开发-早教:七田真
    经济-AMA:百科
  • 原文地址:https://www.cnblogs.com/ww3344/p/5593708.html
Copyright © 2011-2022 走看看