上层APP调用底层硬件驱动过

发布时间:2021-10-24 17:36:58

APP应用程序->应用框架层->硬件抽象层-> 硬件驱动程序


一、硬件驱动层


进入kernel/drivers文件夹中,创建一文件夹,放入驱动程序。包括头文件,C文件,Makefile,Kconfig。同时对drivers下的Makefile跟Kconfig进行相应的添加,这样配置编译选项后,即可编译。编译完后,可以在/dev,/proc,/sys/class中得到相应的文件,其中dev下的文件即为该设备文件。

二、硬件抽象层


进入源码根目录下的hardware/libhardware/include/hardware新建头文件,在hardware/libhardware/modules中新建目录,在该目录下放入C文件调用设备文件(open函数打开/dev/XXX设备文件),最后在该目录下创建Android.mk文件,编译后得到XXX.default.so文件。重新打包后,system.img就包含我们定义的硬件抽象层模块XXX.default。

三、应用框架层


进入frameworks/base/services/jni目录,创建com_android_server_XXXService.cpp文件(#include 以此调用抽象层方法 ),实现jni方法。com_android_server前缀表示的是包名,表示硬件服务XXXService是放在frameworks/base/services/java目录下的com/android/server目录的。对同目录下的onload.cpp文件进行修改,这样,在Android系统初始化时,就会自动加载该JNI方法调用表。同时修改该目录下的Android.mk。

进入到frameworks/base/core/java/android/os目录,新增IXXXService.aidl接口定义文件,该文件提供功能函数。在frameworks/base目录下的Android.mk添加该aidl文件。进入frameworks/base/services/java/com/android/server目录,新增XXXService.java(主要是通过调用JNI方法来提供硬件服务),修改同目录的SystemServer.java文件,在ServerThread::run函数中增加加载HelloService的代码。

这样,重新打包后的system.img系统镜像文件就在Application Frameworks层中包含了我们自定义的硬件服务XXXService了,并且会在系统启动的时候,自动加载XXXService。这时,应用程序就可以通过Java接口来访问Hello硬件服务了。

四、APP应用层


用eclipse编写应用层的APP。程序通过ServiceManager.getService("XXX")来获得XXXService,接着通过IXXXService.Stub.asInterface函数转换为IXXXService接口。然后把出R文件的其他文件都拷到/packages/experimental下,在该APP目录下创建Android.mk文件。编译后安装该生成的apk即可使用该程序调用底层硬件驱动。


大概整个过程就这样,上层app调用框架层的java接口,java接口通过jni调用硬件抽象层,硬件抽象层则通过打开设备文件调用底层硬件驱动。

原文链接:https://blog.csdn.net/wuyusheng314/article/details/55667392

相关文档

  • 一肚子坏水的猱美文
  • 超级可爱的狐狸简笔画原创教程步骤
  • CSS样式一般要全局定义的内容
  • W5500上传温湿度到oneNET平台
  • 2020吉林四平中考时间延期公告:7月27日~7月30日
  • 半日排毒法
  • 简单手抄报版面设计图
  • 沉着,英勇的反义词
  • ipvsadm命令参考
  • 交通安全手抄报图片整洁漂亮
  • 快贷最多逾期几天
  • 搞笑沙雕句子配图
  • 16岁少年圆珠笔画出大作圆珠笔画入门教程?
  • 中学劳动节作文
  • 精华母亲话题作文300字汇编6篇
  • 半夜地震自救的有关事项
  • 名人开学季读书名言寄语
  • 精神病患者犯罪承担法律责任吗
  • 4种食物缓解工作疲劳
  • onlytwo真空气垫bb霜怎么用
  • 银行网点竞聘上岗演讲稿五篇
  • 中情局水刑中情局酷刑报告有哪些最骇人听闻的段落
  • 公司行政秘书个人工作总结及计划
  • 《JavaScript Dom编程艺术》---总结(一)JavaScript语法
  • 以母爱或父爱为话题的作文
  • BERT基础(二):Transformer 详解
  • 从小公司跳槽到腾讯,靠着刷多套面试题,成功拿到新浪T3.1Offer
  • 使用vs(visual studio code)写python代码遇到的import requests失败问题
  • 黑坑钓鱼的技巧
  • 高中三分钟的演讲稿
  • 猜你喜欢

    电脑版