通过第七章的学习我知道了,尽管 Linux 驱动直接与硬件打交道,但并不是 Linux 驱动直接向硬件中的内存写数据, 而是与本机的I/0内存进行交互。所谓 1/0 内存是通过各种接口,如:PCI、 USB、蓝牙、以太网口等连接到主机的硬件包括网卡、声卡、摄像头等在主机内存中的映射,LED 驱动提供了两种交互方式:命令和读写设备文件,同时我们知道测试LED驱动之前需要用USB数据线连接S3C开发板,然后打开S3C开发板的电源开关。成功启动后,执行build.sh脚本文件编译和安装 LED 驱动。LED 驱动有两种与设备文件交互的方式: 直接写入字符串数据和I/o控制命令.直接向设备文件写入数据可以使用命令行方式来完成,也吁以通过 write 函数来完成。但I/0控制命令只能通过iocll函数发出。同时我们知道,LED驱动是通过设置 GPMDAT寄存器来控制LED的亮灭的。GPMDAT 寄存器的低4位分别控制4个LED。0表示打开LED, 1表示关闭LED. 这是在OK64 10开发板上的设置。如果要将LED驱动移植到另外基于S3C6410 的开发版上,而这个目标开发板上恰好与OK6410开发板的GPMDA1、寄存器的低4位表示的含义相反,也就是说,1 表示打开 LED,0表示关闭 LED, 那么 LED 驱动的代码就要做相应的改变。首先要改变的就是 leds_init 函数。在LED驱动装载后,会用 OxE 设置4个LED 的默认状态。而在新的开发板上,就要将OxE变成Ox。这就是本章所学的基本内容。
时间: 2024-10-16 21:19:48