Android 驱动及系统开发 1. 一个简单的例子(原创).pdfVIP

Android 驱动及系统开发 1. 一个简单的例子(原创).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 驱动和系统开发 1. 一个简单的例子(原创) 分类: Linux JNIAndroid2012-07-03 15:38 3192人阅读 评论(13) 收藏 举报 首先,边学习边记录点自己的代码,希望看了我写的代码觉得不怎么样的,多多 提出来,让我也学习学习,我一定会虚心接受大家的指导。 这里我们是来学习android 驱动和android系统框架的,这里我只针对于整个 android设备驱动的一个流程,从上到下的调用,而且在这里我们去使用android 源码环境,原因是我使用的电脑比较破,编译android 会挂,而且androidBSP git ubuntu android 太大了, 下来很麻烦,所以这里我只是选用了 的环境来学习 底 层和系统层的开发,那么有人会问,没有源代码,如何去学习呢,又如何来演示 出来呢?不急,慢慢道来,首先还是来谈一下android的底层和系统层,下图供 参考,基本每个设计android 的工程师都知道这张图 android使用的是Linux 内核,虽然说稍微改了点东西,增加了些移动嵌入式设 备的特性,比如说early suspend、进程间通信(bind)、特有的log机制(logcat) 等,但是Linux主流的一些东西都没有改变,所以,这里我们还是使用Linux下 得驱动作为底层来学习,具体的android的特性,之后的博客中会做深入。 Linux内核驱动之上应该是android 的HAL 层,也就是传说中得硬件抽象层,我 把这玩意一直理解成是Linux 应用层,虽然,有的厂家的代码写的比较庞大, 比较好得还是使用C++的类来封装,典型的设备是传感器模块,一般都会有一 个HAL 层来衔接,这里我们使用Linux 的应用层编程 c/c++来实现调用驱动来 收发数据等操作。 在上面应该是JNI层啦,在我们的学习中,JNI的基础知识在我的另外一个博客 JNI 专栏中有提到,在这里我们也是使用 来实现接口。 然后是framework,我们还是使用java 代码封装JNI,然后写一些java 的测试 代码,当然了,没有android的UI,对于java的UI编程,我也是没玩过,对于 java我只是一个初学者,写测试代码还凑合,一般都是一边google一边写的 ^0^ 接下来就开始行动吧,首先是我们的驱动部分,这些代码都是我自己写的,所以 难免会有很多写的不对的地方,希望大家觉得我哪边写的不好的多提些意见,毕 竟我也只是一个小菜鸟。 这个驱动完成的主要任务是从内核空间向用户空间发送一个坐标信息(模拟鼠标 的动作),当然了,我们的驱动是虚拟的,当然不会主动的向用户空间poll数据, 所以,我们要先自己往文件系统中写数据,然后驱动会通过input 子系统向user space发送数据。 下面是我驱动的一个结构图,一般我写个驱动都会先考虑很多,然后再着手去做, 三思而后行嘛,驱动的整体架构如果出了问题,到最后是很难再修正的,只有重 新写。 可以看到,我们的思路很清晰,初始化的时候开一个线程,注意这个线程是一个 死循环,但是在循环当中有一个试图获得信号量的动作,如果得不到,就会进入 休眠,如下是thread的代码: static int void static int void 1 span style=font-size:16px;ssttaattiicc iinntt work_thread(vvooiidd *data) 2 { int int 3 iinntt x, y, ret; struct struct struct struct 4 ssttrruucctt virtua

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档