本发明专利技术提供了一种嵌入式设备的多级引导加载方法,所述嵌入式设备的flash依次划分为bootloader2分区、image分区和data配置区,所述多级引导加载方法包括步骤:在存储区中添加bootloader1分区,该bootloader1分区具有升级bootloader2、引导bootloader2以及配置bootloader2的功能;设备上电后,先启动bootloader1;在指定时间内,循环检查是否有升级/配置bootloader2指令输入,若无,则bootloader1引导bootloader2启动,完成启动流程;若有,则bootloader1对bootloader2进行升级/配置,升级/配置之后跳转至bootloader2执行或者直接重启设备。本发明专利技术实施例中不仅支持image和bootloader的多样性,而且满足嵌入式升级时的安全性要求。
【技术实现步骤摘要】
本专利技术涉及嵌入式
,尤其涉及一种嵌入式设备的多级引导加载方法。
技术介绍
嵌入式设备具有两个显著的特点一个是尽量降低成本,需要裁减掉多余的软硬件功能;一个是需要定制以满足多样化的需求,统一标准的方式难以满足所有的需求。作为程序的主要部分image (程序镜像,通常包括kernel (内核)和rootfs (根文件系统))也是多样化的,随着技术的发展image本身的形式在不断发展,且有双image,大小image等应用形式的出现,导致原有的bootloader (启动加载程序)已经不能满足新的要求,不能兼容,因此bootloader本身也需要进行升级。有时,有关的关键参数如MAC地址,产测配置嵌入到bootloader本身,在参数扩充或修改时也需要对bootloader进行升级。 嵌入式的bootloader通常是存储在flash上的,而传统的bootloader升级方法是在升级bootloader时,需要把bootloader在flash上对应的block上的数据擦除掉,再从ram写入,这时可能因为断电和其他意外导致升级终止,而bootloader所在的block由于尚未写入数据或写入不完全导致损坏,上电重启就无法再从对应的flash block读出bootloader代码而无法运行,从而使嵌入式设备陷入瘫痪,俗称变成了砖头。这种情况维修和升级的成本都会很高,或者是永久性的损坏。因此必须找到一种方法来同时满足灵活性和安全性的要求。
技术实现思路
本专利技术的目的在于提供一种嵌入式设备的多级引导加载方法,采用两个bootloader级联来引导image,同时支持image和bootloader的多样性,又满足嵌入式升级时的安全性要求,在bootloader升级失败后仍然能够引导运行。本专利技术的目的是通过以下技术方案实现的。一种嵌入式设备的多级引导加载方法,所述嵌入式设备的flash依次划分为bootloader2分区、image分区和data配置区,所述多级引导加载方法包括步骤 在存储区中添加bootloaderl分区,该bootloaderl分区具有升级bootloader2、引导bootloader2 以及配置 bootloader2 的功能; 设备上电后,先启动bootloaderl ; 在指定时间内,循环检查是否有升级/配置bootloaderf指令输入,若无,则bootloaderl 引导 bootloader2 启动,完成启动流程;若有,则 bootloaderl 对bootloader2进行升级/配置,升级/配置之后跳转至bootloaderf执行或者直接重启设备。其中,所述bootloaderl分区和bootloader2分区位于不同flash上;其中,bootloaderl分区设于spi nor flash (串行外围接口或非门的闪存)上,bootloader2分区设于nandfIash (与非门闪存)上。其中,所述bootloaderl分区和bootloader2分区位于同一 flash上。 其中,所述bootloaderl分区占用I个flash的I个block。其中,所述bootloaderl分区设置有写保护。其中,bootloaderl引导bootloader2启动的过程为 bootloaderl从约定的地址找到对应的block,再根据找到的地址读入bootloader2的信息,读取bootloader2的长度和预设校验值信息; bootloaderl读取出bootloader2的全部内容并计算其校验值,将该校验值和预设校验值比较判断得出该校验值是否正确。如果校验值正确则跳转到bootloaderf可执行代码所对应的地址,或跳转到bootloaderf加载到内存并解压后对应的地址执行,完成启动流程;如果不正确,则bootloaderl转换至升级模式,对bootloader2进行升级,升级后跳转至bootloader2执行或者直接重启设备。 其中,所述bootloaderl对bootloader2进行升级的方式包括三种串口升级方式、tftp (tftp简单文件传输协议)协议升级方式、http (超级文本传输协议)或ftp (文件传输协议)协议升级方式。与现有技术相比,本专利技术实施例具有以下有益效果。本专利技术实施例中新增了一个bootloaderl分区,具有引导、配置、升级原有的bootloader2分区的功能,在设备系统启动时bootloaderl分区与bootloader2分区级联来进行引导加载,这样在bootloader2在损坏或者升级失败时,bootloaderl由于被写保护而不会被损坏,因而bootloaderl可对bootloader2重新进行升级,不仅支持image和bootloader的多样性,而且满足嵌入式升级时的安全性要求。附图说明图I是现有的flash分布结构示意图。图2是本专利技术实施例提供的flash分布结构示意图。图3是本专利技术实施例提供的嵌入式设备的多级引导加载方法流程图。图4是本专利技术实施例提供的升级方法流程图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。请参阅图1,现有的flash按顺序依次划分为一个bootloader分区、一个image分区(实际也可为多个image分区)和一个data配置区。其中bootloader分区用于存储bootloader程序本身和bootloader所需要的配置参数;image分区通常包括kernel和rootfs两部分;data配置区为可选,包括系统运行需要的配置参数和运行的记录信息,有时可能包括在rootfs里。与现有的flash分布结构不同,本实施例中在现有的bootloader分区之前添加一个新的bootloader分区,新的flash分布结构如图2所示,包括两个bootloader分区(分别称为bootloaderl分区和bootloader2分区)、一个image分区(实际也可为多个image分区)和一个data配置区。下面将对bootloaderl分区和bootloader2分区分别进行描述。bootloderl 分区具有引导 bootloader2、升级 bootloader2 以及配置bootloader2的有关参数的功能;其中的升级功能可以包含最基本的串口升级方式,也可以包含网口升级方式等更高级的方式,详见下文。该bootloderl不支持直接引导或升级image和修改data配置区。bootloderl的大小受到限制,通常为I个flash的I个block大小,有时可能包括一个以上,所占flash空间比bootloder2要小很多。bootloader2分区保持现有单个bootloader的有关特性基本不变,其作用就是做一些基本的硬件、运行环境的初始化,解压kenel部分的代码,并把cpu的控制权交给kenel,从而实现对引导操作系统的kenrnel部分的引导,也包含升级自身和kernel,或bootloaderl除外的整个flash的功能。在实际应用中,b本文档来自技高网...
【技术保护点】
一种嵌入式设备的多级引导加载方法,所述嵌入式设备的flash依次划分为bootloader2分区、image分区和data配置区,其特征在于,所述多级引导加载方法包括步骤:在存储区中添加bootloader1分区,该bootloader1分区具有升级bootloader2、引导bootloader2以及配置bootloader2的功能;设备上电后,先启动bootloader1;在指定时间内,循环检查是否有升级/配置bootloader2指令输入,若无,则bootloader1引导bootloader2启动,完成启动流程;若有,则bootloader1对bootloader2进行升级/配置,升级/配置之后跳转至bootloader2执行或者直接重启设备。
【技术特征摘要】
1.一种嵌入式设备的多级引导加载方法,所述嵌入式设备的flash依次划分为bootloader2分区、image分区和data配置区,其特征在于,所述多级引导加载方法包括步骤 在存储区中添加bootloaderl分区,该bootloaderl分区具有升级bootloader2、引导bootloader2 以及配置 bootloader2 的功能; 设备上电后,先启动bootloaderl ; 在指定时间内,循环检查是否有升级/配置bootloaderf指令输入,若无,则bootloaderl 引导 bootloader2 启动,完成启动流程;若有,则 bootloaderl 对bootloader2进行升级/配置,升级/配置之后跳转至bootloaderf执行或者直接重启设备。2.如权利要求I所述嵌入式设备的多级引导加载方法,其特征在于,所述bootloaderl分区和bootloader2分区位于不同flash上;其中,bootloaderl分区设于spi nor flash上,bootloader2 分区设于 nand flash 上。3.如权利要求I所述嵌入式设备的多级引导加载方法,其特征在于,所述bootloaderl分区和bootloader2分区位于同一 flash上。4.如权利要求I所述嵌入式设备的...
【专利技术属性】
技术研发人员:刘宏钧,
申请(专利权)人:深圳市共进电子股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。