• Android深度探索HAL与驱动开发-——第8章


    第8章:

      本章主要讲了蜂鸣器的实现原理,实现完整的蜂鸣器驱动。主要用到的是pwm驱动,pwm由多个文件组成。          
      首要介绍的是Linux驱动代码的重用。编译是由多个文件组成的Linux驱动。两个完整的linux驱动是word_count和led驱动,都是由一个源代码文件组成(.c)。但对于复杂的linux驱动需要使用多个源代码文件存放不同功能代码,最终生成ko文件或linux内核。
       接着是Linux驱动模块依赖。代码重用分为静态和动态,在该节中介绍了模块依赖即为导出符号:在一个驱动模块里使用另一个驱动模块里的被导出的符号。在Linux驱动中使用到两个宏导出函数,分别为export_symbol和export_symbol_gpl。由于存在两个Linux驱动所以需要在makefile文件中指定两个linux模块,在卸载两个linux驱动顺序时要先卸载symbol_consumer再卸载symbol_producer。
      再者是在出现异常情况下卸载Linux驱动。初始化函数崩溃、卸载函数被阻塞。蜂鸣器驱动原理是通过脉冲来控制蜂鸣器打开和停止。(pwm)pwm使用端口F的GPFCON寄存器进行控制。该寄存器在linux内核中对应的宏是S3C64XX_GPFCON。该宏表示GPFCON寄存器的虚拟地址。测试蜂鸣器:使用到ioctl,先进入/root/drivers/ioctl目录,执行build.sh脚本文件编译和上传ioctl文件。在测试pwm驱动之前先要编译和安装pwm驱动,然后进入开发板终端的/data/local目录,打开pwm。

  • 相关阅读:
    清理iOS工程里无用的图片,可瘦身ipa
    NSTimer内存泄漏导致控制器不调用dealloc
    iOS面试题 -总结 ,你的基础扎实吗?
    Xcode找不到模拟器出现"My Mac"
    前端开发
    并发编程&数据库
    数据库
    4.2
    4.5
    4.4
  • 原文地址:https://www.cnblogs.com/chengqian95/p/5648242.html
Copyright © 2020-2023  润新知