• 第七章随想


    第七章 控制发光二极管读后感

       本章学的是通过向Linux驱动发送数据可以控制LED小灯的开关。

       LED的原理就是:Linux驱动与本机的I/O内存进行交互。所谓I/O内存是通过各种接口连接到主机的硬件在主机内存中的映射。Linux内核提供了多个与I/O交互的函数,每一个连接Linux的硬件在I/O内存中都会有映射首地址。

     接下来创建LED驱动的设备文件

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

    第二步:指定设备号:Linux设备文件的设备号分为主设备号和次设备号。用一个int类型(dev_t)表示。其中前12位表示主设备号,后20位表示次设备号

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

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

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

        然后设置寄存器,初始化LED驱动

    LED有俩个引脚:GPB0GPB1,由这俩个引脚控制电源的连,断来控制LED的亮灭。控制LED需要通过3个寄存器来完成,这三个寄存器分别是GPMCON(端口配置寄存器),GPMDAT(端口数据寄存器).GPMPUD(端口上拉电路寄存器)

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

    1.通过字符串控制LED

    2.通过I/O命令控制LED(需要使用file_operations.ioctl函数控制)

    在编写代码的时候需要了解如下几点。

    1.四个LED的状态用一个长度为4char数组存储。1表示亮,0表示灭

    2.如果写入的字符串长度小于等于4,直接写入这些字符串。如果字符串长度大于4,则只会写入前四个字符串

    3.由于实现mem数组已被清零,因此,如果写入的字符串长度小于4,则相当于后面的字符都是0

    一个完整的驱动主要由内部处理和硬件交互俩部分组成。Linux驱动在不同平台的移植也是处理这俩部分。如果在不同Linux内核版本之间的移植,主要是移植第一部分,如果在不同硬件平台的移植,主要是移植第二部分。

  • 相关阅读:
    php操作zip压缩文件
    php图像处理(thinkphp框架有相对强大的图像处理功能)
    php实现希尔排序(总结)
    PHP glob() 函数详解
    php资源类型变量
    dump var_dump print print_r的区别
    php实现遍历文件目录
    php常用函数
    php全局变量的使用
    php函数按地址传递参数(php引用)
  • 原文地址:https://www.cnblogs.com/lzy402682881/p/5557175.html
Copyright © 2020-2023  润新知