zoukankan      html  css  js  c++  java
  • 第七章、LED将为我闪烁:控制发光二极管

    通过对这一章的学习,我学会了对LED灯的驱动过程,inux驱动发送数据控制LED灯的亮灭。

    驱动控制LED灯我们需要创建LED驱动的设备文件:

    第一步:使用cdev-init函数初始化cdev

    第二步:指定设备号;

    第三步:使用cdev-add函数将字符设备添加到内核中的字符设备数组中;

    第四步:使用class-create;宏创建struct class

    第五步:使用device creat函数创建设备文件;

    卸载LED驱动的设备文件是需要依次调用1device-destory 2class-destory、和3unregistor-chrder-region(dev__t from,.unsigned count)

    一、LED驱动的实现原理

    软件驱动硬件:1Linux驱动与I/O内存通过ioread30iowrite32函数相交互;2I/O内存与硬件、内存管理模块负责同步I/O内存与硬件中的数据。

    二、编写LED驱动程序

    其中1表示开、0表示关,当字符串长度不足4个,后面用0补齐

    1.创建LED的设备驱动文件

    1)使用cdev_init函数初始化设备cdev

    2)指定设备号                                  

    Linux设备文件的设备号分为主设备号和次设备号,前12位主设备号,后20位表示次设备号。

    设备号指定方法:直接在代码中指定(硬编码),动态分配

    多个Linux设备文件可以拥有同一个主设备号。但两个设备的主设备号和次设备号不能都一样。

    3)使用cdev_add函数将字符设备添加到内核中德字符设备数组中

    4)使用class_create宏创建struct class

    5)使用device_create函数创建设备文件

    2.卸载Led驱动的设备文件

    依次调用三个方法:

    void device_destroy(struct class *class,dev_t devt)

    void class_destroy(struct class *cls)

    void unregister_chrdev_region(dev_t from,unsigned count)

    3.设置寄存器与初始化LED驱动

    4.控制LED

    1)通过字符串控制LED

    2)通过I/O命令控制LED

    5.LED驱动的模块参数设置

    如果Linux驱动中有多个模块参数,需要将这些参数用单引号或双引号括起来

    三、测试led驱动

    1.编写测试I/O控制命令的通用程序

    2.使用NDK测试LED驱动

    3.使用Java代码来测试led驱动的成功与否

    cat /proc/devices(获取主设备及其主设备号)

    5、指定 word_count_read word_count_write这两个回调函数

    最常用的交互方式就是读、写设备文件。

    6.实现方法

    单词数使用int类型变量存储,Mem数组的长度为10000,而最后一个字符为“”,因此带统计的字符串最大长度为999

    7.编译、安装、卸载Linux驱动程序

    三、使用多种方式测试Linux驱动

    1.使用Ubuntu Linux测试Linux驱动

    2.Android模拟器上通过原生(NativeC程序测试Linux驱动

    3.使用Android NDK测试Linux驱动

    4.使用Java代码直接操作设备文件来测试Linux驱动

    5.使用S3C6410开发板侧试Linux驱动

    6.将驱动编译经Linux内核进行测试

    四、使用eclipse开发和测试Linux驱动程序

    1.eclipse中开发Linux驱动程序

    1)建立C工程

    2)建立C源代码文件链接

    3)设置include路径

    4)编译Linux驱动

    2.eclipse中测试Linux驱动

    1)导入test-word_count.c

    2)设置include路径

    3)建立Target

    4Build工程

    5)运行测试程序

  • 相关阅读:
    嵌入式C程序基础与编程结构
    英特尔图形处理器第8代架构
    用servlet打内容到网页上
    servlet获取多个同名参数
    JAVA之复制数组
    用JAVA写一个简单的英文加密器
    Tomcat使用
    JAVA,字符串替换
    使用自己的域名解析博客园地址(CSDN也可以)
    错误笔记20181124
  • 原文地址:https://www.cnblogs.com/liang123456/p/5561250.html
Copyright © 2011-2022 走看看