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

        第八章中介绍了代码编译,编译是由多个文件组成的Linux驱动。对于复杂的Linux 驱动,就需要使用多个源代码文件存放不同的功能代码,这样有利于代码的分类和管理。

        实验:将 .c 文件分别编译成 .0 文件,并将这.0 文件链接生成.ko 文件。

    1.编写main.c文件,以及fun.cproduct.cproduct.h文件。

    2.编写makefile文件

    obj-m := main.o

    multi_file_driver-y := fun.o  product.o

    3.执行#sh build.sh

    4.执行dmesg命令查看日志信息。

         代码共享的方式:模块依赖,也称为导出符号。利用导出符号实现代码共享就是:在一个驱动模块里使用另一个驱动模块里的被导出的符号(常量、变量、函数等)。

    卸载由于异常情况而导致的Linux驱动模块无法卸载的情况:1.初始化函数崩溃2.卸载函数被阻塞

    本章还介绍了蜂鸣器的驱动程序,蜂鸣器是开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出尖叫声。了解了蜂鸣器的实现原理,并实现了一个完整的蜂鸣器驱动。PWM驱动的实现方式不同于LED驱动,由多个文件组成。Linux驱动的代码重用有很多方式。对于复杂的linux驱动,需要使用多个源代码文件存放不同的功能代码,有利于代码分类和管理,也需要编译多个源代码文件。代码重用分为静态和动态两种。

    本节中介绍了一种代码共享的方式,模块依赖。对于一些无法正常卸载的linux驱动,比如:初始化函数崩溃,卸载函数被阻塞。这是需要获取表示要卸载的linux驱动模块的module结构体指针。接下来介绍了如何通过相应的寄存器来控制蜂鸣器的打开和关闭,并且在实现蜂鸣器驱动时,将打来和关闭蜂鸣器的函数放到了另外的C源代码文件中。

  • 相关阅读:
    2017-2018-2 20165207 实验四《Android开发基础》实验报告
    2017-2018-2 20165207 实验三《敏捷开发与XP实践》实验报告
    20165207 第九周学习总结
    20165328 实验四《Andriid应用开发》实验报告
    20165328 第十二周课上补做
    20165328 课下作业补做
    20165328 第九周学习总结
    2017-2018-2 20165328 实验三《敏捷开发与XP实践》实验报告
    20165328 结对编程第二周整体总结
    20165328课上补做
  • 原文地址:https://www.cnblogs.com/cwbblogs/p/5653053.html
Copyright © 2011-2022 走看看