基于SD卡和EEPROM的固件程序更新方法及系统与流程

文档序号:26228529发布日期:2021-08-10 16:28阅读:396来源:国知局
基于SD卡和EEPROM的固件程序更新方法及系统与流程

本发明涉及电子技术领域,具体而言,涉及一种基于sd卡和eeprom的固件程序更新方法及系统。



背景技术:

当前光通信嵌入式系统主要包括引导程序(bootloader)和固件程序(firmware),主要存储在mcu的flash中。而引导程序(bootloader)更新固件程序(firmware)的方式,大部分利用编程器写入mcu的flash中或者通过将flash划分位为若干个不同的区域,存储相应的固件程序(firmware)数据,运用自身mcu包含的引导程序,读取mcu内部flash分区已存储的备份固件程序数据,更新运行的固件程序。在以上的更新方式中,进行固件程序更新升级时,大部分只简单将固件程序数据直接写入mcu的flash中,未对实际写入的数据进行有效性检查,无法对当前硬件版本信息和软件版本信息进行验证。不能有效保证固件程序更新进入正确的硬件中,同时未对已写入mcu的flash的固件程序数据进行检查,无法有效确保所有固件程序数据正确写入mcu。所以需要提供一种方案以提高固件程序写入mcu的准确性。



技术实现要素:

本发明的目的在于提供一种基于sd卡和eeprom的固件程序更新方法及系统,用以实现提高固件程序写入mcu的准确性的技术效果。

第一方面,本发明提供了一种基于sd卡和eeprom的固件程序更新方法,包括s1.嵌入式系统的mcu启动运行引导程序并初始化加载sd卡和eeprom存储器;其中所述sd卡用于存储更新固件程序的关联文件,所述eeprom存储器用于存储系统硬件版本信息;

s2.分析从eeprom存储器读取的第一系统硬件版本信息是否有效;若有效,则通过sha256认证加密算法验证mcu内部已存储的待更新固件程序是否完整;

s3.若所述待更新固件程序完整,则读取所述待更新固件程序的第一软件版本信息,并根据所述第一软件版本信息分析sd卡内是否含有能够对所述待更新固件程序进行更新的完整的新版固件程序;若sd卡内含有能够对所述待更新固件程序进行更新的完整的新版固件程序,则将所述新版固件程序写入mcu后,执行s4;

s4.读取mcu中当前的固件程序的数字签名信息,运用sha256认证加密算法验证当前的固件程序是否完整;

s5.若当前的固件程序完整,则启动mcu中当前的固件程序;否则,结束更新流程。

进一步地,所述s3包括:

s31.检测sd卡内是否存在所述第一软件版本信息的锁定文件;

s32.若sd卡内存在所述第一软件版本信息的锁定文件,则分析所述第一软件版本信息与所述锁定文件指定的第二软件版本信息是否相同;

s33.若所述第一软件版本信息与所述第二软件版本信息不相同,则检测sd卡内是否存在与所述第一系统硬件版本信息和所述第二软件版本信息均相同的第一程序文件;否则,继续执行s4;

s34.若sd卡内存在与所述第一系统硬件版本信息和所述第二软件版本信息均相同的第一程序文件,则分析所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息是否相同;

s35.若所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息相同,则将所述继续执行s4。

进一步地,所述s3还包括:

s36.若所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息不相同,则解析所述第一程序文件的文件名所含的第二系统硬件版本信息和第三软件版本信息,分析所述第二系统硬件版本信息和第三软件版本信息是否与所述第一系统硬件版本信息和所述第一程序文件内部数据所含的第四软件版本信息相同;

s37.若所述第二系统硬件版本信息和第三软件版本信息与所述第一系统硬件版本信息和所述第一程序文件内部数据所含的第四软件版本信息相同,则从sd卡中获取所述第一程序文件内部所含的数字签名信息和所有数据值,利用sha256认证加密算法验证所述第一程序文件是否完整;否则,则继续执行s4;

s38.若所述第一程序文件完整,则读取所述第一程序文件内部所含的所有数据,然后继续执行s4。

进一步地,所述方法还包括:

s6.若所述待更新固件程序不完整,则检测sd卡内是否存在与所述第一系统硬件版本信息相同、版本信息任意的第三程序文件;若sd卡内存在所述第三程序文件,则执行s36。

进一步地,s39.若sd卡内不存在所述第一软件版本信息的锁定文件,则检测sd卡内是否存在与所述第一系统硬件版本信息相同并且比所述第一软件版本信息更新的第二程序文件;若sd卡内存在所述第二程序文件,则执行s34。

进一步地,所述s1与s2之间还包括;

检测加载sd卡内的固件程序文件存储分区是否成功;

若加载sd卡内的固件程序文件存储分区成功,则检测是否能够成功读取eeprom存储器所含的系统硬件版本信息;

若能够成功读取eeprom存储器所含的系统硬件版本信息,则继续执行s2。

