第七章 心得体会
---恢复内容开始---
这部分内容我们是在实验室学习的。我们见到了led灯闪烁的情景。LED驱动提供了两种交互方式:命令和读写设备文件。LED驱动会建立一个/dev/s3c6410_leds设备文件,该Linux驱动可以控制4个LED。1表示开,0表示关。如果字符串长度不足四个,相当于后面补0。
misc_register函数只能建立主设备号为10的设备文件。如果想建立其他主设备号的设备文件,就需要使用cdev_init.register_chrdev_region.cdev_add.class_create.device_creat等函数。
其次在控制LED亮灭之前必须要了解如何设置寄存器。ARM处理器有多个寄存器,通过设置不同寄存器的值,可以设置LED引脚的状态,打开或禁止上拉电路以及控制LED的亮和灭。LED有两个引脚:GPB0和GPB1。这三个寄存器是GPMCON,GPMDAT和GPMPUD。控制LED有两种方式。通过字符串控制LED。通过I/O命令控制LED。要想使用这两种方式控制它,LED驱动必须要接收相应的数据。如果通过字符串控制LED,需要使用file_operations.ioctl函数。该函数可以接收向字符设备发送的命令和参数。
led驱动是本书的一个真正和硬件打交道的linux驱动。一个完整的linux驱动主要由内部处理与硬件交互两部分组成。其中内部处理器主要是指Linux驱动的装载,卸载与设备文件相关的动作处理,以及业务逻辑等。与硬件交互主要是指通过ioread32,iowrite32等函数与硬件中的寄存器进行数据交互。移植linux驱动有一条非常重要,就是在修改linux驱动的源代码时应尽量不修改Linux驱动的接口。
通过实验,我们更加深刻的学习到了实用的知识。理解了书中的难点。对这方面的知识更加感兴趣了。
---恢复内容结束---