第七章随想

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七章随想相关的知识,希望对你有一定的参考价值。

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

   本章学的是通过向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内核版本之间的移植,主要是移植第一部分,如果在不同硬件平台的移植,主要是移植第二部分。

以上是关于第七章随想的主要内容,如果未能解决你的问题,请参考以下文章

代码随想录算法训练营第七天 | 454.四数相加II ,383. 赎金信 ,15. 三数之和,18. 四数之和

第七章

JS复习:第七章

第七章 课后习题P206

Python第七章

第七章