码迷,mamicode.com
首页 > 移动开发 > 详细

Android深度探索(卷1)HAL与驱动开发--读书笔记(第七章)

时间:2016-06-05 18:44:14      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!