• 第7章实验心得


     

    第7章主要写了控制发光二级管

    7.1 主要介绍了LED驱动的实现原理

    Linux 内核提供了多个与1/0 内存交互的函数,如ioread16 、ioread32 、iowrite16 、iowrite32 等。Linux 内核的内存管理模块负责同步I/0 内存与硬件中的数据。

    每一个连接Linux 的硬件在ν0 内存中都会有映射首地址。在使用ioread32 、ioread32 等函数读写I/0内存时需要指定这些首地址。开发板上的LED 也有其映射首地址。

    7.2  主要介绍了编写LED驱动

      1.创建LED驱动的设备文件步骤如下:

    第1 步:使用cdev_init 函数初始化cdev

    第2 步:指定设备号

    第3 步:使用cdev_add 函数将字符设备添加到内核中的字符设备数组中

    第4 步:使用class_create 宏创建struct class

    第5 步:使用device_create 函数创建设备文件

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

    卸载 Linux 驱动的设备文件稍微简单-些,需要依次调用 device_destroy 、 class_destroy 和unreg ister_chrdev_region 方法

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

    在控制LED 亮、灭之前必须要了解如何设置寄存器。 ARM 处理器有多个寄存器,通过设置不同寄存器的值。可以设置LED 引脚的状态、打开或禁止上拉(pull-up)电路以及控制LED 的亮和灭。

    4 控制LED

    LED 驱动可以使用如下两种方式控制LED

     1.通过字符串控制LED

     2.通过l/0 命令控制LED

    5 LED驱动的模块参数

      为Linux 驱动指定一个模块参数需要使用module_param Cname, type, perm)宏。其中name 表示参数名, type 表示参数类型, perm 表示读/写权限。module_param 支持的参数类型包括byte 、short、ushort C无符号short〕、int、uint (无符号int〕、long 、ulong C 无符号long )、charp (字符指针〉、boo) 和invbool (布尔的反)。

    6 LED驱动的完整代码(这就不往出写了)

    7.3 主要介绍了测试LED驱动

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

       LED 驱动有两种与设备文件交互的方式: 直接写入字符串数据和νo 控制命令.直接向设备文件写入数据可以使用命令行方式来完成,也吁以通过write 函数来完成。但I/O控制命令只能通过iocll 函数发出。为了以后测试方便,本节编写了一个通用的发送I/O 命令的程序。

    2  使用NDK测试LED驱动

    3  使用Java测试LED驱动

    7.4  LED驱动的移植

       以LED驱动为例   

       LED 驱动是通过设置GPMDAT 寄存器来控制LED 的亮灭的。GPMDAT寄存器的低4 位分别控制4 个LED . 0 表示打开LED, 1 表示关闭LED. 这是在OK64 1 0 开发板上的设置。如果要将LED 驱动移植到另外基于S3C6410 的开发版上,而这个目标开发板上恰好与OK6410开发板的GPMDA1、寄存器的低4 位表示的含义相反,也就是说, 1 表示打开LED ,。表示关闭LED,那么LED 驱动的代码就要做相应的改变。首先要改变的就是leds_init 函数。在LED 驱动装载后,会用OxE 设置4 个LED 的默认状态. 而在新的开发板上,就要将OxE 变成Oxl。

  • 相关阅读:
    Linux workqueue疑问【转】
    Java中基础类库使用
    Sdut 2164 Binomial Coeffcients (组合数学) (山东省ACM第二届省赛 D 题)
    python中使用mahotas包实现高斯模糊
    ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法
    Android 属性动画(Property Animation) 全然解析 (下)
    MySQL搜索: WHERE 多条件
    点滴记录——Centos 6.5 yum安装Ganglia
    标准linuxserver搭建
    检查ORACLE的警告文件的脚本
  • 原文地址:https://www.cnblogs.com/yue-er/p/5561057.html
Copyright © 2020-2023  润新知