首页文章android驱动开发基础android手机驱动「android驱动开发基础」

android驱动开发基础android手机驱动「android驱动开发基础」

时间2025-01-17 07:48:48发布yu分类文章浏览144
导读:开发板:hikey960代码:aosp,Android R开发环境:64bit ubuntu 16.04, 添加新的lunch选项(新产品):赋值,如下 (参考,实例参考 Android.mk...

  • 开发板:hikey960
  • 代码:aosp,Android R
  • 开发环境:64bit ubuntu 16.04,

添加新的lunch选项(新产品):赋值,如下 (参考,实例参考)

 


Android.mk模板如下所示:

 
  • 编译报unused parameters错时,需加上: 以忽略掉该报错。
  • log系统的设备节点:
 
  • 转载来自文章《Android Log系统介绍 (基于Android N)》的log系统核心图如下所示,更多细节请参考此文。
    在这里插入图片描述                      图1 Android log系统

  • Android Q、R上面log的缓冲区有:mainsystemradioeventscrash

  • c/c++中打印调试信息:
     ① 宏定义标签及添加头文件:
      
      
     ② Android.mk中声明所依赖的动态库:
      
        
     ③ 使用宏,,,,,进行打印log

  • java中打印log信息:
     ① 导入包:
     ② 在类内部定义标签:
     ③ 使用方法,,,进行打印

参考中如下代码,可知祖先进程通过解析的内容来进行启动各种本地服务

 
  • android init语言说明文档:
  • 在厂商中添加规则,实例:

以控制LED灯为背景,进行JNI编程技术的介绍。aosp中JNI技术参考代码:

1. java调用jni接口

将native接口的声明组织到

 

然后在中进行调用:

 
  • 注意:普通app没有权限加载jni动态库依赖的库,需将apk预置或传入到手机的下作为

2. aosp中开发native代码

 ① 定义JAVA和C/C++间的映射表如下所示。其中是java中native方法的签名,在APP目录下执行可查看各方法的签名,再把他们分别填充到映射表。

 

 ② 通过定义jni层的回调函数,来将上述映射表注册到java虚拟机:

 

 ③ 中指定生成的是动态库和编译工具分别如下:

 
  • 注意:测试时,需要修改设备节点权限:,以及关闭selinux:

3. Android Studio中开发native代码

 参考我的另一篇文章有详细开发步骤:Android Studio开发NDK代码。

本章介绍开发传统HAL代码和调用HAL的主要流程,如下出现的代码场景是控制LED灯。

1. 接口声明

开发HAL在头文件,定义相应硬件模块和设备结构,以继承基础模块结构()和基础设备结构()。另外还有暴露接口给调用者的目的。具体开发流程如下所示:

 

2. 接口实现

 ① 实例化自己派生的专有硬件模块结构;

 

 ② 实例化,该结构下成员只有;

 

 ③ 定义,它的任务是实例化的派生结构体;

 

 ④ 定义,HAL调用者调用此函数用于关闭设备释放中申请的资源

 

 ⑤ 实现暴露给HAL调用者的接口,本场景要实现;

3. 添加编译规则

 ① 动态库名应为,所以;
 ② HAL动态库应部署到和下,需加上规则;
 ③ 导出暴露给调用者的接口头文件。部署到分区的HAL库,使用;部署到分区的HAL库,应使用。

  • 若要HAL动态库部署到和,还需加上规则
    HAL参考代码:

4. 使用HAL的接口

 ① 加载硬件的HAL模块,使用 ;

  • ——HAL动态库名字的前缀,本场景值为;
  • ——通过此参数获得 实例
 

 ② 通过 的派生结构体,获取的派生结构体,方法如下所示。但为了方便调用者,HAL接口头文件一般会将下面的代码实现到内联函数中,如调用前文的;

 

 ③使用HAL接口进行硬件控制的形式:;如本场景使用:来点亮LED;
 ④ 在需要关闭设备和释放有关内存资源时,需调用,所以调用方法如下所示。但为了方便调用者,HAL接口头文件一般会将下面的代码实现到内联函数中,如调用前文的;

 
  • 注:调用HAL动态库的代码,需要链接动态库,故有。
    aosp中调用HAL的参考代码:

德清版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com

展开全文READ MORE
驱动
消息称 OPPO Reno12 Pro 手机搭载超窄微四曲屏、天玑 9200+ 处理器oppo即将上市的手机「消息称 OPPO Reno12 Pro 手机搭载超窄微四曲屏、天玑 9200+ 处理器」 Limo三星I8320诺基亚触屏手机「Limo三星I8320」