博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第九章 硬件抽象层:HAL 读后感
阅读量:7043 次
发布时间:2019-06-28

本文共 722 字,大约阅读时间需要 2 分钟。

Android HAL层,即硬件抽象层,是Google响应厂家“希望不公开源码”的要求推出的新概念

1,源代码和目标位置
源代码: /hardware/libhardware目录,该目录的目录结构如下:
/hardware/libhardware/hardware.c编译成libhardware.so,目标位置为/system/lib目录
2,HAL层的实现方式
JNI->通用硬件模块->硬件模块->内核驱动接口
具体一点:JNI->libhardware.so->xxx.xxx.so->kernel
具体来说:android frameworks中JNI调用/hardware/libhardware/hardware.c中定义的hw_get_module函数来获取硬件模块,
然后调用硬件模块中的方法,硬件模块中的方法直接调用内核接口完成相关功能
3硬件模块
硬件模块的开发主要是完成/hardware/libhardware/include/hardware目录下对应的头文件中的内容,主要是硬件模块头文件和hardware.h中
的结构体中定义了一些函数指针,调用内核提供的接口将具体的函数实现,然后编译成指定名称的动态链接库放到/system/lib/hw目录下即可。
用一句话来概括:硬件模块的开发就是定义一个hardware.h中定义的hw_module_t结构体,结构体名称为宏HAL_MODULE_INFO_SYM,然后实现结构体
的相关内容即可。
4,内核驱动
主要是要向用户层开放接口,让硬件模块和内核可以交互。

转载于:https://www.cnblogs.com/mayue777/p/5638309.html

你可能感兴趣的文章
CSS自定义变量属性——像less,sass那样在css中使用变量(译)
查看>>
在 Android 上离线导览模型
查看>>
深入css之去除inline-block元素之间的多余间隙
查看>>
关于cronjob的用法
查看>>
对于fork()用法的初步探讨
查看>>
Javascript 数组循环遍历之forEach
查看>>
HTML & CSS之小白初入江湖
查看>>
写一个简单的webserver
查看>>
通过 InnoSetup 美化安装界面
查看>>
一次不怎么愉快的滴滴面试经历
查看>>
Android的资源管理器的创建过程
查看>>
php验证身份证函数
查看>>
[使用 Weex 和 Vue 开发原生应用] 1 如何配置开发环境
查看>>
红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
查看>>
Linus 发文宣布Linux Kernel 5.0 正式发布
查看>>
定制你的敏捷方法:以结果为导向
查看>>
关于Visual Studio 2019的前期详情
查看>>
PWA即将推向所有Chrome平台
查看>>
官宣!微软宣布桌面版 Edge将基于Chromium进行开发\n
查看>>
运用供应链管理实现更快速、更高质量的交付
查看>>