发明内容
本发明所要解决的技术问题是提供一种嵌入式系统引导程序的实现方法,使得配置该引导程序的嵌入式系统能够适应多种硬件设备,并且能够可靠快速加载可执行文件。
相应的,本发明还提供了一种嵌入式系统引导装置和便携式电子设备,以保证上述方法在实际中的应用。
为了解决上述问题,本发明公开了一种嵌入式系统引导程序的实现方法,包括:
对嵌入式系统环境进行基础初始化;
检测是否需要更新启动参数;若是,则从启动参数更新接口获取新的启动参数,并保存到启动参数存储器;
依据启动参数对硬件设备进行初始化;
对需要加载执行的可执行文件进行校核检测;
将通过校核检测的可执行文件复制到内存并执行,完成系统引导过程。
优选的,在依据启动参数对硬件设备进行初始化步骤之后还包括:
判断是否需要加载目标可执行文件,若是,则从U盘下载目标可执行文件。
优选的,所述从U盘下载可执行文件的过程包括:
启动U盘系统接口,其中所述U盘系统接口包括通用串行接口模块和设备固件升级协议通讯软件模块;
从U盘下载所述可执行文件,并保存到文件存储器。
优选的,可执行文件以原件和备份件二种形式保存在文件存储器中,所述对可执行文件进行校核检测的过程包括:
检测被加载的可执行文件是否正确,若是,则结束校核检测过程;否则,继续后续步骤;
检测文件存储器上备份的可执行文件是否正确,若是,则利用备份文件修复原文件,结束校核检测过程;否则,执行从U盘下载可执行文件的过程,然后再重复校核检测过程,或放弃对该可执行文件的加载。
优选的,所述硬件设备为内存芯片、通信接口或/和文件存储器;其中,所述通信接口为U盘系统接口。
优选的,所述文件存储器采用NAND闪存;所述启动参数存储器采用电子可擦除式只读存储器或NOR闪存。
优选的,检测是否需要修改启动参数、是否需要加载目标可执行文件的方法为:
在所述嵌入式系统引导过程中,检测是否有键盘模块的按键中断事件,并判断是否为预设定的修改启动参数按键,或加载目标可执行文件按键。
优选的,所述检测是否需要修改启动参数的方法为:
在所述嵌入式系统引导过程中,启动U盘系统接口,检测U盘上是否有新的启动参数文件;若是,则从U盘下载新的启动参数文件,并保存至所述启动参数存储器。
依据本发明另一实施例,还公开了一种嵌入式系统的引导装置,包括:基础初始化单元、装载单元、硬件初始化单元、触发判断单元、检测校核单元、U盘系统单元、引导程序和启动参数存储器、文件存储器,其中:
基础初始化单元用于对嵌入式系统环境进行基础初始化;
装载单元用于将正确的可执行文件复制到内存执行;
硬件初始化单元用于从启动参数存储器读取启动参数,并对内存芯片、文件存储器以及U盘系统单元进行初始化;
触发判断单元包括触发判断模块和启动参数更新接口模块,其中,触发判断模块用于判断是否需要更新启动参数,或请求加载目标可执行文件;启动参数更新接口模块用于接收用户通过串口手动输入的启动参数,或请求U盘系统单元下载新的启动参数文件,并保存至所述启动参数存储器;
检测校核单元用于检测被加载的可执行文件是否正确;
U盘系统单元用于从U盘下载新的启动参数文件或可执行文件;
引导程序和启动参数存储器用于存储所述嵌入式系统的引导程序和启动参数;
文件存储器用于存储可执行文件。
优选的,所述U盘系统单元包括通用串行接口模块和设备固件升级协议通讯软件模块,其中:
所述通用串行接口模块用于提供通用串行接口通道;
所述通讯软件模块用于将U盘中的可执行文件从通用串行接口通道下载并保存至所述文件存储器,或将U盘中的启动参数文件从通用串行接口通道下载并保存至所述启动参数存储器。
优选的,检测校核单元对可执行文件的校核检测流程包括:
检测被加载的可执行文件是否正确,若是,则结束校核检测过程;否则,继续后续步骤;
检测文件存储器上备份的可执行文件是否正确,若是,则利用备份文件修复原文件,结束校核检测过程;否则,请求U盘系统单元从U盘下载可执行文件,然后再重复对可执行文件的校核检测过程,或放弃对该可执行文件的加载。
优选的,所述文件存储器采用NAND闪存;所述引导程序存储器采用只读存储器、启动参数存储器采用电子可擦除式只读存储器,或引导程序和启动参数存储器采用NOR闪存。
依据本发明另一实施例,还公开了一种便携式电子设备,所述便携式电子设备配置有嵌入式系统,所述嵌入式系统的引导装置包括:基础初始化单元、硬件初始化单元、触发判断单元、检测校核单元、U盘系统单元、装载单元、引导程序和启动参数存储器、文件存储器,其中:
基础初始化单元用于对所述便携式电子设备的嵌入式系统环境进行基础初始化;
硬件初始化单元用于从启动参数存储器读取启动参数,并对内存芯片、文件存储器以及U盘系统单元进行初始化;
触发判断单元包括触发判断模块和启动参数更新接口模块,其中,触发判断模块用于判断用户是否点击相应的按钮请求更新启动参数,或请求加载目标可执行文件;启动参数更新接口模块用于获取新的启动参数,并保存至所述启动参数存储器;
检测校核单元用于检测被加载的可执行文件是否正确;
U盘系统单元包括通用串行接口模块和设备固件升级协议通讯软件模块,用于从U盘下载可执行文件;
引导程序和启动参数存储器用于存储所述嵌入式系统的引导程序和启动参数;
文件存储器用于存储可执行文件。
与现有技术相比,本发明具有以下优点:
现有技术的嵌入式系统引导程序是与具体的硬件设备相关的,若升级系统的存储器、内存等芯片,必须同时升级引导程序;另外,系统对可执行文件不加检测就加载运行;本发明方案通过现场配置启动参数,使系统可以适应不同型号的存贮器和内存等硬件设备;对被可执行文件的校验检测后才加载运行,可以避免因可执行文件出现问题而引起的系统瘫痪,改善了系统的可靠性。
具体实施方式
在结合附图和具体实施方式对本发明作进一步详细的说明之前,首先介绍一下与电子芯片有关的几个概念。
电子可擦除式只读存储器(EEPROM,Electrically Erasable ProgrammableRead Only Memory)是一种非易失存储器,可以反复擦写。擦写时以字节(byte)为单位改写,是早期比较常用的数据和程序载体。
闪存(Flash存储器)是一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,目前已经逐步取代其他半导体存储元件,如只读存储器(ROM,Read Only Memory)、可擦除可编程式只读存储器(EPROM,Erasable Programmable ROM)、EEPROM等,目前已成为嵌入式系统中的主要数据和程序载体。
NOR闪存(NorFlash)是早期U盘等电子设备所用的闪存芯片,缺点是容量相对较小,价格高,优点是各型号的芯片访问方法一样,目前多用于存储小数据量的信息。
NAND闪存(NandFlash)也是一种闪存,是采用NAND结构技术的非易失存储器,具有ROM的特点,存储在该芯片中的数据可在断电情况下维持10年不丢失;优点是容量大,价格低;缺点是各个型号的芯片访问方法不一样;目前一般厂商都是使用NAND类型的芯片作为U盘、手机等电子设备的存储载体。
DFU(Device Firmware Upgrade),本意指器件固件升级协议,在芯片行业,指的是通过通用串行总线(USB,Universal Serial Bus)接口来升级器件固件的协议,该协议是USB规范的一部分,详见“USB Device Firmware UpgradeSpecification,Rev.1.0”。
参照图1-1,示出了本发明一种嵌入式系统引导程序的实现方法第一实施例流程图,具体包括以下步骤:
步骤101:对嵌入式系统环境进行基础初始化;
在本发明方法实施例的优选实施例中,系统的引导分为三个主要步骤:一是系统的基础初始化;二是对外部硬件设备进行配置和初始化;三是将包括系统文件和应用文件在内的可执行文件装入内存执行。系统的基础初始化部分用汇编语言实现,后两个步骤用高级语言(如C语言)实现。
基础初始化包括设置矢量跳转表,为执行后续的函数设置一个用户堆栈USER_STACK,对中断控制器进行初始化等,然后转入后续C语言运行部分。
步骤102:检测用户是否需要更新启动参数;若是,则转步骤103;否则,转步骤104;
检测用户是否需要更新启动参数的方法为:在所述嵌入式系统引导程序的C语言运行部分,检测是否有键盘模块的按键中断事件,并判断是否为预设定的修改启动参数按键,如“*”键。
步骤103:获取用户新输入的启动参数,并保存到启动参数存储器;
其中,在本发明方法实施例的优选实施例中,选用EEPROM作为启动参数存储器,与选用价格相对很高的NorFlash相比,可以降低硬件成本。
步骤104:依据启动参数初始化硬件设备;
所述硬件设备包括内存芯片、文件存储器或/和通信接口;其中,所述通信接口采用U盘系统接口,下面以文件存储器为例说明其初始化过程:
首先将全局变量和硬件系统的信息复位,然后从EEPROM中获取文件存储器的配置信息,对存储器进行初始化。
步骤105:判断是否需要加载目标可执行文件,若是,则转步骤106;否则,转步骤107;
需要说明的是,步骤105是一个可选的步骤,其作用在于:为相对封闭的嵌入式系统提供一个增加新的应用程序的接口,改善现有技术嵌入式系统难于更新、扩充的问题。
其中,判断是否需要加载目标可执行文件的方法为:在系统引导过程中,检测是否有键盘模块的按键中断事件,并判断是否为预设定的加载目标可执行文件按键,如“#”键。
步骤106:从U盘下载可执行文件;
需要说明的是,步骤106也是一个可选的步骤,其作用有2个:一是下载包括可执行文件在内的新应用程序;二是下载没有通过校核检测的存储器上的可执行文件。从而可以解决不方便从电脑、或网络获得系统文件或应用程序的便携式电子设备的升级、更新、或扩充问题,改善了嵌入式系统相对比较封闭的缺点。
从U盘下载可执行文件的过程包括:
启动U盘系统接口,包括通用串行接口模块(USB)和设备固件升级协议通讯软件模块(DFU);
DFU模块通过USB模块提供的通用串行接口通道,从U盘下载所述可执行文件,并保存到所述可执行文件存储器。
步骤107:对需要加载执行的可执行文件进行校核检测;
参照图2所示,校核检测可执行文件的优选方法包括:
1071:检测需要加载执行的可执行文件是否正确?若是,则结束校核检测流程;否则,转步骤1072;
本优选实施例的文件存储器采用NAND闪存,并运用NAND闪存的存储校核技术判断可执行文件是否正确。
1072:文件存储器上备份的可执行文件是否正确?若是,则转步骤1073;否则,转1074;
可执行文件以原件和备份件二种形式保存在可执行文件存储器,当原件未通过检测时,运用NAND闪存的存储校核技术,判断备份件是否正确。
1073:利用备份文件修复原文件,结束校核检测流程;
1074:从U盘下载可执行文件;
从U盘下载可执行文件的流程参见步骤106;
1075:从U盘下载的可执行文件是否正确?若是,则结束校核检测流程;否则,转步骤1076;
1076:报告错误信息,取消加载。
采用NAND闪存作为文件存储器,运用NAND闪存的存储校核技术和备份技术,配合DFU技术,可进一步增强系统可靠性,避免因可执行文件出现问题而引起整个系统瘫痪。
步骤108:将通过校核检测的可执行文件复制到内存并执行,完成系统引导过程。
参照图1-2,示出了本发明一种嵌入式系统引导程序的实现方法第二实施例流程图,具体包括以下步骤:
步骤201:对嵌入式系统环境进行基础初始化;
步骤202:启动U盘系统,检测是否有新的启动参数文件;若是,则转步骤203;否则,转步骤204;
步骤203:从U盘下载新的启动参数文件,并保存到启动参数存储器;
步骤204:依据启动参数初始化硬件设备;
步骤205:判断是否需要加载目标可执行文件,若是,则转步骤206;否则,转步骤207;
步骤206:从U盘下载可执行文件;
步骤207:对需要加载执行的可执行文件进行校核检测;
步骤208:将通过校核检测的可执行文件复制到内存并执行,完成系统引导过程。
参照图3,示出了本发明一种嵌入式系统引导装置实施例结构框图,具体包括:
单元31:基础初始化单元,用于对嵌入式系统环境进行基础初始化;
单元32:硬件初始化单元,用于从启动参数存储器37获取启动参数,并对内存芯片、文件存储器38以及U盘系统单元35进行初始化;
单元33:触发判断单元,包括触发判断模块331和启动参数更新接口模块332,其中,触发判断模块331用于判断是否需要更新启动参数,或请求加载目标可执行文件;启动参数更新接口模块332用于接收用户通过串口手动输入的启动参数,或请求U盘系统单元下载新的启动参数文件,并保存至所述启动参数存储器37;
单元34:检测校核单元,用于检测被加载的可执行文件是否正确;
其中,检测校核单元34对可执行文件的校核检测方法为:
检测被加载的可执行文件是否正确,若是,则结束检测校核过程;否则,继续后续步骤;
检测文件存储器38上备份的可执行文件是否正确,若是,则利用备份文件修复原文件,结束校核检测过程;否则,交U盘系统单元35执行从U盘下载可执行文件的过程,然后再重复对可执行文件的校核检测过程,或放弃对该可执行文件的加载。
单元35:U盘系统单元,包括启动通用串行接口模块(USB)和设备固件升级协议通讯软件模块(DFU),用于从U盘下载可执行文件或新的启动参数文件;其中,U盘系统单元下载可执行文件,或新的启动参数文件的流程包括:
DFU模块将U盘中的可执行文件下载并保存至文件存储器38,或将U盘中的新的启动参数文件下载并保存至启动参数存储器37。
单元36:装载单元,用于将通过校核检测的可执行文件从文件存储器38复制到内存执行;
单元37:引导程序和启动参数存储器,用于存储所述嵌入式系统的引导程序和启动参数;其中,引导程序存储器采用ROM、启动参数存储器采用EEPROM,或引导程序和启动参数存储器采用NorFlash。
单元38:文件存储器,用于存储可执行文件;其中,文件存储器采用NAND闪存;
所述装置的优选工作流程为:
基础初始化单元31对嵌入式系统环境进行基础初始化;
触发判断单元33检测是否有按键中断事件请求更新启动参数;若是,则获取用户新输入的启动参数,并存储至所述启动参数存储器37;
硬件初始化单元32从启动参数存储器37读取启动参数,并对内存芯片、文件存储器38和U盘系统单元35进行初始化;
触发判断单元33检测是否有按键中断事件请求加载目标可执行文件,若是,则请求U盘系统单元35从U盘下载可执行文件;
检测校核单元34对需要装入内存执行的可执行文件进行校核检测;
装载单元36将检测校核单元34检测通过的可执行文件从文件存储器38复制到内存并执行,完成系统引导过程。
本发明实施例还公开了一种便携式电子设备,所述便携式电子设备配置有嵌入式系统,该嵌入式系统的引导装置包括:
单元31:基础初始化单元,用于对嵌入式系统环境进行基础初始化;
单元32:硬件初始化单元,用于从启动参数存储器37获取启动参数,并对内存芯片、文件存储器38以及U盘系统单元35等硬件设备进行初始化;
单元33:触发判断单元,包括触发判断模块和启动参数更新接口模块,其中,触发判断模块用于判断是否需要更新启动参数,或请求加载目标可执行文件;启动参数更新接口模块用于接收用户通过串口手动输入的启动参数,或请求U盘系统单元下载新的启动参数文件,并保存至所述引导程序和启动参数存储器37;
单元34:检测校核单元,用于检测被加载的可执行文件是否正确;
其中,检测校核单元34对可执行文件的校核检测方法为:
检测被加载的可执行文件是否正确,若是,则结束检测校核过程;否则,继续后续步骤;
检测文件存储器38上备份的可执行文件是否正确,若是,则利用备份文件修复原文件,结束校核检测过程;否则,交U盘系统单元35执行从U盘下载可执行文件的过程,然后再重复对可执行文件的校核检测过程,或放弃对该可执行文件的加载。
单元35:U盘系统单元,包括启动通用串行接口模块(USB)和设备固件升级协议通讯软件模块(DFU),用于从U盘下载可执行文件,或新的启动参数文件;其中,U盘系统单元下载可执行文件或新的启动参数文件的流程包括:
DFU模块将U盘中的可执行文件下载并保存至所述文件存储器,或将U盘中的新的启动参数文件下载并保存至启动参数存储器37。
单元36:装载单元,用于将通过检测校核单元34检测的可执行文件从文件存储器38复制到内存执行;
单元37:引导程序和启动参数存储器,用于存储所述嵌入式系统的引导程序和启动参数;其中,引导程序存储器采用ROM、启动参数存储器采用EEPROM,或引导程序和启动参数存储器采用NorFlash;
单元38:文件存储器,用于存储可执行文件;其中,文件存储器采用NAND闪存。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种嵌入式系统引导程序的实现方法、引导装置和便携式电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。