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等函数等函数与硬件中的寄存器进行数据交互。

  • 相关阅读:
    有赞移动Crash平台建设
    软件测试创新之路
    手把手教你用Python实现智能推荐算法
    接口测试--参数实现MD5加密签名规则
    重置一发LCT模板
    LOJ #2131. 「NOI2015」寿司晚宴
    LOJ #3119「CTS2019 | CTSC2019」随机立方体 (容斥)
    2019牛客暑期多校训练营(第九场)
    20190815模拟赛
    zhengrui集训笔记2
  • 原文地址:https://www.cnblogs.com/Wqian/p/5560655.html
Copyright © 2011-2022 走看看