手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

在Ubuntu上为Android系统编写Linux内核驱动程序

[日期:2011-07-21] 来源:Linux社区  作者:Luoshengyang [字体: ]

在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore。随着Android系统逐步扩大市场占有率,终端设备的多样性亟需更多的移动开发人员的参与。据业内统计,Android研发人才缺口至少30万。目前,对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。总的来说,对有志于从事Android硬件驱动的开发工程师来说,现在是一个大展拳脚的机会。那么,就让我们一起来看看如何为Android系统编写内核驱动程序吧。

这里,我们不会为真实的硬件设备编写内核驱动程序。为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写。想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello驱动程序。其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇一文中提到的Linux Device Drivers一书。不过,这里我们还是从Android系统的角度来描述Android内核驱动程序的编写和编译过程。

一. 参照这两篇文章在Ubuntu上下载、编译和安装Android最新源代码在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)准备好Android内核驱动程序开发环境。

二. 进入到kernel/common/drivers目录,新建hello目录:

linuxidc@www.linuxidc.com:~/Android$ cd kernel/common/drivers

linuxidc@www.linuxidc.com:~/Android/kernel/common/drivers$ mkdir hello

三. 在hello目录中增加hello.h文件:

  1. #ifndef _HELLO_ANDROID_H_   
  2. #define _HELLO_ANDROID_H_   
  3.   
  4. #include <linux/cdev.h>   
  5. #include <linux/semaphore.h>   
  6.   
  7. #define HELLO_DEVICE_NODE_NAME  "hello"   
  8. #define HELLO_DEVICE_FILE_NAME  "hello"   
  9. #define HELLO_DEVICE_PROC_NAME  "hello"   
  10. #define HELLO_DEVICE_CLASS_NAME "hello"   
  11.   
  12. struct hello_android_dev {  
  13.     int val;  
  14.     struct semaphore sem;  
  15.     struct cdev dev;  
  16. };  
  17.   
  18. #endif  
linux
相关资讯       Ubuntu教程  Android教程 
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 夜风雪 发表于 2013/4/24 17:31:35
觉得里面有错误