嵌入式设备的固件升级方法、装置、芯片和计算设备与流程

文档序号:36161552发布日期:2023-11-23 09:53阅读:112来源:国知局
嵌入式设备的固件升级方法与流程

本发明涉及嵌入式,具体涉及一种嵌入式设备的固件升级方法、装置、芯片和计算设备。


背景技术:

1、嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。由于嵌入式系统具有便利灵活、性价比高、嵌入性强等特点,其在各个领域得到了广泛应用,例如目前快速发展的物联网领域和可穿戴式智能设备领域。嵌入式系统通常也被称为嵌入式设备,通常将嵌入式设备中的软件称为固件,固件根据其功能划分为引导程序、应用程序和程序资源。固件通常存储于嵌入式设备的可擦写非易失性存储器,例如芯片内部的flash。

2、嵌入式设备的厂商通常会陆续推出新固件以修复软件中的bug或者提供新的软件功能。相应地,嵌入式设备的用户可以通过下载厂商提供的新固件以进行设备固件升级。固件升级即是指将写入嵌入式设备的flash中的引导程序、应用程序和程序资源升级至新版本。

3、目前,嵌入式设备在进行固件升级时,通常通过引导程序从上位机将升级程序下载到嵌入式设备的本地flash,再从本地flash中将升级程序加载到ram中运行,由升级程序将上位机的升级文件下载到本地flash中以完成固件升级。这种将升级程序下载到本地flash的升级方式造成对flash存储空间的占用,特别是在嵌入式设备固件的程序较多时,每个程序都有其对应的升级程序,将所有程序的升级程序均下载到本地flash中将占用大量的flash存储空间。

4、因此,如何减小固件升级时对嵌入式设备的可擦写非易失性存储器存储空间的占用成为亟待解决的技术问题。


技术实现思路

1、基于上述现状,本发明的主要目的在于提供一种嵌入式设备的固件升级方法、装置、芯片和计算设备,减少了固件升级时对嵌入式设备的可擦写非易失性存储器存储空间的占用。

2、为实现上述目的,本发明采用的技术方案如下:

3、一种嵌入式设备的固件升级方法,用于从外部设备获取升级文件进行固件升级,所述升级文件包括前级装载程序和后级装载程序;所述方法包括:步骤s200,从所述外部设备获取所述前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中;步骤s400,将所述前级装载程序加载至ram;步骤s600,在所述ram中运行所述前级装载程序,以从所述外部设备获取所述后级装载程序,并将所述后级装载程序加载至所述ram中;步骤s800,在所述ram中运行所述后级装载程序,以更新所述嵌入式设备的固件。

4、优选地,所述前级装载程序包括第一装载程序和第二装载程序;所述步骤s200包括:步骤s210,从所述外部设备获取所述第一装载程序,并将所述第一装载程序存储在所述可擦写非易失性存储器中;步骤s220,运行所述第一装载程序,以从所述外部设备获取所述第二装载程序;所述步骤s400包括:将所述第二装载程序加载至所述ram;所述步骤s600包括:在所述ram中运行所述第二装载程序,以从所述外部设备获取所述后级装载程序,并将所述后级装载程序加载至所述ram中。

5、优选地,所述第一装载程序由通信接口代码和第一加载代码组成,其中,所述通信接口代码用于实现所述嵌入式设备和所述外部设备的通信接口,所述第一加载代码用于通过所述通信接口从所述外部设备获取所述第二装载程序。

6、优选地,所述步骤s200包括:从所述外部设备获取所述前级装载程序,并将全部的所述前级装载程序存储在所述可擦写非易失性存储器中。

7、优选地,所述步骤s200之后,所述方法还包括:在所述ram中设置标志位,其中,所述标志位在掉电时会被删除;所述步骤s600包括:步骤s610,运行引导程序,以判断所述ram中是否存在标志位;步骤s620,若所述引导程序判断所述ram中存在标志位,在所述ram中运行所述前级装载程序,以从所述外部设备获取所述后级装载程序,并将所述后级装载程序加载至所述ram中,删除所述标志位;步骤s630,若所述引导程序判断所述ram中不存在标志位,引导所述嵌入式设备正常启动。

