第七章

心得体会:本章讲述了控制发光二级管,该 Linux 驱动用来控 制开发版上的 4个 LED 小灯。也就是说通过向 Linux 驱动发送数据可以控制 LED 小灯的开关。刚开始讲LED驱动的实现原理,Linux 内核提供了多个与 1/0 内存交互的函数,如 ioread16、 ioread32、 iowrite16、iowrite32 等。 Linux 内 核的内存管理模块负责同步 I/0 内存与硬件中的数据。下面讲了编写回驱动, 测试 LED 驱动之前需要用 USB 数据线连接 S3C 开发板,然后打开 S3C 开发板的电源开关。 成功启动后,执行脚本文件编译和安装 LED 驱动。如果一切顺利, build. s h 脚本文件会自 动将 s3c64 l O leds.ko 文件上传到 S3C 开发板并安装。创建 LED 驱动的设备文件,。如果想建立其他主设备号的设备文件,就需要使用 cdev_山t、 register_chrdev_region、 cdev add、 class create等函数。卸载 LED 驱动的设备文件,卸载 Linux 驱动的设备文件稍微简单-些,需要依次调用 device_destroy、 class_destroy 和 unregister_chrdev_region 方法。设置寄存器与初始化 LED 驱动
在控制 LED 亮、 灭之前必须要了解如何设置寄存器。 ARM 处理器有多个寄存器,通过设置不同寄存器的值。可以设置 LED 引脚的状态、打开或禁止上拉(pull-up)电路以及控制 LED 的亮和灭。 控制 LED
LED 驱动可以使用如下两种方式控制 LED
口通过字符串控制 LED.口通过 l/0命令控制 LED
。1.通过字符串控制 LED .
2. 通过 l/0命令控制 LED;
LED 驱动有两种与设备文件交互的方式: 直接写入字符串数据和 νo 控制命令.直接向设备文 件写入数据可以使用命令行方式来完成,也吁以通过 write 函数来完成。但 I/0 控制命令只能通过 iocll 函数发出。为了以后测试方便,本节编写了一个通用的发送 命令的程序。在后面的章节将 使用该程序测试I/0命令对Linux 驱动的控制。
总之,LED 驱动是第一个Linux 驱动。虽然 LED 驱动并不复杂,只是控制了4个 LED,但 LED 驱动已经包括了 Linux 驱动所有必要的部分。

原文地址:https://www.cnblogs.com/sjpeng/p/5540162.html