Android系统上层应用能访问底层硬件的简要原理

Android系统的应用程序是用Java语言编写的,而硬件驱动程序是用C语言来实现的,那么,Java接口如何去访问C接口呢?

Android系统架构:Application-Application FrameWork-系统运行库-linux内核


linux内核层:Android系统基于linux内核,这一层为Android系统提供的各种硬件提供了驱动,如显示驱动,音频驱动,照相机驱动等。
系统运行库层:这一层通过C/C++库来为Android系统提供主要特性支持,如SQLite提供了数据的支持,还有Android运行时库,提供一些核心库,能使开发者使用java来编写Android应用,另外,Android运行时库还包含了Dalvik虚拟机(Android系统5.0以后改为ART运行环境)
应用程序框架层:主要提供构建应用程序提供的各种API
应用层:应用程序


Android系统为我们自己的硬件增加了一个硬件抽象层模块(HAL),HAL通过接口访问linux内核驱动程序,在硬件抽象层编写JNI方法,Android系统的Application Framework层提供 硬件服务 调用JNI方法,进而调用硬件抽象层接口访问硬件,在Android的Application Frameworks层增加API接口,Application层增加了一个内置的应用程序,应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务,从而访问硬件。

例如: 点击Read按钮,可以从HelloService(硬件服务)中读取硬件寄存器val的值;点击Clear按钮,可以清空文本框的值;在文本框中输入一个数值,再点击Write按钮,便可以将这个值写入到硬件寄存器val中去

JNI:是Java Native Interface的缩写,提供了若干的 API 实现了Java和其他语言的通信(主要是 C & C++

猜你喜欢

转载自blog.csdn.net/KLsmile/article/details/79415083
今日推荐