本章主要讲硬件抽象层: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的一种驱动方式。

最新文章

  1. C# 文件读写
  2. [版本管理]有惊无险修复svn服务器Invalid filesystem revision number问题
  3. 记录js的一些小技巧
  4. armp启动
  5. Apache Commons 工具类介绍及简单使用
  6. SystemTap----常用变量、宏、函数和技巧
  7. js中call方法的使用介绍
  8. Pro Flight YOKE 设备键位映射踩过的坑
  9. 浅谈element-ui中的BEM范式实践
  10. BZOJ2655calc
  11. 建立多页面vue.js项目
  12. linux查询公网ip
  13. 利用JDK自带的keytool生成SSL证书然后导入到SpringBoot
  14. 【BZOJ2328】 [HNOI2011]赛车游戏
  15. categorys
  16. ios模拟器已安装但xcode无法显示
  17. <二代測序> 批量下载 NCBI sra 文件
  18. IDEA下安装与使用Junit4
  19. 导入exce表格中的数据l到数据库
  20. vue click事件获取当前元素属性

热门文章

  1. 设计模式(3)--抽象工厂模式(Absrtact Factory Pattern)
  2. Xcode真机调试报错(证书的签发者无效)
  3. CentOS安装crontab及使用方法(汇总多人博客并实践确认无误)
  4. as3 代码优化之pmd
  5. centos 7 下安装numpy、scipy等python包
  6. MAC上显示隐藏文件夹
  7. 2014年6月份第3周51Aspx源码发布详情
  8. UART接口基本知识
  9. .net core 学习笔记(1)-分页控件的使用
  10. 兼容各版本浏览器,封装原生Js获取ClassName