zoukankan      html  css  js  c++  java
  • 第八章

    蜂鸣器是开发板上的一个硬件设备,可通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声。蜂鸣器驱动的原理:蜂鸣器也称为PWM-脉冲宽度调制,基本原理是通过脉冲来控制蜂鸣器的打开和停止。PWM使用端口F的GPFCON寄存器进行控制。该寄存器在Linux内核中对应的宏是S3C64XX_GPFCON,表示GPFCON寄存器的虚拟地址,只用了高两位来控制PWM。当高两位为10时,打开PWM,为00时停止PWM,只需通过iowrite32()为GPFCON寄存器设置不同的值即可。

    强行卸载 Linux 驱动:

    情况1:初始化函数崩溃

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

      这种情况关键是引用计数器的值和引用者不一致。只需要将当前的Linux驱动模块的引用计数器清零即可,修改计数器可以使用下面两个函数

        //是module指向的Linux驱动模块的引用计数器加1,成功返回1,失败返回0

        static inline int try_module_get(struct module *module);

        //是module指向的Linux驱动模块的引用计数器减1

        extern void module_put(struct module *module);

    情况2:卸载函数被阻塞

      在使用rmmod命令卸载Linux驱动时,系统会调用卸载函数,只有卸载函数成功返回时,Linux驱动才会被卸载,如果卸载函数被阻塞,rmmod命令也会被阻塞,也就是说永远不会执行到卸载Linux驱动模块的代码,这种情况的表现是一执行rmmod命令就会停在那不动了,永远也不会返回到系统的操作提示符,这种情况的问题根源就是卸载函数,只要将原来的卸载函数替换成一个空的卸载函数即可。

  • 相关阅读:
    JBPM 入门阅读
    Jquery ligerui下拉框复选,使下拉框中相应值对勾选中
    spring quartz 1.6配置方法
    断点续传的原理
    转:DWR详细应用介绍
    转:第一个DWR示例
    解决(CXF):SOAPFaultException: Fault occurred while processing
    s2sh保存错误: a different object with the same identifier value was already associated
    解决 java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lan
    转载:struts2重要标签学习
  • 原文地址:https://www.cnblogs.com/xianrenzhilu/p/5652392.html
Copyright © 2011-2022 走看看