硬件抽象层:HAL
2024-08-24 05:24:08
本章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库。刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了GPL版权问题。三,针对一些特殊的要求。可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。
下一个小节讲了Android HAL 架构。接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能。
涉及的HAL步骤:1.编写Linux驱动2.编写HAL Library 3.编写Service Library 精简LED驱动
编写HAL模块的步骤和原理如下。
第一步:定义结构体和宏 编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体。
第二步:编写HAL模块的open函数 open函数是HAL模块的入口点。本例中使用的是led_device_open函数。该函数主要做如下三个工作。初始化hw_device_t的子结构体。 打开设备文件。 初始化寄存器。
第三步:定义hw_module_methhods_t 结构体变量
第四步:定义HAL_MODULE_INFO_SYM函数
第五步:编写HAL模块的close 函数 当HAL模块被卸载后会调用close函数
第六步:编写控制LED的函数
总之,本章讲了在Android系统中使用Linux的一种驱动方式。
最新文章
- C# 文件读写
- [版本管理]有惊无险修复svn服务器Invalid filesystem revision number问题
- 记录js的一些小技巧
- armp启动
- Apache Commons 工具类介绍及简单使用
- SystemTap----常用变量、宏、函数和技巧
- js中call方法的使用介绍
- Pro Flight YOKE 设备键位映射踩过的坑
- 浅谈element-ui中的BEM范式实践
- BZOJ2655calc
- 建立多页面vue.js项目
- linux查询公网ip
- 利用JDK自带的keytool生成SSL证书然后导入到SpringBoot
- 【BZOJ2328】 [HNOI2011]赛车游戏
- categorys
- ios模拟器已安装但xcode无法显示
- &;lt;二代測序&;gt; 批量下载 NCBI sra 文件
- IDEA下安装与使用Junit4
- 导入exce表格中的数据l到数据库
- vue click事件获取当前元素属性