具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
目前,随着3G业务的不断出现以及手机功能的增强,手机的代码量越来越大,给手机的开机启动时间带来了巨大的挑战,
相关技术中,基于A2000PH平台的手机启动慢的主要原因是从NAND FLASH中加载内核到内存特别慢,几乎占了启动使用的99%的时间,而加载完内核后的启动是挺快的。因此,要缩短启动时间,可以通过缩小内核来实现。也就是说,在不删除必要组件的前提下必须减小内核文件体积。本发明实施例即是基于上述设计思想。具体如下:
图1为根据本发明实施例的一种移动终端开机方法流程图,如图1所示,该方法包括:
步骤S102,移动终端的数字基带芯片加载并执行第一级引导程序(BOOT1);
步骤S104,上述BOOT1加载第二级引导程序(BOOT2),并将预先存储在该BOOT2划分的分区空间的开机图片资源文件复制到外界内存中然后转入该BOOT2;
优选地,上述BOOT1采用跳除坏块的坏块管理方案。
步骤S106,上述BOOT2优先读取并显示上述外界内存中的上述开机图片资源文件;
步骤S108,上述BOOT2加载主程序,然后执行该主程序。
本发明上述实施例,将原先的开机显示图片从主程序空间中移除,将其放入第二级引导程序BOOT2的存储空间,加快了从用户按下开机键后的开机图片显示,在提供了较好的用户体验的同时,亦提高了手机的启动速度。
优选地,上述BOOT2加载主程序并开始执行,可以包括以下处理:
预先将上述主程序分别编译链接为多个独立的文件,其中,多个独立的文件之一为包括操作系统内核的操作系统映像文件ThreadXOS.bin;上述BOOT2加载上述ThreadXOS.bin并开始执行;上述ThreadXOS.bin根据需要加载上述多个独立的文件中的部分或全部文件。通过将主程序分为多个独立的文件,避免了BOOT2一次加载的程序太大,从而可以提高BOOT2加载主程序的速度。
优选地,上述多个独立的文件还包括:应用程序文件App.bin和资源文件Resouce.bin。
相应地,在上述实施例优选实施过程中,上述ThreadXOS.bin根据预置优先级加载并执行上述App.bin中的一个或多个应用程序,这样可以先加载优先级高的应用程序,从而提高用户体验;以及ThreadXOS.bin加载并运行需要用到的上述Resouce.bin中的部分或全部资源。
从上述实施例可以看出,主程序通过编译、链接及加载技术,独立编译成三个执行文件,减少了第二级引导程序加载主程序的时间,从而可以达到缩短开机启动时间之目的。
本发明移动终端开机启动方法的一个优选实施例如下:
如图2所示,本实施例中,移动终端的存储空间包括:终端的存储空间分为:DBB片上内存SRAM、数据Cache、指令Cache以及片上引导程序BOOTROM,外部非易失性存储器NAND FLASH和外部主内存SDRAM。
如图3所示,本实施例中引导程序空间的使用如下:NANDFLASH制造厂商保证第一块的非坏块特性,故可以可靠的存放第一级引导程序BOOT1,第二级引导程序BOOT2存放在Block 0至9连续的两个好块中,用于开机显示的图片Start Picture存放在BOOT2之后的连续的两个好块中,由于前面10个物理块的操作在开机使用时,都是读FLASH的操作,所以采用简单的坏块管理方案-跳块处理,这也免除了由于考虑写操作产生动态坏块而采用逻辑寻址和映射的方式的坏块处理方式。采用这种方式可以较快的加载并显示开机图片,大约可以从原来的4秒钟减少到现在的1.5秒钟。具体包括:
①,第一级引导程序(BOOT1)一般很小,只有几十K字节的大小,本实施例中大小为26Kbytes左右,占用NAND FALSH的第一块(即图2中Block0),此处所述Block0块大小为128K Bytes,该块厂家保证其为非坏块;
②,第二级引导程序(BOOT2)占用手机从第二块(即图2中Block1)开始的连续的两个好块;
③,开机显示图片StartPicture紧接着上述BOOT2开始的连续两个好块。
本优选实施例中所述移动终端开机方法具体包括以下处理:
首先将要显示的开机显示的图片资源文件(大约150K Bytes),以下简称Start Picture,从主程序分区中挪出,放在第二级引导程序BOOT2划分的分区空间中;
(1)由数字基带芯片DBB中的BOOTROM CODE加载并执行第一级BOOT1程序,BOOT1的执行文件大小精简为大约26KBytes。
(2)第一级引导程序(BOOT1)加载第二级引导程序(BOOT2)(其执行文件大小约250K Bytes)和复制存放在内存SDRAM中的Start Picture(资源大小约为150K Bytes),然后程序跳转至BOOT2执行。优选的,上述BOOT1采用跳除坏块的坏块管理方案。
其中,如图5所示,本优选实施例中BOOT1模块启动过程包括:
步骤①,移动终端的ARM核初始化以及SDRAM初始化,然后执行步骤②;
步骤②,加载第二级引导程序(BOOT2)并拷贝开机图片至SDRAM主内存,然后执行步骤③;
步骤③,跳转至第二级引导程序被加载的起始地址开始执行。
(3)第二级引导程序BOOT2一开始就从SDRAM里面将图片资源读取并进行开机图片的显示操作,这样就能缩短从开机键按下至显示开机画面的时间。如图6所示,在优选实施过程中,第二级引导程序BOOT2模块启动过程包括:
步骤①,初始化LCD等必要的外设组件接口,然后执行步骤②;
步骤②,从SDRAM中读取由第一级引导程序BOOT1拷贝好的StartPicture数据,并显示开机图片至LCD屏,然后执行步骤③;
步骤③,加载主程序内核ThreadXOs.bin文件至主内存SDRAM,然后跳转到步骤④;
步骤④,由第二级引导程序跳转至主程序内核ThreadXOs.bin开始执行。
(4)通过编译、链接及分散加载的技术,如图4所示,将单个较大的主程序文件拆分为三个文件:操作系统内核以及必要的组件ThreadXOs.bin、应用程序文件APP.bin以及资源文件Resource.bin。将ThreadXOs.bin和App.bin存放在NAND FLASH的BIN CODE分区,而Resource.bin存放在一个独立的分区,将其作为资源文件访问,而无需全部加载和运行。在第二级引导程序BOOT2中只需要加载ThreadXOS.bin并开始执行,此时按键、UI等交互界面可以正常使用;
将主程序划分为多个独立的部分可以通过以下步骤实现:
步骤①,调整编译、链接以及分散加载脚本(Scatter)以便适应多文件的生成和加载。具体包括:
根据目标存储器系统分散加载映像(scatter-loading),Scatter-loading文件是ARM的工具链里面的一个特性,作为程序编译过程中给连接器使用的一个参数,用来指定最终生成的目标映像文件运行时的分布状态。一个复杂的系统可能会把映像分割成几个部分。如图5所示,系统中存在多种类型的存储器,不同的代码部分根据执行性能优化的考虑分布于不同的地方。此时,在scatter-loading文件里,可以给编译出来的各个目标模块指定运行地址。
步骤②,调整系统的分区架构,扩展一个分区用于手机资源文件的存放。
步骤③,修改下载工具以便适应ThreadXOs.bin、APP.bin和Resource.bin文件的下载。
操作系统映像文件ThreadX.bin开始执行,并初始化外设驱动,至此阶段人机交互已经可以正常进行。
上述ThreadXOS.bin,开始加载App.bin进行必要的应用程序的执行,例如网络应用等相关性的应用程序,用户可以根据预置优先级预置那些应用优先级高,然后系统在开机时根据优先级不同加载对应的应用程序。根据各个应用进程的需要访问Resource.bin中的图片资源文件和文件系统分区的文件。其中,由于Resouce.bin只是作为资源文件,不需要完全加载到SDRAM中进行运行使用,譬如里面会存放一些手机UI中使用的图片资源文件等。
需要说明的是,虽然上述给出一种将主程序划分为三个独立部分的实施方式,但并不限于此,在实际应用中也可以有其它的实施方式,例如,可以将上述App.bin根据优先级划分为多个部分,或者,将Resouce.bin根据资源的类型划分为多个部分。
如图7所示,在优选实施过程中,主程序运行步骤包括:
步骤①,主应用程序内核ThreadXOs.bin初始化,然后执行步骤②;
步骤②,初始化键盘等外设驱动接口,然后执行步骤③;
步骤③,据应用程序重要性优先级加载APP.bin应用程序和加载在显示中会用到的Resource.bin的图片资源文件,其中,用户可以根据需要修改应用程序启动优先级,从而达到灵活的启动配置需求。然后跳转到步骤④;
步骤④,执行网络应用、UI等应用程序。
通过这种方式有效的将系统执行文件减少至10M Bytes左右的大小,减少了手机在开机引导加载的文件大小,从而减少了启动时间,有效的加快了手机的开机速度。紧接着加载应用程序,并开始进行必要的应用程序的执行,例如网络应用等相关性的应用程序。
从以上描述可以得知,本优选实施例主要包括如下两大部分:
一、将两级引导程序启动流程进行调整和修改,将开机图片资源由第二级引导程序BOOT2加载调整为第一级引导程序BOOT1进行加载。因为在第一级引导程序中的坏块管理方案采用简单的跳除坏块的管理方式,所以加载的速度较快,效率较高,同时将开机启动使用图片在第二级引导程序BOOT2一开始就执行,加快了开机图片的显示,从而非常有效的提高了用户体验程度。
二、通过编译、链接及分散加载技术将整个主程序分别编译链接生成三个独立的执行文件,那么由第二级引导程序BOOT2进行加载的执行文件减小为原来的1/6左右,即由第二级引导程序到主程序的启动时间减少为原来的大约1/6左右。例如原来启动需要30秒钟左右的时间,现在只需要5秒钟左右。
综合上述优选实施例,用户从按下开机键到看到UI界面以及人机交互操作时间缩短至原来的大约1/5左右,并且不影响手机的正常操作使用,提供较好的用户体验的前提下,提高了手机的启动速度。
图8为根据本发明实施例一种移动终端的结构框图。如图8所示,该移动终端,包括:
数字基带芯片80,用于加载并执行第一级引导程序BOOT1;
第一加载模块82,用于实现上述BOOT1加载第二级引导程序BOOT2,并将预先存储在上述BOOT2划分的分区空间的开机图片资源文件复制到外界内存中,然后转入上述BOOT2;优选实施过程中上述BOOT1采用跳除坏块的坏块管理方案。
图片文件显示模块84,用于实现上述BOOT2优先读取并显示上述外界内存中的上述开机图片资源文件;
第二加载模块86,用于实现上述BOOT2加载主程序,然后执行上述主程序。
优选地,如图9所示,该第二加载模块还可以包括:
编译子模块860,用于预先将上述主程序分别编译链接为多个独立的文件,其中,上述多个独立的文件之一为包括操作系统内核的操作系统映像文件ThreadXOS.bin;
执行子模块862,用于实现上述BOOT2加载上述ThreadXOS.bin并开始执行,以及实现上述ThreadXOS.bin根据需要加载上述多个独立的文件中的部分或全部文件。
在优选实施过程中,上述多个独立的文件还可以包括以下至少之一:应用程序文件App.bin、资源文件Resouce.bin。
上述执行子模块862还用于实现上述ThreadXOS.bin根据预置优先级加载并执行上述App.bin中的一个或多个应用程序以及实现上述ThreadXOS.bin加载并运行需要用到的上述Resouce.bin中的部分或全部资源。
采用上述移动终端将原先的开机显示图片从主程序空间中移除,放入第二级引导程序的存储空间,加快了从用户按下开机键后的开机图片显示,加快了人机交互的显示和操作从而有效缩短开机启动时间,增强了用户体验效果。
需要注意的是,上述移动终端中的各模块相互结合的优选工作方式具体可以参见上述方法实施例的描述,此处不再赘述。
综合上述方法实施例和移动终端实施例,通过对基于A2000PH平台的ThreadX操作系统进行精简,并将OS执行文件、网络应用、应用程序通过ADS链接、编译和加载技术,分割成独立的多个文件,分为重要任务和非重要任务,进行分阶段加载和执行,解决了相关技术中基于A2000PH平台的ThreadX系统由于通常是经过二次引导启动,整个BIN CODE的映像文件加载完成后,才开始启动各个应用程序的运行(譬如执行代码、网络应用以及各种应用程序)而导致存在较长的启动时间的问题。从而大大提高了移动终端关键应用程序的启动速度。对于提高用户体验等用户感受的移动终端的快速启动有现实的应用背景。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。