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

    第7章 LED将为我闪烁:控制发光二极管

    本章会完成一个真正意义上的Linux驱动。该linux驱动用来控制开发板上的4个LED灯。也就是说通过向linux驱动发送数据可以控制LED小灯的开关。

    一、LED驱动的实现与原理

    尽管Linux 驱动直接与硬件打交道, 但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的 I/O 内存(I/O Memory, 位于内核空间)进行交互。 所谓 I/O 内存是通过各种接口(PCI、USB、蓝牙、以太网等)连接到主机(PC、手机)的硬件(网卡、声卡、摄像头等)在主机内存的映射。

     二、编写LED驱动

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

              第一步:使用cdev_init函数初始化

              第二步:指定设备号

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

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

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

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

              其中使用到的函数 device_destory、class_destory和unregister_chrdev_region方法

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

         4.控制LED

              通过字符串控制LED

              通过I/O命令控制LED

         5.LED驱动的模块参数

    三、测试LED驱动本章介绍了一些更复杂的测试方法,这些方法不仅可以向LED设备文件发送字符串,还可以发送I/O控制命令。这些测试方法包括可执行程序测试、NDK测试和JAVA测试。

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

     2.可以使用NDK测试LED驱动

      3.使用Java测试LED驱动

    四、LED驱动的移植

        Linux驱动必须要在当前使用的Liunx内核编译下才可以安装在当前的linux或者android系统中。因此,LED驱动最简单的移植就是将其在不同linux内核版本下进行编译。

    LED 驱动是本书第一个真正和硬件打交道的 Linux 驱动。虽然 LED 驱动并不复杂, 只是控制了4个 LED,但 LED 驱动已经包括了 Linux 驱动所有必要的部分。 一个完整的 Linux 驱动主要由内部处理和与硬件交互降部分组成。其中内部处理主要是指 Linux 驱动的装载、卸载、与设备文件相关的动作处理(读写设备文件、向设备文件发送 I/O 命令等动作)以及业务逻辑等。与硬件交互主要是指通过 iowrite32、 .ioread32 等函数与硬件中的寄存器进行数据交互。Linux 驱动在不同平台的移植也是处理这两部分。

  • 相关阅读:
    vue项目进行时,script标签中,methods事件中函数使用的async/await
    css阴影——box-shadow
    vue报错——Module not found: Error: Can't resolve 'less-loader sass' in ...
    vue组件如何引入外部.js/.css/.scss文件
    获得汉字的拼音或者拼音简写
    model转XML
    sql server 添加表注释、字段注释
    (转)SQL Server 监控统计阻塞脚本信息
    系统首页右下角弹框
    DropDownListExtend控件
  • 原文地址:https://www.cnblogs.com/feng719/p/5644114.html
Copyright © 2011-2022 走看看