第七章

第七章

1.不是 Linux 驱动直接向硬件中的内存写数据 , 而是与本机的 I/O内存进行交互

2.控制开发板上的 LED

# adb shell ”echo ‘1’> /dev/ s3c6410_leds" 打开第 1 个 LEO,其他的 LED 都关闭

# adb shell ” echo  ‘1010 ’> /dev/s3c6410_leds"   第 1 个和第 3 个LED打开,第 2 个和第 4 个 LED 关闭

# adb shell   ”echo ‘1111’> /dev/s3c6410_leds ”    打开所有的 LED

3.创建设备文件

(1)使用 cdev_init 函数初始化 cdev

(2)指定设备号

(3)使用 cdev_add 函数将字符设备添加到内核中的字符设备数组中

(4)使用 class_create 宏创建 struct class

(5)使用 device_create 函数创建设备文件

4.LED 有两个引脚: GPBO 和 GPBI。

控制 LED 需要通过 3 个寄存器来完成:GPMCON(端口配置寄存器)GPMBAT(端口数据寄存器)GPMBUD(端口上拉电路寄存器)。

使用 GPMDAT寄存器的低4位控制4个LED的亮、灭。每一位控制一个 LED。最低位控制离电池最近的 LED 。0 表示亮、l 表示灭。

5.控制LED:通过字符串控制,通过I/O命令控制

6.为 Linux 驱动指定一个模块参数需要使用 module_param(name, type, perm )宏。其中 name 表示参数名, type 表示参数类型, perm 表示读/写权限。

7.测试LED驱动:使用NDK测试驱动,使用JAVA测试LED驱动。

8.LED 驱动最简单的移植就是将其在不同 Linux肉核版本下进行编译。 

这一章介绍了LED驱动。其实感触并没有多少,不知道怎么说,麻雀虽小,五脏俱全,LED灯虽然只有4个,但却包括了Linux驱动的所有必要的部分。一个完整的linux主要由内部处理与硬件交互两部分组成,内部处理主要由linux的装载,卸载与设备文件相关的动作处理,linux驱动的移植主要是基本上相当于重新写一遍linux驱动。 

原文地址:https://www.cnblogs.com/yqing/p/5561654.html