Android深度探索——第九章读书笔记及心得

HAL模块

——第9章读书笔记及心得

       通过本章学习学会了Android中特有的与linux驱动交互的方法,即通过HAL模块。HAL模块本质上就是通过linux共享库(.so)与linux交互驱动,然后利用应用程序再访问linux共享库。每一个HAL共享库指定一个ID,在利用这个ID配合一定的规则找到linux共享库。知道了HAL对于Android的意义。知道了Android HAL的架构。

       HAL是建立在linux驱动之上的一套不属于linux内核的程序库。它属于linux内核层之上的应用层。HAL中存放了linux驱动中不应该保留的任何不想公开的业务逻辑代码。所以HAL的目的是:统一硬件的调用接口、解决QPL版权问题、针对一些特殊要求。

       Android HAL架构的发展:1、在Android系统中使用程序库(.so文件)调用位于内核空间的linux驱动。然后Android应用程序(APK文件)可以通过NDK程序访问HAL中的额程序库,或直接在Android应用程序中访问HAL中的程序库。(如图一)

 图一   图二   

         2、在HAL模块的核心代码保持原状,添加新的HAL架构要求的代码入口。改代码无需装载.so文件,只需要通过一个ID来定位相应的.so文件。

       编写一款支持HAL的linux驱动程序的步骤:

1、编写linux驱动

2、编写HAL Library

3、编写Service Library

测试读写寄存器操作的命令行格式:rwdev <r|w> <dev_file> <byte_count> [byte1] [byte2] …[byten]。其中rwdev表示命令行程序。<r|w>表示读或写命令。<dev_file>表示设备文件名。<byte_count>表示写入或读取的字节数。[byte1] [byte2] …[byten]表示写入的字节数。Rwdev是由rw_dev.c编译而成。

       编写调用LED驱动的HAL模块的步骤:

1、定义结构体和宏

2、编写HAL模块的open函数

3、定义hw_module_methods_t结构体变量

4、定义HAL_MODULE_INFO_SYM变量

5、编写HAL模块的close函数

6、编写控制LED的函数

转载于:https://www.cnblogs.com/zhanghui9505/p/5639425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值