8、优选地,所述嵌入式设备的固件包括引导程序、应用程序、程序资源中的一个或多个,所述后级装载程序包括按顺序排列的n个子装载程序,其中n为正整数,n≥1,每个子装载程序分别用于更新所述嵌入式设备中与其对应的固件;所述步骤s600包括:在所述ram中运行所述前级装载程序,以从所述外部设备获取第i个子装载程序,并将所述第i个子装载程序加载至所述ram中,其中i为正整数,1≤i≤n,i的初始值为1;所述步骤s800包括:在所述ram中运行所述第i个子装载程序,以从所述外部设备的所述升级文件中获取与所述第i个子装载程序对应的第i个固件的升级数据从而更新该固件;所述步骤s800之后,所述方法还包括步骤s1000:对i自加1并转至步骤s600,直至i=n。

9、优选地,所述可擦写非易失性存储器的记录区域记录有当前升级进度,所述步骤s600包括:在所述ram中运行所述前级装载程序,以根据所述记录区域记录的当前升级进度从所述外部设备获取相应的第i个子装载程序,并将该第i个子装载程序加载至所述ram中,其中,相应的第i个子装载程序为所述当前升级进度下所需执行的下一操作步骤用于升级的第i个固件所对应的子装载程序;所述步骤s800包括:步骤s810,在所述ram中运行所述第i个子装载程序,根据所述记录区域记录的当前升级进度,若当前升级进度为第i个固件擦除成功,则执行步骤s830;若当前升级进度为第i个固件写入成功,则执行步骤s840;若当前升级进度为无升级状态,则执行所述步骤s820;若当前升级进度为第i个固件升级成功,则执行步骤s1000;步骤s820,擦除所述可擦写非易失性存储器中存储的与所述第i个子装载程序对应的第i个固件,并在所述可擦写非易失性存储器的记录区域记录当前升级进度为第i个固件擦除成功;步骤s830,从所述外部设备的所述升级文件中获取该固件的升级数据,将该固件的升级数据存储至所述可擦写非易失性存储器,并在所述记录区域记录当前升级进度为第i个固件写入成功;步骤s840,若校验该固件升级成功,在所述记录区域记录当前升级进度为第i个固件升级成功;若校验该固件升级失败,在所述记录区域记录当前升级进度为该固件擦除成功的前一升级进度,所述前一升级进度为第(i-1)个固件升级成功或无升级状态。

10、优选地,所述后级装载程序还包括n个校验程序,校验程序与子装载程序一一对应,每个校验程序在所述后级装载程序中的排列顺序位于与该校验程序对应的子装载程序之后;所述步骤s800之后所述步骤s1000之前,所述方法还包括:步骤s910,在所述ram中运行所述前级装载程序,以根据所述后级装载程序中程序的排列顺序,从所述外部设备获取与所述第i个子装载程序对应的第i个校验程序,并将所述第i个校验程序加载至所述ram中;步骤s920,在所述ram中运行该校验程序,以校验与所述第i个子装载程序对应的第i个固件的升级是否成功,若成功则执行所述步骤s1000,否则重复执行上一次执行的所述步骤s600。

11、优选地,所述步骤s600中获取的当前子装载程序用于更新所述嵌入式设备中的引导程序;所述步骤s600之后,所述方法还包括:步骤s700,将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址。

12、优选地,所述嵌入式设备的固件包括引导程序以及应用程序和程序资源中的至少一个,所述后级装载程序包括按顺序排列的n个子装载程序,其中n为正整数,n≥1,每个子装载程序分别用于更新所述嵌入式设备中与其对应的固件;所述步骤s600包括:在所述ram中运行所述前级装载程序,所述前级装载程序用于:从所述外部设备获取第1个子装载程序,所述第1个子装载程序为引导程序装载程序,并将所述引导程序装载程序加载至所述ram中,所述引导程序装载程序用于:将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址,并擦除所述第一地址存储的引导程序;从所述外部设备的所述升级文件中获取引导程序,将获取的引导程序写入所述可擦写非易失性存储器;从所述外部设备中根据所述后级装载程序的排列顺序依次获取剩余的子装载程序,所述剩余的子装载程序为应用程序装载程序和/或程序资源装载程序,并将获取的子装载程序加载至所述ram中,所述子装载程序用于从所述外部设备的所述升级文件中获取与该子装载程序对应的固件的升级数据,将获取的升级数据写入所述可擦写非易失性存储器。

