• 第八章 让开发板发出声音:蜂鸣器驱动


    通过学习第八章,我总结出了一些自己认为重要,需要熟练掌握的知识点。

    1、通过向寄存器写入特定的值来控制蜂鸣器发出声音。

    2、在遇到无法卸载Linux驱动时通过直接修改Linux驱动相应的内存地址删除Linux驱动避免重启机器的麻烦。

    3、通过不同的源代码文件存放不同的的功能代码有利于代码的分类和管理。

    4、Main.c是Linux驱动的主程序。

    5、初始化Linux驱动

    Static int _init main _init(void)

    6、卸载Linux驱动

    Static void _exit main _exit(void)

    7、注册初始化Linux驱动的函数

    Module_init(main_init);

    8、注册卸载Linux驱动的函数

    Module_exit(main_exit);

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

    10、强行卸载Linux驱动发生的情况:

    初始化函数崩溃、卸载函数被阻塞、

    11、通过相应的寄存器来控制蜂鸣器的打开和关闭。

    12、蜂鸣器驱动原理:蜂鸣器也称为PWM(脉冲宽度调制),基本原理是通过脉冲来控制蜂鸣器的打开和关闭。

    13、通过I/O命令打开和关闭PWM。

    14、PWM设备文件的close函数

    Static int s3c64xx_pwm_close(struct inode *inode,struct file *file)

    15、释放信号量

    Up(&lock);

    16、打开PWM

    Pwm_start();

    17、停止PWM

    Pwm_stop();

    18、初始化信号量

    Init_MOTEX(&lock);

    19、注册设备文件

    /dev/pwm_den

    20、移除设备文件

    Misc_deregister(&misc);

    21、I/O命令;打开PWM

    #define PWM_IOCTL_START 1

    22、I/O命令;停止PWM

    #define PWM_IOCTL_STOP 0

    23、打开PWM的函数

    Extern void pwm_start(void);

    24、停止PWM的函数

    Extern void pwm_stop(void);

    25、将GPFCON寄存器的高两位清零,其他位保留

    Tmp &=~(0x3U << 30);

    26、将GPFCON寄存器的高两位设为10

    Tmp |= (0x2U << 30);

    27、将新的值写会GPFCON寄存器,PWM开始尖叫

    Iowrite32(tmp, s3c64XX_GPFCON);

    28、将新的值写会GPFCON寄存器,PWM停止发出尖叫

    Iowrite32(tmp, s3c64XX_GPFCON);

    29、打开PWM

    # ./ioctl /dev/pwm_dev 1 0

    30、停止PWM

    # ./ioctl /dev/pwm_dev 0 0

  • 相关阅读:
    华为手机wifi调试adb,断开数据线offlin
    appium 识别抖音视频已经播放完成
    对于学习新知识的一点自我反思
    部分软件激活
    AndroidStudio 创建简单的app
    App 逆向思路
    链家
    pyqt5 截屏
    3.无重复字符的最长子串
    1.两数之和
  • 原文地址:https://www.cnblogs.com/daiyan666/p/5638679.html
Copyright © 2020-2023  润新知