Android驱动开发
来源:互联网 发布:史记的地位 知乎 编辑:程序博客网 时间:2024/04/30 19:01
Android是基于Linux的操作系统,底层是Linux内核层(Linux2.6, Linux3.4等),android使用了Linux操作系统的内核和驱动,其中驱动部分除了Linux的设备驱动,android还增加了专用驱动(例如Binder实现进程间通信)。
应用程序要和硬件设备打交道,例如控制硬件设备的LED灯,要经过几个系统架构层:Framework层、JNI层、HAL层、内核驱动层,才能控制到LED灯。
Android系统的架构层(摘自网络图片)如下:
从下到上各层依次是:
1. Linux内核层:Linux内核和驱动模块。Linux的设备驱动有3类,字符设备驱动、块设备驱动、网络接口驱动。Android系统增加了专用驱动,该部分和硬件设备无关是纯软件的东西,如Ashmem(匿名共享内存),Logger(日志驱动),Binder(基于 OpenBinder 框架的一个驱动)。所以android底层的Linux操作系统和标准Linux有一点小差异,但是在设备驱动实现方面和标准Linux一样。
主要驱动罗列如下:
1)设备驱动:
Frame Buffer:帧缓冲,实现显示驱动
Event:输入设备驱动;
内存驱动:基于MTD;
ALSA(Advanced Linux Sound Architecture):音频驱动;
V412摄像头:视频驱动;
蓝牙设备驱动;
WiFi设备驱动。
2)专有驱动:
Ashmem:匿名共享内存;
Logger:日志驱动;
Binder:进程间通信驱动;
Power Management:电源管理模块;
Low Memory Killer:低内存管理器。
2. HAL层:硬件抽象层,将Android Framework和内核隔离,Android Framework的开发可以不用考虑太多内核驱动程序。HAL没有开源,HAL层的存在主要是google为了保护硬件厂商的驱动程序,不用开源而保密硬件规格。
3. Libraries和Runtime层:这层是Native层,提供动态库、android runtime运行环境、Dalvik虚拟机等,大部分是C/C++实现。
应用程序要和硬件设备打交道,例如控制硬件设备的LED灯,要经过几个系统架构层:Framework层、JNI层、HAL层、内核驱动层,才能控制到LED灯。
Android系统的架构层(摘自网络图片)如下:
从下到上各层依次是:
1. Linux内核层:Linux内核和驱动模块。Linux的设备驱动有3类,字符设备驱动、块设备驱动、网络接口驱动。Android系统增加了专用驱动,该部分和硬件设备无关是纯软件的东西,如Ashmem(匿名共享内存),Logger(日志驱动),Binder(基于 OpenBinder 框架的一个驱动)。所以android底层的Linux操作系统和标准Linux有一点小差异,但是在设备驱动实现方面和标准Linux一样。
主要驱动罗列如下:
1)设备驱动:
Frame Buffer:帧缓冲,实现显示驱动
Event:输入设备驱动;
内存驱动:基于MTD;
ALSA(Advanced Linux Sound Architecture):音频驱动;
V412摄像头:视频驱动;
蓝牙设备驱动;
WiFi设备驱动。
2)专有驱动:
Ashmem:匿名共享内存;
Logger:日志驱动;
Binder:进程间通信驱动;
Power Management:电源管理模块;
Low Memory Killer:低内存管理器。
2. HAL层:硬件抽象层,将Android Framework和内核隔离,Android Framework的开发可以不用考虑太多内核驱动程序。HAL没有开源,HAL层的存在主要是google为了保护硬件厂商的驱动程序,不用开源而保密硬件规格。
3. Libraries和Runtime层:这层是Native层,提供动态库、android runtime运行环境、Dalvik虚拟机等,大部分是C/C++实现。
4. Framework层:Application层的框架,大部分是Java代码。为应用程序提供API,例如UI程序需要的各种控件,和组件。
5. Application层:Java开发的应用程序,主要是用户界面,实现人机交互,还可以使用Framework层的API。
网上关于android系统开发的经典博文较多,大多是在模拟器环境下测试驱动开发,接下来写几篇文章记录一下在全志cubieboard开发板上测试的应用程序控制硬件设备的过程,以备忘和分享测试方法。
目录:
一、Android驱动开发-- 1.内核driver层
二、Android驱动开发-- 2.测试驱动程序
三、Android驱动开发-- 3.HAL层
四、Android驱动开发-- 4.JNI层
五、Android驱动开发-- 5.应用层
接下来,开始第一节:Android驱动开发-- 1.内核driver层。
1 0
- android驱动开发
- android驱动开发
- android wifi驱动开发
- Android HAL驱动开发
- Android中驱动开发
- android 驱动开发一
- android驱动的开发
- android 驱动开发书籍
- Android 设备驱动开发
- 驱动开发-android
- Android驱动开发全过程
- Android 驱动开发系列
- Android 驱动开发
- Android驱动开发
- Android 驱动开发1
- Android驱动开发-底层驱动开发
- Android 开发 --- 底层驱动开发
- 1.1 Android 驱动开发-内核驱动
- App版本的更新
- 干货首发,可以清理,带动画的自定义控件CuteEditText
- Swift中的NSNumber
- MySQL存储过程
- Web开发人员应当知道的15个开源项目
- Android驱动开发
- Ubuntu15 交叉编译器的配置
- 【MySQL】1093 You can't specify target table 'table name' for update in FROM clause
- 郑大第九届校赛正式赛(1819: 加加加!(油))
- registerNib: 与 registerClass: 的区别
- 哪些JavaScript IDE最好用?
- linux shell mysql 数据库主从同步状态检查告警
- OpenCV -- VideoCapture
- 高端技巧:如何使用#define定义变量