zoukankan      html  css  js  c++  java
  • 控制发光二极管

    控制发光二极管

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

    1.使用cdev_init函数初始化cdev

    struct cdev{

    struct kobject kobj;

    struct module *owner;

    const struct file_operations *ops;

    struct list_head list;

    dev_t dev;

    unsigned int count;

    }

    2.指定设备号

    直接在代码中指定或者动态分配

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

    4.使用class_create宏创建struct class

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

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

    需要一次调用device_destroy、class_destroy和unregister_chrdev_region方法

    三.   设计寄存器与初始化LED驱动

    LED有两个引脚:GPB0和GPB1,控制LED需要通过三个寄存器来完成,三个寄存器分别是GPMCON、GPMDAT和GPMPUD。

    每一个寄存器可以使用4个字节,相当于int类型数据占用的空间。

    四.   控制LED

    通过字符串控制LED:使用命令行方式或通过write函数

      通过I/O命令控制LED:通过ioctl函数发出

    五.   LED驱动的模块参数

    通过module_param_array宏的第三个参数指定数组长度时要使用指针类型的数据;

    如果linux驱动含有多个模块参数,参数要用单引号或双引号括起来;

         指定数组类型的参数值时,逗号前后不能有空格

     

    六.   LED驱动的完整代码

    测试LED驱动

    1. 编写测试I/O控制命令的通用程序
    2. 使用NDK测试LED驱动
    3. 使用Java测试LED驱动

    LED驱动的驱动移植

     

     

  • 相关阅读:
    java-mybaits-00503-延迟加载
    java-mybaits-00502-案例-映射分析-一对一、一对多、多对多
    java-mybaits-00501-案例-映射分析-订单商品数据模型
    java-mybaits-00402-Mapper-动态sql-if、where、foreach、sql片段
    数据结构与算法实验题7.1 M 商人的求救
    HDOJ 1075
    HDOJ 1856
    HDOJ 3790
    HDOJ 1869
    HDOJ 1870
  • 原文地址:https://www.cnblogs.com/levity/p/5562861.html
Copyright © 2011-2022 走看看