(安卓底层]哈尔硬件抽象层编写

  

两个与hal有关的结构体 hw_module_t ,hw_device_t

[android底层] hal硬件抽象层编写


一、jni和hal之间的关系

    Tip:几种app,jni,hal,framework之间的关系框架

[android底层] hal硬件抽象层编写    这篇文章用的框架是第二种框架的编写,他们的关系如下;

    可以看出jni主要通过pModule和pdevice来获取hal中的变量来操作hal层

[android底层] hal硬件抽象层编写

二、jni操作hal

    hal层:1、jnihal层的module和device对象

[android底层] hal硬件抽象层编写

    hal2、jnihal层

[android底层] hal硬件抽象层编写

[android底层] hal硬件抽象层编写

[android底层] hal硬件抽象层编写

jni操作hal完整代码参考[android底层]jni中获取自定义的类函数编写    来对比

三,哈尔的编写

编写哈尔注意点(注释部分)

1,哈尔的. h文件的编写,自己的硬件自定义的模块和设备的编写;以领导为例子

2,哈尔的。c文件的编写的步骤

一个结构体hw_module_t的结构体

[android底层] hal硬件抽象层编写

[android底层] hal硬件抽象层编写


[android底层] hal硬件抽象层编写

第二步:

[android底层] hal硬件抽象层编写

第三步: 

[android底层] hal硬件抽象层编写

[android底层] hal硬件抽象层编写


[android底层] hal硬件抽象层编写

[android底层] hal硬件抽象层编写



完整代码

#ifndef __HAL_LED_H__ 
  # define  __HAL_LED_H__ 
  # include  & lt;硬件/hardware.h>,
  ,
  # define  LED_MODULE_ID “myled_hal”,//目标文件名称:,libhal_jni_test.so 
  led_hal_modules {struct 
  ,,,struct  hw_module_t 普遍;//必须这个名称(约定),
  },,
  led_hal_device {struct 
  ,,,struct  hw_device_t 普遍;//必须这个名称(约定),
  ,,,//下面是设备相关自定义函数,
  ,,,int (*打开)();,
  ,,,int  (* ledoff) ();,
  ,,,int (*一同出席)(),,
  },,
  ,
  # endif 

(安卓底层]哈尔硬件抽象层编写