13、优选地,所述可擦写非易失性存储器的记录区域用于记录升级进度;所述引导程序装载程序在将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址之前,还用于:在所述记录区域无记录信息时,判断所述外部设备的所述升级文件中引导程序的头部crc码与所述嵌入式设备的引导程序的头部crc码是否一致;若所述外部设备的所述升级文件中引导程序的头部crc码与所述嵌入式设备的引导程序的头部crc码不一致,执行将所述可擦写非易失性存储器中第一地址存储的引导程序备份至所述可擦写非易失性存储器中的第二地址的步骤。

14、优选地,所述第二地址为所述可擦写非易失性存储器中n*m字节地址,n为整数,n≥0,m为正整数;所述方法还包括:步骤s101,上电后读取所述可擦写非易失性存储器中j*m字节地址存储的数据,判断读取的数据是否符合所述可擦写非易失性存储器的头部结构,其中,其中j为正整数,1≤j≤n,j的初始值为1;若读取的数据符合所述可擦写非易失性存储器的头部结构,执行步骤s102,否则,执行步骤s103;步骤s102,偏移所述可擦写非易失性存储器的头部长度读取存储于所述可擦写非易失性存储器的头部之后的引导程序,将该引导程序从所述可擦写非易失性存储器加载至所述ram中运行;步骤s103,对j自加1并转至步骤s101,直至j=n。

15、优选地,所述外部设备的所述升级文件中包括按顺序排列的n个固件,每个固件的头部包括头部crc码、数据crc码、固件存储地址、固件运行地址和固件长度;所述从所述外部设备的所述升级文件中获取与所述第i个子装载程序对应的第i个固件的升级数据从而更新该固件,包括:计算所述第i个固件的头部的偏移值,所述第i个固件的头部的偏移值等于所述升级文件中该固件之前的所有固件的固件长度之和;通过所述第i个固件的头部crc码确定所述第i个固件的头部的完整性;若所述第i个固件的头部完整,从升级文件中的与所述第i个固件的固件存储地址对应的地址,读取长度为所述第i个固件的固件长度的数据,将其写入至所述可擦写非易失性存储器中的与所述第i个固件的固件运行地址对应的地址;计算写入所述可擦写非易失性存储器中的与所述第i个固件的固件运行地址对应的地址的固件的crc码,将该固件的crc码与所述升级文件中所述第i个固件的头部中的数据crc码是否一致以校验固件读取是否正确。

16、本发明实施例中的升级文件包括前级装载程序和后级装载程序,在升级流程中无需事先下载完整的升级程序,而是分阶段下载升级程序,具体地,先下载前级装载程序并存储于可擦写非易失性存储器,之后通过前级装载程序下载后级装载程序,后级装载程序未写入可擦写非易失性存储器,而是被直接加载至ram中运行,以对嵌入式设备的固件进行升级。因此,在升级流程中可以减少对嵌入式设备的可擦写非易失性存储器的存储空间的占用,并进一步使得其可擦写非易失性存储器可以装载更大或者更多的应用程序,提高了嵌入式设备中应用程序的丰富度。

17、此外,通过将获取的后级装载程序直接加载至ram,缩短了升级流程中将包括后级装载程序的整个升级程序从flash转移至ram的时间,提高了升级效率。

18、本发明实施例还提供了一种嵌入式设备的固件升级装置,用于从外部设备获取升级文件进行固件升级,所述升级文件包括前级装载程序和后级装载程序;所述装置包括:获取模块,用于从所述外部设备获取所述前级装载程序,并将至少部分前级装载程序存储在可擦写非易失性存储器中;加载模块,用于将所述前级装载程序加载至ram;第一运行模块,用于在所述ram中运行所述前级装载程序,以从所述外部设备获取所述后级装载程序,并将所述后级装载程序加载至所述ram中;第二运行模块,用于在所述ram中运行所述后级装载程序,以更新所述嵌入式设备的固件。

19、本发明实施例还提供了一种芯片,适用于嵌入式设备,所述芯片内存储有指令集,所述指令集被执行时,能够指示嵌入式设备实现如上实施例所述的嵌入式设备的固件升级方法。

20、本发明实施例还提供了一种嵌入式设备,包括:处理器和存储器,所述存储器用于存储可执行指令,所述可执行指令使所述处理器执行如上实施例所述的嵌入式设备的固件升级方法。

21、本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行指令,所述可执行指令被执行时实现如上实施例所述的嵌入式设备的固件升级方法的操作。

22、本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1