中易网

求大神讲解一下安卓系统移植与底层驱动修改的一些知识

答案:1  悬赏:10  
解决时间 2021-10-06 19:39
求大神讲解一下安卓系统移植与底层驱动修改的一些知识
最佳答案
在各个厂商开发基于Android系统的产品的时候,虽然有的时候也需要修改Android的框架,但是移植是其中的主要工作。
Android系统本身是一个庞大的系统,移植并不需要精通Android的每一个部分,需要考虑的是Android系统的硬件抽象层(HAL)和Linux中的相关设备驱动程序。如图1-3所示。


图1-3 Android移植的概念

基于Android系统的手机,包括G1、G2、Hero和Nexus One,其他的手机厂商也推出了几款Android手机。这些手机所使用的处理器和各种外围硬件各不相同,但是其使用的大部分Android系统的软件都是相同的(包括本地框架、虚拟机、Java框架和Java应用等部分)。

移植的目的就是为了改动较小的内容,支撑较为庞大上层的系统。同时由于硬件抽象层具有标准的接口,在各个不同的平台的实现中可以互相参考,虽然具体实现的内容不同,但是思路类似,可以相互参考。
Android系统的移植工作的目的是为了在特定的硬件上运行Android系统。在移植的过程中,把握关键要点,减少工作量是一个重要的方面。从工作的角度,通常的方法为,首先要熟悉硬件抽象层的接口,其次要集成和复用已有的驱动程序,主要的工作量在硬件抽象层的实现中。为了更好地理解和调试系统,也应该适当地了解上层对硬件抽象层的调用情况。
移植方面主要的工作有两个部分:
Linux驱动
Android系统硬件抽象层
Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。
Android移植的主要工作如图1-4所示。


图1-4 Android移植的主要工作

在具有了特定的硬件系统之后,通常在Linux中需要实现其驱动程序,这些驱动程序通常是Linux的标准驱动程序,在Android平台和其他Linux平台基本上是相同的。主要的实现方面是Android系统中的硬件抽象层(Hardware Abstract Layer),硬件抽象层对下调用Linux中的驱动程序,对上提供接口,以供Android系统的其他部分(通常为Android本地框架层)调用。

提示:Android硬件抽象层的接口是本地移植层的接口,不属于标准API,不具有向前或者向后兼容性。
在Android系统需要移植的内容,主要包含了以下的各个部分:
显示部分(Display)
包括framebuffer驱动+Gralloc模块(可选择是否实现)
用户输入部分(Input)
包括Event驱动+EventHub(Android标准内容)
多媒体编解码(Codec)
包括硬件Codec驱动+Codec插件(如OpenMax)
3D加速器部分(3D Accelerator)
包括硬件OpenGL驱动+OpenGL插件
音频部分(Audio)
包括Audio驱动+Audio硬件抽象层
输出部分(Video Out)
包括显示驱动+Overlay硬件抽象层
摄像头部分(Camera)
包括Camera驱动(通常是v4l2)+Camera硬件抽象层
电话部分(Phone)
Modem驱动程序+RIL库
全球定位系统部分(GPS)
包括GPS驱动(通常为串口)+GPS硬件抽象层
无线局域网部分(WIFI)
包括Wlan驱动和协议+WIFI的适配层(Android标准内容)
蓝牙部分(Blue Tooth)
包括BT驱动和协议+BT的适配层(Android标准内容)
传感器部分(Sensor)
包括Sensor驱动+Sensor硬件抽象层
震动器部分(Vibrator)
包括Vibrator驱动+Vibrator硬件抽象层(Android标准内容)
背光部分(Light)
包括Light驱动+ Light硬件抽象层
警告器部分(Alarm)
包括Alarm驱动和RTC系统+用户空间调用(Android标准内容)
电池部分(Battery)
包括电池部分驱动+电池的硬件抽象层(Android标准内容)
Android中具有很多组件,但并不是每一个部件都需要移植,对于一些纯软的组件,就没有移植的必要。对于一些部件,例如浏览器引擎,虽然需要下层网络的支持,但是并非直接为其移植网络接口,而是通过无线局域网或者电话系统数据连接来完成标准的网络接口。
Android的移植主要可以分成几个类型:基本图形用户界面(GUI)部分,包括显示部分和用户输入部分;和硬件相关的加速部分,包括媒体编解码和OpenGL;音输入输出环节,包括音频,输出和摄像头部分;连接部分,包括无线局域网,蓝牙,GPS;电话部分;附属部件:包括传感器、背光、振动器等。
除了以上的移植方面,电源管理也是非常重要的一个方面,它和Android的各个子系统都有关系。
Android系统主要需要移植部件如图1-5所示。


图1-5 Android系统主要需要移植部件

对于大部分子系统,硬件抽象层和驱动程序都需要根据实际系统的情况实现,例如:传感器部分、音频部分、部分、摄像头部分、电话部分。也有一些子系统,硬件抽象层是标准的,只需要实现Linux内核中的驱动程序即可,例如:输入部分、振动器部分、无线局域网部分、蓝牙部分等。对于有标准的硬件抽象层的系统,有的时候通常也需要做一些配置工作。

时至今日,随着Android系统的发展,它已经不仅仅是一个移动设备的平台,也可以用于消费类电子和智能家电,例如:上网本、电子书、数字电视、机顶盒、固定电话等。在这些平台上,通常需要实现比移动设备更少的部件。一般来说,基本用户界面部分(包括显示和用户输入)是需要移植的,其他部分是可选的。例如:电话系统、振动器、背光、传感器等一般不需要在非移动设备系统来实现;对于一些固定位置设备通常也不需要实现GPS系统。

图片无法显示,见谅
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现当代有多少革命烈士?举些例子加以说明。
宝宝14天今天老是要吃奶,白天几乎一小时一次
哺乳期间能吃保健品吧?
红酒可以放冰箱里吗?
supra鞋上写着made in china或者made in vith
请问从东莞樟木头到东莞市汽车总站(万江)有
问问看内墙防霉涂料价格是多少?
广州哪里有得买湖南郴州特产东江鱼,即食的那
床垫什么牌子好呢,谁用过比较好点的?床垫是
做了电波拉皮除皱后几天可以看见效果
手机搜不到360免费wifi
深圳定做衣柜哪个品牌的好?
天津哪有羽毛球拍穿线地点
天津市塘沽区哪里能办护照?
听说青岛有一家专做中式连锁快餐品牌,谢谢!
推荐资讯
户县有没有去眉县的车
有没有检测壁纸的甲醛的仪器,
侦探们的镇魂歌的问题:白马什么时候在ID上沾
淮安批量采购轻质混凝土板材 蒸压砖AAC屋面板
星座运势
尿毒症治好需求多少钱
宝宝23天大,黄疸值134,是怎么样的黄疸呢?
从天津静海到天津东丽区欢乐谷的 具体行程路
丹东银行锦绣小微支行怎么去啊,有知道地址的
冷笑话【关于蚊子】`````
尿常规检测只有尿结晶超标
北京公积金提取多长时间?如何解释这个呢
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?