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

    一、Linux驱动的代码重用

    1、编译是由多个文件组成的Linux驱动

    如果Linux驱动只有1个源代码文件,0bj-m变量可以和源代码文件同名。如果Linux驱动包含多个文件,就需要使用module-y来指定所以的目标文件。

    2、Linux驱动模块的依赖

    代码重用分为静态和动态两种。

    二、强行卸载Linux驱动

    情况1:初始化函数崩溃

    情况2:卸载函数被阻塞

    三、蜂鸣器(PWM)驱动

    1、蜂鸣器驱动的原理

    蜂鸣器也称PWM,基本原理是通过脉冲来控制蜂鸣器的打开和停止。

    PWM使用端口F的CPFCON寄存器进行控制。改寄存器在linux内核中对应的宏是S3C64XX_GPFCON寄存器寄存器的虚拟地址。GPFCON只用了最高两位来控制PWM。当最高位为10时,打开PWM。当00时,停止PWM。

    蜂鸣器与led类似,也是s3c6410开发板上自带的一个简单的硬件。如果打开蜂鸣器,开发板会发出类似蜂鸣的尖叫声,关闭蜂鸣器则会停止尖叫声。

    如果编写的linux驱动程序在逻辑上是正确的,那么可以正常装载和卸载,但在某种情况下,可能某些程序会出现异常情况。这时linux驱动可能会无法正常卸载。

    蜂鸣器也称pwm,基本原理是通过脉冲来控制蜂鸣器的打开和停止。

    2、实现蜂鸣器驱动

    编译PWM驱动的Makefile文件

    obj-m :=pwm_driver.c

    pwm_driver-objs :=pwm,o pwm_fun.o

    3、测试蜂鸣器驱动

    打开PWM

    # ./ioctl /dev/pwm_dev 1 0

    停止PWM

    # ./ioctl /dev/pwm_dev 0 0

  • 相关阅读:
    Uboot启动流程分析(四)
    git更新提交到仓库
    MSM8953通过ADB进行AT指令操作
    Uboot启动流程分析(五)
    去除字符串中多个空格,保留一个空格
    socket握手SYN和ACK理解
    Redhat6更改yum源 (转)
    form提供的两种数据传输方式 get和post method=”post“和method=”get”
    linux误删除恢复(未验证)
    web前端学习路线
  • 原文地址:https://www.cnblogs.com/jinzekun/p/5638467.html
Copyright © 2011-2022 走看看