zoukankan      html  css  js  c++  java
  • 8

    第八章

        讲述了通过寄存器写入特定的值控制蜂鸣器发出尖叫声的实现原理,并实现一个完整的蜂鸣器驱动。

        在完成过程中,首先完成的是linux驱动的代码重用,首先是编译由多个文件组成的linux驱动,并生成ko文件,最后makefile文件。然后进行驱动模块的依赖,即在一个驱动模块里使用另一个驱动模块里的背到处的符号。

        如果编写的驱动程序逻辑上是正确的,那么可以正常安装和卸载,但在某些情况下,可能出现异常情况,这时linux驱动可能无法正常卸载,本书同时也介绍了如何卸载:

    1初始化函数崩溃,使用rmmod bad_driverl卸载。

    2卸载函数被阻塞,使用修改引用计数器或者将原来的卸载函数替换成新的空的函数。

    这两种情况都要获取表示要卸载的linux驱动模块的module结构体指针,当无法获取该指针时,我们的额解决方案是从/proc/kallsyms文件中查找系统分配要给卸载的linux驱动的module结构体首地址,然后将该首地址强行转换成module结构体指针。由于该结构体的地址在内核空间,为了通用用来卸载其他linux驱动的linux驱动需要接受一个模块参数。

    然后进行驱动的正式编写,学会如何通过相应的寄存器来控制蜂鸣器。蜂鸣器的原理是通过脉冲来控制蜂鸣器的打开和停止。pwm驱动由三个文件组成,pwm.c驱动主程序,pwm_fun.h相应头文件,pwm_fun.c包含了打开和停止pwm的两个函数。首先进入/root/drivers/ioctl执行build.h脚本文件编译和上传ioctl,在测试前先要编译和安装pwm驱动,然后进入开发板终端的/data/local打开和停止pwm

    总之,pwmled驱动类似,第八章只是简单演示了如何将一个linux驱动分成多个实现文件,使用了见到那的pwm驱动,掌握pwm常用的代码重用,并介绍了一个强行卸载linux驱动的方法。

  • 相关阅读:
    Web Client Software Factory 开发路线图
    Castle ActiveRecord Hands On Lab(1):基本数据访问
    古代武侠武功与现代软件开发
    微软Code Snippet Designer Alpha版发布了
    MSDN WebCast网站全新改版
    AJAX,只是一种过渡技术吗?
    中文网站排行榜:博客园位居博客类16名
    ASP.NET AJAX JavaScript 类浏览器
    .NET开源项目介绍及资源推荐:序
    微软发布WF教程及大量示例
  • 原文地址:https://www.cnblogs.com/liang0202/p/5640110.html
Copyright © 2011-2022 走看看