Android HAL
cjok376240497
这个作者很懒,什么都没留下…
展开
-
[转载]Android HAL简介
Android HAL简介 1、 HAL介绍 现有的HAL架构由patrick brady(Google)在2008 Google IO演讲中提出的,如下图: Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开Linux的GPL束缚。思路是把控制硬件的动作放到了Android HAL中,而Linux driver仅仅完成一些简单的数据交互动作,甚至把硬件寄存器空原创 2012-04-09 09:22:08 · 1975 阅读 · 0 评论 -
Android HAL 开发 (1)
最近开始看Android的HAL开发方面的东东,发现现在国内研究这个的并不多,来自台湾的Jollen可能是走在Android HAL研究的最前沿,这也和他以前专注做嵌入式linux(openmoko)的工作经历有关,毕竟Android的application开发是基于Java的,而之前Jollen做的更多的还是C/C++开发,因此选择从HAL作为进入Android的shortcut还是很明智的,我转载 2012-04-09 17:07:28 · 1419 阅读 · 0 评论 -
Android HAL 开发 (3)
在上一篇文章中我们分析了jni的led service代码,该代码通过调用led的HAL层代码,实现了mokoid_init, mokoid_setOn, mokoid_setOff三个C/C++接口,但是该接口还无法直接提供给java程序使用,因此还需要一段java代码通过jni调用这些操作接口。 下面就介绍java led service 的实现,代码很简单。 framework/转载 2012-04-09 17:08:57 · 947 阅读 · 0 评论 -
Android HAL 开发 (5)
上一章介绍了直接调用Service来操作硬件的方法,如果我们再优化一下结构,通过一个Manager来调用这个Service的方法,可能会更好。这样Service就可以跑在后台,由于这时候service和manager是两个进程,所以只能通过IPC来进行通信。我们在上一篇看到 public final class LedService extends ILedService.Stub { }转载 2012-04-09 17:10:28 · 888 阅读 · 0 评论 -
Android HAL 开发 (4)
在上一篇文章中,我们看到了如果在java程序中调用C/C++撰写的函数。而且Android的service已经实现了,下面就要看看应用程序如何调用这个service了,这里用两种方法,我们先介绍简单的第一种直接调用方法。 apps/mokoid/apps/LedClient/src/com/mokoid/LedClient/LedClient.java package com.mokoid转载 2012-04-09 17:09:32 · 975 阅读 · 0 评论 -
Android HAL实现的三种方式(2) - 基于Service的HAL设计
在上一篇文章中,我介绍了一种应用程序直接调用JNI库的HAL设计方法,该方法虽然简单,但是不符合Android的框架结构,下面我们介绍一种通过Service提供接口给应用程序的设计方法,结构如下: HAL stub JNI 库 JAVA Service JAVA 应用程序。 HAL stub的设计和上文一样,JNI库的设计中唯一需要修改的地方就是register_mokoid_se转载 2012-04-09 17:04:45 · 1299 阅读 · 0 评论 -
Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
现在在Android上的HAL开发总的来说还是随意性比较大,Android也并没有规范好一个具体的框架,下面我将根据Jollen的Mokoid工程,自己做了一些改动,分别给大家介绍一下三种实现方式。 这篇先介绍最简单的一种实现方式 - Java应用程序直接调用JNI库。 由于JNI技术的存在,在Android中,java程序能够很好的调用C/C++库。我们这里设计一个简单的HAL,一共转载 2012-04-09 17:02:41 · 1280 阅读 · 0 评论 -
Android HAL实现的三种方式(3) - 基于Manager的HAL设计
在上文中我们实现了利用Service来设计HAL,但是根据Android的框架,一般应用程序都不直接和Service打交到,中间需要经过一个Manager层。 我们在这里也按照Android的框架,进一步优化HAL的设计。结构如下: HAL stub JNI 库 JAVA Service Manager JAVA 应用程序。 由于LedManager和LedService转载 2012-04-09 17:05:52 · 986 阅读 · 0 评论 -
Android HAL 开发 (2)
在上一篇文章中,我们看到了如何撰写HAL层的用户硬件驱动程序,我们每也知道,最终该代码会被编译成动态链接库提供给service(jni)使用,那么我们下面来看看service(jni)是如何与HAL通信的。 一般service的jni代码位于framework/base/service/jni/中,我们看看mokoid的ledservice是如何实现的: framework/转载 2012-04-09 17:08:15 · 1200 阅读 · 0 评论 -
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL) 模块Gralloc的实现原理分析
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL) 模块Gralloc的实现原理分析 作者:Luoshengyang,发布于2012-9-3,来源:博客 源地址:http://www.uml.org.cn/mobiledev/201209032.asp 前面在介绍Android系转载 2012-09-23 17:36:29 · 1884 阅读 · 0 评论