没有合适的资源?快使用搜索试试~ 我知道了~
app通过hal调用访问ledapp通过hal调用访问ledAndroid5.0app调用hal架构介绍以led为例向系统添加hal接口一、添加app访问的ILedService接口二、向系统添加ledservice三、JNI 提供本地方法四、分析JNI 是如何获取到我们的HAL模块五、编写我们的HAL文件六、向系统注册JNI 实现的native方法七、APP调用 开发环境:Android stdio 3.5.3 开发板:tiny4412开发板 软件版本:Android5.0.2 + kernel3.0.86 app通过hal调用访问led Android5.0app调用hal架构介绍 上一章
资源推荐
资源详情
资源评论
app通过通过hal调用访问调用访问led
app通过通过hal调用访问调用访问ledapp通过hal调用访问ledAndroid5.0app调用hal架构介绍以led为例向系统添加hal接口一、添加app访问的ILedService接口二、向系统添加
ledservice三、JNI 提供本地方法四、分析JNI 是如何获取到我们的HAL模块五、编写我们的HAL文件六、向系统注册JNI 实现的native方法七、APP调用
开发环境:Android stdio 3.5.3
开发板:tiny4412开发板
软件版本:Android5.0.2 + kernel3.0.86
app通过通过hal调用访问调用访问led
Android5.0app调用调用hal架构介绍架构介绍
上一章节介绍了如何使用app通过 jni接口调用我们的动态库实现对具体硬件的访问,但是这种操作方式仅限于特定硬件,对于我们通用的器件比如说LCD Android都有通
用的hal层接口来访问,可以实现对硬件访问的统一管理。对于我们tiny4412开发板使用的Android5.0版本的基础架构如下图所示:
1.在Android中对硬件的操作权限只在systemserver这里,所有的APP想要访问或者操作硬件都需要将请求发送给service_manager,然后由systemserver统一处理访问硬
件,systemserver通过loadlibrary来加载C库,在C库的JNIonload里面来注册本地方法。在JNIonload里面分别调用各个硬件的函数来注册本地方法。
systemserver对每一个硬件构造一个service(使用上面提到的本地方法),然后使用addservice添加到系统。
2.app想要访问硬件先通过getService来获得各种服务,比如振动器服务接口调用就在IVibratorService.java里面,获取到service以后就可以使用service访问硬件了。
以以led为例向系统添加为例向系统添加hal接口接口
一、添加一、添加app访问的访问的ILedService接口接口
如上图所示,app是通过ILedService.java来向系统获取ledservice的,所以我们首先应该实现该接口。在Android中这个java文件并不是我们直接编写的,而是通过实现一
个aidl文件然后由系统帮助我们自动生成的。
下面我们来编写我们的ILedService.aidl文件,如下所示,比较简单只提供一个ledCtrl供app使用,我witch控制哪盏灯,status亮灭状态。
package android.os;
/* led hide*/
interface ILedService
{
int ledCtrl(int which, int status);
}
将我们编写的ILedService.aidl文件放到如下目录:
/home/tangtao/work/tiny_4412/android-5.0.2/frameworks/base/core/java/android/os
修改frameworks/base/下的Android.mk文件,加上我们自己添加的aidl文件
LOCAL_SRC_FILES += \
core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl \
core/java/android/accessibilityservice/IAccessibilityServiceClient.aidl \
core/java/android/accounts/IAccountManager.aidl \
core/java/android/os/IVibratorService.aidl \
+ core/java/android/os/ILedService.aidl \
资源评论
weixin_38747144
- 粉丝: 4
- 资源: 938
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 人工智能开发项目深度学习项目源码带指导视频DCGAN人脸图片生成
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)证券业务管理系统设计与开发
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)银行储蓄业务管理系统2
- Rust编写的一个todo程序源代码解读
- 小程序源码2-备忘录模板
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)银行储蓄业务管理系统
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)医院管理系统设计与开发
- VMware 学习教程(入门到实践)
- 数据库设计管理课程设计系统设计报告(powerdesign+sql+DreamweaverCS)学生选课管理系统2
- LLMS&隐写术12345
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功