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。基本原理是通过脉冲来控制蜂鸣器的打开和停止。

  • 相关阅读:
    图书管理系统---基于form组件和modelform改造添加和编辑
    Keepalived和Heartbeat
    SCAN IP 解释
    Configure Active DataGuard and DG BROKER
    Oracle 11gR2
    我在管理工作中積累的九種最重要的領導力 (李開復)
    公募基金公司超融合基础架构与同城灾备建设实践
    Oracle 11g RAC for LINUX rhel 6.X silent install(静默安装)
    11gR2 静默安装RAC 集群和数据库软件
    Setting Up Oracle GoldenGate 12
  • 原文地址:https://www.cnblogs.com/ww3344/p/5593708.html
Copyright © 2011-2022 走看看