第七章读书笔记

3.1 实现原理

         与本机的I/0 内存进行交互。所谓I/0 内存是通过各种接口连接到主机的硬件在主机内存中的映射。然后Linux 内核会利用I/0 内存中的数据硬件交互。Linux 内核提供了多个与1/0 内存交互的函数。每一个连接Linux 的硬件在ν0 内存中都会有映射首地址。

3.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.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,文件中定义

3.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)

 

posted @ 2016-06-06 00:27  lincoln徐  阅读(149)  评论(0编辑  收藏  举报