• 第八章蜂鸣器驱动


    一、PWM原理:PWM连接到了TOUT1端口。

    PWM使用端口FGPFCON寄存器进行控制。该寄存器在Linux内核中对应的宏是S3C64XX_GPFCON,该宏表示GPFCON寄存器的虚拟地址。GPFCON只用了最高两位(3031位)来控制PWM。当最高两位为10时,打开PWM。为00时停止PWM。所以只需通过iowrite32函数为GPFCON寄存器设置不同的值即可。

    PWM驱动的三个文件:

    Pwm.c 驱动主程序

    Pwm_fun.h 引用了相应的头文件,以及定义了一些宏

    Pwm_fun.c 文件包含了打开和停止PWM的两个函数(pwm_startpwm_stop

    Makefile编译器看出,首先将pwm.cpwm_fun.c文件编译成pwm.opwm_fun.o,然后将这两个*.o文件链接成pwm_driver.o,最后生成pwm_driver.ko

    二、Linux驱动代码的重用

    静态重用:

    例如:main.c  fun.c  product.c  product.h四个文件。其中,main.cLinux驱动的主程序。在fun.cproduct.cproduct.h中定义和实现了在main.c中使用的函数。在main.c中通过extern关键字使用fun.c中的函数,通过包含(includeproduct.h文件使用product.c中的函数。

    需要注意的是,在Main.c文件中多了两个宏(_init_xit),这两个宏分别用来标识Linux驱动初始化函数(main_init)和(main_exit)。并不是必须使用,但使用它们会提高Linux驱动的运行效率。因为这两个宏是编译指令,如果用他们来标识main_initmain_exit函数,Linux就会认为main_initmain_exit函数是专门用来初始化和卸载Linux驱动的,会使这两个函数单独放在某个内存区域,从而提高效率。

  • 相关阅读:
    java的replace和replaceAll
    hibernate必须的包下载以及各个包的作用
    Jquery退出循环
    JQuery解析XML数据的几个例子
    使用ajax获取servelt数据乱码
    jquery绝对路径
    LeetCode 368. Largest Divisible Subset
    LeetCode 413. Arithmetic Slices
    LeetCode 474. Ones and Zeroes
    LeetCode 486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/BJBLOG/p/5651397.html
Copyright © 2020-2023  润新知