2、在ubuntu上为android系统编写linux内核驱动程序

2、在ubuntu上为android系统编写linux内核驱动程序

ID:9388702

大小:20.80 KB

页数:13页

时间:2018-04-29

2、在ubuntu上为android系统编写linux内核驱动程序_第1页
2、在ubuntu上为android系统编写linux内核驱动程序_第2页
2、在ubuntu上为android系统编写linux内核驱动程序_第3页
2、在ubuntu上为android系统编写linux内核驱动程序_第4页
2、在ubuntu上为android系统编写linux内核驱动程序_第5页
资源描述:

《2、在ubuntu上为android系统编写linux内核驱动程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、-在Ubuntu上为Android系统编写Linux内核驱动程序一、引言在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而AndroidMarket的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore。随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与。据业内统计,Android研发人才缺口至少30万。目前,对Andro

2、id人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。总的来说,对有志于从事Android硬件驱动的开发工程师来说,现在是一个大展拳脚的机会。那么,就让我们一起来看看如何为Android系统编写内核驱动程序吧。这里,我们不会为真实的硬件设备编写内核驱动程序。为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写。想起我们第一次学习程序语言时,都喜欢用“Hello,World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为

3、hello驱动程序。其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇一文中提到的LinuxDeviceDrivers一书。不过,这里我们还是从Android系统的角度来描述Android内核驱动程序的编写和编译过程。参照这两篇文章在Ubuntu上下载、编译和安装Android最新源代码和在Ubuntu上下载、编译和安装Android最新内核源代码(LinuxKernel)准备好Android内核驱动程序开发环境。二.进入到kernel/common/drivers目录,新建

4、hello目录:linuxidc@www.linuxidc.com:~/Android$cdkernel/common/driverslinuxidc@www.linuxidc.com:~/Android/kernel/common/drivers$mkdirhello三.在hello目录中增加hello.h文件:#ifndef_HELLO_ANDROID_H_#define_HELLO_ANDROID_H_#include#include#defineHELLO_DEVICE_NODE_NAME"hello"

5、#defineHELLO_DEVICE_FILE_NAME"hello"#defineHELLO_DEVICE_PROC_NAME"hello"#defineHELLO_DEVICE_CLASS_NAME"hello"structhello_android_dev{intval;structsemaphoresem;structcdevdev;};#endif这个头文件定义了一些字符串常量宏,在后面我们要用到。此外,还定义了一个字符设备结构体hello_Android_dev,这个就是我们虚拟的硬件设备了,val成员变量就代表设备里面的寄存器,它的类型为int,sem成员变量

6、是一个信号量,是用同步访问寄存器val的,dev成员变量是一个内嵌的字符设备,这个Linux驱动程序自定义字符设备结构体的标准方法。四.在hello目录中增加hello.c文件,这是驱动程序的实现部分。驱动程序的功能主要是向上层提供访问设备的寄存器的值,包括读和写。这里,提供了三种访问设备寄存器的方法,一是通过proc文件系统来访问,二是通过传统的设备文件的方法来访问,三是通过devfs文件系统来访问。下面分段描述该驱动程序的实现。首先是包含必要的头文件和定义三种访问设备的方法:#include#include#in

7、clude#include#include#include#include#include"hello.h"/*主设备和从设备号变量*/staticinthello_major=0;staticinthello_minor=0;/*设备类别和设备变量*/staticstructclass*hello_class=NULL;staticstructhello

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。