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

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

    实现原理:linux驱动与本机的I/O内存进行交互,连接到主机的硬件在主机内存的映射

    1编写LED驱动

    1.1创建LED驱动的设备文件

    使用cdev_init函数初始化cdev

    Cdev 结构体

    struct cdev {

         Struct konject kobj;

         Struct module *owner;

         Const struct file_operation *ops;

         Strust list_head list;

         Dev_t dev;

         Unsigned int count;

    }

    指定设备号

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

    使用class_create宏创建struct class

    使用device_create函数创建设备文件

    卸载LED驱动

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

    设置不同寄存器的值,可以设置LED引脚的状态

    LED有两个引脚GPB1GPB0

    控制LED需要通过3个寄存器来完成GPMCONGPMDATGPMCON

    每个寄存器可以使用4个字节(int

    控制LED状态

    通过字符串控制LED

    通过I/o命令控制LED

    LED驱动的移植

    测试LED驱动程序

    编写测试程序为每一个测试程序

    Abd shell ‘/data/local/ioctl/  /dev/s3c6420_lkeds  1  2’

    本节完成了LED驱动的开发,一个硬件驱动主要有内部处理和硬件交互两部分组成。其中,内部处理是指linux驱动的装载、卸载,与设备文件相关的动作处理(读写设备文件、向设备发送I/O命令等动作)以及业务逻辑等。与硬件交互是指通过iowriter32ioread32等函数等函数与硬件中的寄存器进行数据交互。

  • 相关阅读:
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    Apache Spark RDD(Resilient Distributed Datasets)论文
    Apache Spark 2.2.0 中文文档
    Apache Spark 2.2.0 中文文档
    【机器学习实战】第10章 K-Means(K-均值)聚类算法
    [译]flexbox全揭秘
  • 原文地址:https://www.cnblogs.com/Wqian/p/5560655.html
Copyright © 2011-2022 走看看