标签:
LED控制发光二级管
1.实现原理:与本机的I/0 内存进行交互。所谓I/0 内存是通过各种接口连接到主机的硬件在主机内存中的映射。然后Linux 内核会利用I/0 内存中的数据硬件交互。Linux 内核提供了多个与1/0 内存交互的函数。每一个连接Linux 的硬件在ν0 内存中都会有映射首地址。
2.编写LED驱动:
1) adb shell “ echo ’1’ > /de>/s3c6.410 leds"
2) adb shell ” echo ’ 1010 ’> /dev/s3c6410_leds"
3) adb shell “echo ‘ 1 111 ‘> /dev/s3c6410_leds ”
4) sh ~/drivers/s3c6410 leds/test leds.sh
5) 执行test_leds.sh脚本文件
for((i=0 ,i<16; i=i+1))
do
#将十进制数转换为二进制格式
N=$(echo “base=2;$i “ l bc)
Echo $n
Echo $n > temp
N=$(rev temp)
// 向 LED 驱动的设备文件发送控制 LED 的数据
adb shell "echon > /dev/s3c6410 leds ”
// 延迟l 秒钟
sleep 1
done
3.创建LED 驱动的设备文件步骤
1) 使用cdev_init 函数初始化cdev:描述设备文件需要一个cdev 结构体。该结构体在<Linux 内核源代码>/include/linux/cdev.h 文件中定义。
2) 指定设备号Linux 设备文件的设备号分为主设备号和次设备号。
3) 使用cdev_add 函数将字符设备添加到内核中的字符设备数组中
4) 使用class_create 宏创建struct class:struct class 包含了一些与设备文件有关的变量以及一些回调函数指针变量。
5) 使用device_create 函数创建设备文件: device_create 函数用于创建设备文件,该函数在<l.inux 内核源代码>/incIude/linux/device.b,文件中定义
4. 卸载LED 驱动的设备文件
卸载 Linux 驱动的设备文件稍微简单-些,需要依次调用 device_destroy 、 class_destroy 和unregister_chrdev_region 方法。这3 个方法的原型如下:
void device_destroy(struct class *class, dev_t devt)
void class_destroy(struct class *els)
void unregister_chrdev_region (dev_t from, unsigned count)
Android深度探索(卷1)HAL与驱动开发--读书笔记(第七章)
标签:
原文地址:http://www.cnblogs.com/jiaotang/p/5561126.html