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

首先创建led驱动的设备文件,可以使用cdev_init,register_chrdev_region,cdev_add等建立主设备号的设备文件。步骤如下:

1使用cdev_init初始化cdev

2指定设备号

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

4使用class_creat宏创建struct class

5使用device_creat函数创建设备文件

然后卸载led驱动的设备文件

{Device_destroy(leds_class,dev_number);

If(leds_class)

Class_destroy(leds_class);

Unregister_chrdev_region(dev_number,DEVICE_NUMBER);

Return;}

Static void leds_exit(void)

{

Leds_destroy_device();

Printk(DEVICE_NAME”\text!\n”);

}

Module_exit(leds_exit);

然后设置寄存器与初始化led驱动,arm处理器有多个寄存器,通过设置不同寄存器的值,设置led引脚状态、打开或禁止上拉电路以及控制led的亮和灭。一下几点需要知道

Led有两个引脚,GPB0和GPB1

控制led需要通过三个寄存器完成

每一个寄存器可以使用4个字节

使用GPMCON寄存器的低16位将led的两个端口属性设为output。

使用GPMDAT寄存器的低4位控制4个led的亮灭。

使用GPMPUD寄存器的低八位分别打开四个led的上拉电路

然后就是比较重要的控制led,要想完成这一过程,led驱动就必须接受相应的数据。如果通过字符串控制,需要使用file_operations.write。如果通过I/O命令控制led,需要使用file_operations.ioctl函数。编写时需要了解几点:

4个led的状态用一个长度为4的char数组存储

如果写入的字符串长度小于4,直接写入,如果大于4,只写前4个

如果写入的字符串小于4,相当于后面的都是0

向GPNMDAT寄存器写入数据之前最好先读取GPMDAT当前值

最后进行测试led驱动,方法有一下几种:

编写控制命令的通用程序:led驱动有两种与设备文件交互的方式:直接写入字符串数据和I/O控制命令。

使用NDK测试led驱动

使用java测试led驱动

http://www.cnblogs.com/caoyutao/

时间: 2024-10-25 09:02:47

Android深度探索--HAL与驱动开发----第七章读书笔记的相关文章

Android深度探索--HAL与驱动开发----第五章读书笔记

第五章主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器它是基于ARMI1内核,广泛应用于移动电话和通用处理等领域. 开发板从技术上说与我们经常用的手机类似, 也包含显示屏. 键盘. Wi-Fi. 蓝牙等模块(可 能有的是选配〉.但与手机不同的是在开发板上安装嵌入式系统要比手机容易得多.而且一般开发 扳都有很多扩展的端口,可以很容易开发定制的硬件, 并与开发板链接.因此,开发板相对于孚机 来说,更适合对程序进行测试,尤其适合对底层的 L

Android深度探索--HAL与驱动开发----第四章读书笔记

1. 下载.编译.测试源代码 创建存放下载文件的目录(repo) 下载repo脚本文件 创建用于存放源代码的目录 开始下载源代码. 2. 源代码目录含义摘要 Abi 应用程序二进制接口 Device 于设备相关的代码 External 宽展工具源代码 Ndk NDK相关的源代码 Sdk SDK如ddms.draw9patch.sdkmannager. System Android的基本系统 3. 下载源代码中的一部分 使用repo sync命令 使用git clone命令 4. linux内核目

Android深度探索--HAL与驱动开发----第六章读书笔记

Linux驱动程序与其他类型的Linux程序一样拥有自己的规则,下面给出一个编写基本的Linux驱动的一般步骤: (1)建立Linux驱动的骨架(装载和卸载Linux驱动): (2)注册和注销设备文件: (3)指定与驱动相关的信息: (4)指定回调函数: (5)编写业务逻辑: (6)编写Makefile文件: (7)编译Linux驱动程序: (8)安装和卸载Linux驱动. 对于一个Linux驱动程序,一开始可以在Ubuntu Linux上做前期开发和测试.对于访问硬件的部分也可以在Ubuntu

Android深度探索--HAL与驱动开发----第三章读书笔记

1. 什么是Git? Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. 2. Git的安装. # apt-get install git #apt-get install git-doc git-svn git-email git-gui gitk 在Linux下可以直接使用man命令查看指定命令的帮助文档 #git help <sub-comm

Andriod深度探索—HAL与驱动开发 第七章 读书笔记

创建LED驱动的设备文件 第1步:使用cdev_init函数初始化cdev 第2步:指定设备号.直接在代码指定或动态分配 第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第4步:使用class_create宏创建struct class 第5步:使用device_create函数创建设备文件 卸载LED驱动的设备文件 需要依次调用device_destroy.class_destroy和unregister_chrdev_region方法 void device_dest

Andriod深度探索—HAL与驱动开发 第七章 读书笔记and一点心得

创建LED驱动的设备文件 第1步:使用cdev_init函数初始化cdev 第2步:指定设备号.直接在代码指定或动态分配 第3步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第4步:使用class_create宏创建struct class 第5步:使用device_create函数创建设备文件 卸载LED驱动的设备文件 需要依次调用device_destroy.class_destroy和unregister_chrdev_region方法 void device_dest

Android深度探索HAL与驱动开发-——第七章

第七章主要介绍了嵌入式组态软件结构,.界面设计和功能选择区设计以及辅助功能区设计和程序生成区设计Android应用并采用Java开发嵌入式.   Android嵌入式是通过拖拽式进行程序设计,双击指定组件和调整组件属性完成的. Androd界面设计.包括布局.组件的使用.android嵌入式组态软件功能选择区设计包括界面设计.IO设计和数据库设计.   1.界面设计:分为六个模块,布局.按钮类.文本类.时间类.特殊类.属性组成.(1)布局类中包括绝对布局.框架布局和线性布局:(2)按钮类包括普通

Android深度探索HAL与驱动开发 第七章

第七章 本章学习控制发光二极管,通过直接与硬件交互完成,控制开发板上的四个小灯. LED驱动的实现原理是 理解了原理之后,我们便可以开始编写led驱动了,与上一章步骤类似,通过命令和读写文件实现.首先创建led驱动的设备文件,可以使用cdev_init,register_chrdev_region,cdev_add等建立主设备号的设备文件.步骤如下: 1使用cdev_init初始化cdev 2指定设备号 3使用cdev_add函数将字符设备添加到内核中的字符设备组中 4使用class_creat

Andriod深度探索—HAL与驱动开发 第十 章 读书笔记and一点心得

 打印内核调试信息:printk Printk函数的用法与printf函数相似,只不过printk函数运行在内核空间,printf函数运行在用户空间. Prink函数在printk.c文件中实现,该文件的路径如下: /root/kernel/linux_kernel_2.6.36/kernel/printk.c Printk函数至少要有一个参数(格式字符串)如果格式字符串中包含有占位符(%d.%s等),后面必须跟与占位符相等数量的参数,以便一一对应传入printk函数. Printk文件是一个简