第二方面,本发明提供了一种基于sd卡和eeprom的固件程序更新系统,包括:mcu、sd卡和eeprom存储器;所述sd卡用于存储更新固件程序的关联文件,所述eeprom存储器用于存储系统硬件版本信息;所述mcu用于启动运行引导程序并初始化加载sd卡和eeprom存储器;分析从eeprom存储器读取的第一系统硬件版本信息是否有效;若有效,则通过sha256认证加密算法验证mcu内部已存储的待更新固件程序是否完整;若所述待更新固件程序完整,则读取所述待更新固件程序的第一软件版本信息,并根据所述第一软件版本信息分析sd卡内是否含有能够对所述待更新固件程序进行更新的完整的新版固件程序;若sd卡内含有能够对所述待更新固件程序进行更新的完整的新版固件程序,则将所述新版固件程序写入mcu后,读取mcu中当前的固件程序的数字签名信息,运用sha256认证加密算法验证当前的固件程序是否完整;若当前的固件程序完整,则启动mcu中当前的固件程序;否则,结束更新流程。

本发明能够实现的有益效果是:本发明通过mcu与外部sd卡和eeprom存储器等硬件设备配合存储嵌入式系统的硬件版本信息和待更新固件程序的软件版本信息,同时将系统的硬件版本信息和待更新固件程序的软件版本信息加入到待更新固件程序的内部数据中和固件程序的文件名中,保证了引导程序将正确软件版本的固件程序升级进入正确硬件版本的mcu;同时在引导程序升级固件程序过程中,利用标准的sha256安全哈希算法对升级前固件程序文件所含内部数据、mcu内已更新的固件程序的所有数据,均进行了数据完整性认证检查,保证了引导程序将待更新固件程序文件的所有数据正确升级写入mcu内,提高了固件程序写入mcu的准确性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种基于sd卡和eeprom的固件程序更新方法的总体流程示意图;

图2为本发明实施例提供的一种基于sd卡和eeprom的固件程序更新系统拓扑结构示意图。

图标:10-固件程序更新系统;100-mcu;200-sd卡;300-eeprom存储器。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参看图1,图1为本发明实施例提供的一种基于sd卡和eeprom的固件程序更新方法的总体流程示意图。

在一种实施方式中,本发明实施例提供了一种基于sd卡和eeprom的固件程序更新方法,其总体流程如下所述。

s1.嵌入式系统的mcu启动运行引导程序并初始化加载sd卡和eeprom存储器;其中所述sd卡用于存储更新固件程序的关联文件,所述eeprom存储器用于存储系统硬件版本信息。

s2.分析从eeprom存储器读取的第一系统硬件版本信息是否有效;若有效,则通过sha256认证加密算法验证mcu内部已存储的待更新固件程序是否完整。

具体地,可以分析当前从eeprom存储器读取的系统硬件版本信息值是否为0,若值不为0,则该系统硬件版本信息是有效的;若值为0,则说明该信息是无效的。当该系统硬件版本信息有效时,可以读取mcu内部的flash已存储的现有固件程序的数字签名信息值和所有数据值。利用sha256认证加密算法计算得到当前mcu内部flash已存储的所有数据值对应的数字签名信息。对比当前mcu内部flash已存储的固件程序的数字签名信息是否与sha256算法计算得到的数字签名信息相同,若两个数字签名信息相同,则说明当前mcu内部flash已存储的现有固件程序数据是完整的;若两个数字签名信息不同,则说明当前mcu内部flash已存储的现有固件程序数据已发生变动,并且是不完整的。

s3.若所述待更新固件程序完整,则读取所述待更新固件程序的第一软件版本信息,并根据所述第一软件版本信息分析sd卡内是否含有能够对所述待更新固件程序进行更新的完整的新版固件程序;若sd卡内含有能够对所述待更新固件程序进行更新的完整的新版固件程序,则将所述新版固件程序写入mcu后,执行s4。

在一种实施方式中,s3的执行过程可以按照以下步骤执行:

s31.检测sd卡内是否存在所述第一软件版本信息的锁定文件;

s32.若sd卡内存在所述第一软件版本信息的锁定文件,则分析所述第一软件版本信息与所述锁定文件指定的第二软件版本信息是否相同;

s33.若所述第一软件版本信息与所述第二软件版本信息不相同,则检测sd卡内是否存在与所述第一系统硬件版本信息和所述第二软件版本信息均相同的第一程序文件;否则,继续执行s4;

s34.若sd卡内存在与所述第一系统硬件版本信息和所述第二软件版本信息均相同的第一程序文件,则分析所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息是否相同;

s35.若所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息相同,则将所述继续执行s4。

当sd卡内不存在第一软件版本信息的锁定文件时,还可以按照以下步骤进行处理:

s36.若所述第一程序文件所含的第三软件版本信息与所述第一软件版本信息不相同,则解析所述第一程序文件的文件名所含的第二系统硬件版本信息和第三软件版本信息,分析所述第二系统硬件版本信息和第三软件版本信息是否与所述第一系统硬件版本信息和所述第一程序文件内部数据所含的第四软件版本信息相同。

