Chinaunix首页 | 论坛 | 博客
  • 博客访问: 93110
  • 博文数量: 27
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 225
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-07 15:39
个人简介

好好学习 ,天天向上

文章分类

全部博文(27)

文章存档

2013年(27)

我的朋友

分类: Android平台

2013-02-21 11:06:15

经过几天的学习,暂时的理解是  :从app到驱动的一般流程大致应该为:

    

app

    \

    framework (java app的framework,虽然该实现在/frameworks下面但是并不是这个frameworks目录)

         \

        JNI  (一般是cpp文件貌似以libXXX_runtime.so的形式出现,这部分的实现文件一般在frameworks目录的jni下面,具体在哪个jni下面不一定,比如camera,sensor,audio在frameworks/base/jni下 ;lights  ,battery ,vibrator 等的service的jni在 base/services/jni下面 这个地方应该是有client和service之分)

           \

          libhardware.so    (该文件由 hardware/libhardware/hardware.c   和 hardware/libhardware/include/hardware/hardware.h编译,是通用的hal层接口)

                \

              xxx.xxx.so(具体的硬件模块,基本上一般存在于hardware/libhardware/module目录下,头文件在 libhardware/include下,如果是平台相关的,那么就要去vendor或者是device下去找了)

                   \

                 驱动 (kernel下的driver)

看了几篇文章,说是java本身不具备权限调用hal层的.so文件,所以要通过runtime.so ,可以参考网上led hal那个例子,runtime调到通用的hardware(hal)接口,这个。so里面有  hw_get_module,通过这个函数找到并加载 xxx.xxx.so。

暂时这么理解这个流程,随着深入的理解再修改。


    
阅读(1420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~