论文部分内容阅读
随着移动互联网的迅猛发展,智能终端的广泛应用,尤其是2007年第一代苹果智能手机IPHONE2G以及嵌入式开放手机应用平台Android系统的发布,给包括移动互联网、软件开发、工业控制、手机制造在内的许多行业带来了新的机遇和挑战[1-2]。嵌入式领域的发展由来已久,但Android是一个新兴的系统,对该系统相关的结构分析、系统移植、系统开发以及应用开发等各个方面都处于起始阶段,国内外相关的资料较少,加之平台的开放性又使得分析、移植、裁剪和定制系统变得异常困难。另一方面,Android系统的底层基于Linux内核,中间层包含Dalvik虚拟机,上层有基于JAVA的应用框架。复杂的多层结构使得Android系统在启动过程中要装载多达1000多个类,加载大量的资源,初始化Android Runtime,启动22个本地服务和40个Android服务,占据大量的时间。系统启动的速度也因此变得异常缓慢,影响用户体验,在工业控制、数字电视等领域表现得尤为明显。为了解决这些问题,本文在现有ARM平台S5PV210上做了Android系统的移植和优化。移植的内容包括Linux内核、Linux设备驱动和Android根文件系统三个部分。其中,驱动移植部分主要包括对FLASH、LCD、Touchscreen、Keyboard等设备驱动的移植。在Android系统的启动速度优化方面,我们做了两种尝试,一种是基于内核方式的快速启动,一种是基于Uboot方式的快速启动。两种方式快速启动的基本原理相似,都是将系统状态以固定的格式组织成系统镜像,保存到非易失性外部存储器中,在启动时通过镜像将系统状态恢复至保存时的状态。两种方式的区别在于,内核方式快速启动技术中,由于镜像格式的特殊限制,在恢复系统状态之前,除了要进行基本的板级初始化,还要经历内核的初始化,才能建立起恢复系统状态所需的环境。而在Uboot方式中,新的镜像格式的设计,使得在进行状态恢复之前,只需进行基本的板级初始化,毋须再经历内核的初始化过程。因此,在优化的效率上,Uboot方式表现出的效果更加明显,从64.12%再次提升到83%,实现在5秒钟以内启动Android系统的目的。