s37.若所述第二系统硬件版本信息和第三软件版本信息与所述第一系统硬件版本信息和所述第一程序文件内部数据所含的第四软件版本信息相同,则从sd卡中获取所述第一程序文件内部所含的数字签名信息和所有数据值,利用sha256认证加密算法验证所述第一程序文件是否完整;否则,则继续执行s4。

s38.若所述第一程序文件完整,则读取所述第一程序文件内部所含的所有数据,然后继续执行s4。

通过上述过程,可以在更新固件程序的过程中更好地校验sd卡中固件程序的完整性和准确性,从而提高固件程序写入前的准确性。

s4.读取mcu中当前的固件程序的数字签名信息,运用sha256认证加密算法验证当前的固件程序是否完整。

具体地,mcu内部的固件程序更新后,读取mcu内部的flash中更新的固件程序的数字签名信息值和所有数据值。利用sha256认证加密算法计算得到mcu内部flash存储的所有数据值对应的数字签名信息。对比mcu内部flash已存储的固件程序的数字签名信息是否与sha256算法计算得到的数字签名信息相同,若两个数字签名信息相同,则说明mcu内部flash存储的更新后的固件程序数据是完整的;若两个数字签名信息不同,则说明当前mcu内部flash存储的更新后的固件程序数据已发生变动,并且是不完整的。

在上述实现过程中,当更新程序写入mcu后,再次通过sha256算法对更新的固件程序进行校验,充分保证了固件程序更新的准确性。

s5.若当前的固件程序完整,则启动mcu中当前的固件程序;否则,结束更新流程。

在一种实施方式中,上述方法还包括:若sd卡内不存在第一软件版本信息的锁定文件,则检测sd卡内是否存在与第一系统硬件版本信息相同并且比第一软件版本信息更新的第二程序文件;若sd卡内存在第二程序文件,则执行s34。通过上述方式,可以对mcu内部的固件程序进行有效的更新。

在一种实施方式中,s1与s2之间还包括;检测加载sd卡内的固件程序文件存储分区是否成功;若加载sd卡内的固件程序文件存储分区成功,则检测是否能够成功读取eeprom存储器所含的系统硬件版本信息;若能够成功读取eeprom存储器所含的系统硬件版本信息,则继续执行s2。

通过上述方式,可以保证各个硬件设备能够正常运行,以满足固件程序更新的需求。

在一种实施方式中,上述方法还包括:

s6.若所述待更新固件程序不完整,则检测sd卡内是否存在与所述第一系统硬件版本信息相同、版本信息任意的第三程序文件;若sd卡内存在所述第三程序文件,则执行s36。

通过上述方式,可以在mcu内部的程序存在异常,但sd卡中不存在更新程序时,保证mcu中的固件程序的完整性,保证mcu能够正常运行。

请参看图2,图2为本发明实施例提供的一种基于sd卡和eeprom的固件程序更新系统拓扑结构示意图。

在一种实施方式中,本发明实施例还提供了一种基于sd卡和eeprom的固件程序更新系统(10),包括mcu(100)、sd卡(200)和eeprom存储器(300);sd卡(200)用于存储更新固件程序的关联文件,eeprom存储器(300)用于存储系统硬件版本信息;mcu(100)用于启动运行引导程序并初始化加载sd卡(200)和eeprom存储器(300);分析从eeprom存储器(300)读取的第一系统硬件版本信息是否有效;若有效,则通过sha256认证加密算法验证mcu(100)内部已存储的待更新固件程序是否完整;若待更新固件程序完整,则读取待更新固件程序的第一软件版本信息,并根据第一软件版本信息分析sd卡(200)内是否含有能够对待更新固件程序进行更新的完整的新版固件程序;若sd卡(200)内含有能够对待更新固件程序进行更新的完整的新版固件程序,则将新版固件程序写入mcu(100)后,读取mcu(100)中当前的固件程序的数字签名信息,运用sha256认证加密算法验证当前的固件程序是否完整;若当前的固件程序完整,则启动mcu(100)中当前的固件程序;否则,结束更新流程。

综上所述,本发明实施例提供一种基于sd卡和eeprom的固件程序更新方法及系统,通过mcu与外部sd卡和eeprom存储器等硬件设备配合存储嵌入式系统的硬件版本信息和待更新固件程序的软件版本信息,同时将系统的硬件版本信息和待更新固件程序的软件版本信息加入到待更新固件程序的内部数据中和固件程序的文件名中,保证了引导程序将正确软件版本的固件程序升级进入正确硬件版本的mcu;同时在引导程序升级固件程序过程中,利用标准的sha256安全哈希算法对升级前固件程序文件所含内部数据、mcu内已更新的固件程序的所有数据,均进行了数据完整性认证检查,保证了引导程序将待更新固件程序文件的所有数据正确升级写入mcu内,提高了固件程序写入mcu的准确性。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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