首页> 中国专利> 嵌入式系统启动方法、闪存烧录方法与系统更新方法

嵌入式系统启动方法、闪存烧录方法与系统更新方法

摘要

本公开涉及一种嵌入式系统启动方法、闪存烧录方法与系统更新方法。嵌入式系统启动方法包括:从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址;根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件;根据所述第二引导程序文件的版本号更新所述第一引导程序文件;引导所述目标系统文件以使所述目标系统文件运行。本公开实施例可以在一次启动中一次性完成嵌入式系统的BootLoader更新和系统引导,无需人工参与。

著录项

  • 公开/公告号CN112748959A

    专利类型发明专利

  • 公开/公告日2021-05-04

    原文格式PDF

  • 申请/专利权人 杭州迪普科技股份有限公司;

    申请/专利号CN202011585560.X

  • 发明设计人 赵丹;

    申请日2020-12-29

  • 分类号G06F9/4401(20180101);G06F8/65(20180101);

  • 代理机构11554 北京金讯知识产权代理事务所(特殊普通合伙);

  • 代理人黄剑飞

  • 地址 310051 浙江省杭州市滨江区通和路68号中财大厦6楼

  • 入库时间 2023-06-19 10:51:07

说明书

技术领域

本公开涉及嵌入式系统技术领域,具体而言,涉及一种嵌入式系统启动方法、闪存烧录方法与系统更新方法。

背景技术

嵌入式系统启动前,首先需要在闪存(Flash)贴片前将BootLoader(引导程序文件)烧写到Flash,然后在整机组装后,将存储有系统文件的电脑连接到IO接口(通常为串口),整机上电后,处理器从闪存读取并运行BootLoader,以通过BootLoader读取串口引导加载系统文件,加载成功后处理器运行系统文件,进入嵌入式系统的正常运行。

在此过程中,操作人员需要完成以下步骤:1、在电脑上将BootLoader写(烧录)入Flash;2、将Flash焊接到嵌入式设备的主板上;3、寻找并连接USB转串口信号线,以通过USB转串口信号线将电脑与嵌入式设备主板连接;4、对嵌入式设备上电,同时在电脑上操作,以使嵌入式设备的处理器在加载BootLoader后,能够通过串口加载存储于电脑上的系统文件;5、观察系统文件的运行,在嵌入式系统正式运行后,拔掉USB转串口信号线,安装机箱。当BootLoader版本更新时,操作人员需要打开机箱、拆下Flash、重新烧录Flash后重新焊接、重新进行上述流程以实现嵌入式系统的启动,整个过程繁琐、效率低下,且容易出错。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本公开的目的在于提供一种嵌入式系统启动方法、闪存烧录方法与系统更新方法,用于至少在一定程度上克服由于相关技术的限制和缺陷而导致的嵌入式系统启动过程繁琐、BootLoader更新时需要重新烧录闪存的问题。

根据本公开实施例的第一方面,提供一种嵌入式系统启动方法,包括:从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址;根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件;根据所述第二引导程序文件的版本号更新所述第一引导程序文件;引导所述目标系统文件以使所述目标系统文件运行。

在本公开的一种示例性实施例中,所述根据所述第二引导程序文件的版本号更新所述第一引导程序文件包括:

获取所述第一引导程序文件的版本号;

在所述第一引导程序文件的版本号低于所述第二引导程序文件的版本号时,获取所述第二引导程序文件;

在所述闪存中删除所述第一引导程序文件,将所述第二引导程序文件写入所述第一引导程序文件对应的存储地址。

在本公开的一种示例性实施例中,所述根据所述预设配置文件从所述闪存获取目标系统文件包括:

根据所述预设配置文件记录的所述一或多个系统文件在所述闪存中的存储地址,从所述闪存获取存储地址偏移量最小的第一系统文件,并对所述第一系统文件进行预设验证;

在所述第一系统文件通过预设验证时,将所述第一系统文件作为所述目标系统文件;

在所述第一系统文件未通过预设验证且所述系统文件的数量大于1时,获取存储位置与所述第一系统文件最近的第二系统文件并对所述第二系统文件进行预设验证;

在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

在本公开的一种示例性实施例中,所述根据所述预设配置文件从所述闪存获取目标系统文件包括:

根据所述预设配置文件记录的所述一或多个系统文件的版本号,获取版本号最高的第一系统文件并对所述第一系统文件进行预设验证;

在所述第一系统文件通过所述预设验证时,将所述第一系统文件作为所述目标系统文件;

在所述第一系统文件未通过所述预设验证时,获取版本号次高的第二系统文件并对所述第二系统文件进行所述预设验证;

在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

在本公开的一种示例性实施例中,所述预设配置文件为文本文件,所述预设配置文件与所述第一引导程序文件、所述系统文件一同被烧录到所述闪存中,每个所述系统文件均包含一个第二引导程序文件。

根据本公开实施例的第二方面,提供一种嵌入式系统闪存烧录方法,包括:

响应文件合成指令获取预设配置文件;

根据所述预设配置文件获取第一引导程序文件以及一或多个系统文件,所述预设配置文件用于记录所述第一引导程序文件的文件名、版本号和存储地址,以及所述一或多个系统文件的文件名、版本号和存储地址;

根据所述预设配置文件将所述第一引导程序文件、所述一或多个系统文件、所述预设配置文件合并为一个烧录文件,所述第一引导程序文件的存储地址偏移量为零;

响应烧录指令将所述烧录文件写入闪存。

根据本公开实施例的第三方面,提供一种嵌入式系统更新方法,包括:

响应系统文件更新消息获取待更新系统文件,所述待更新系统文件包括待更新引导程序文件;

在闪存中删除当前应用的目标系统文件,将所述待更新系统文件写入所述目标系统文件对应的存储地址。

根据本公开实施例的第四方面,提供一种嵌入式系统启动装置,包括:

配置文件读取模块,设置为从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址;

系统文件读取模块,设置为根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件;

引导程序文件更新模块,设置为根据所述第二引导程序文件的版本号更新所述第一引导程序文件;

系统文件引导模块,设置为引导所述目标系统文件以使所述目标系统文件运行。

根据本公开的第五方面,提供一种嵌入式设备,包括:

闪存;以及

耦合到所述闪存的处理器,所述处理器被配置为基于存储在所述闪存中的第一引导程序文件,执行如上任一项所述的嵌入式系统启动方法,基于存储在所述闪存中的系统文件,执行如上所述的嵌入式系统更新方法。

根据本公开的第六方面,提供一种闪存,其上存储有烧录文件,所述烧录文件至少包括第一引导程序文件和一或多个系统文件,所述第一引导程序文件用于执行如上任一项所述的嵌入式系统启动方法,所述系统文件用于执行如上所述的嵌入式系统更新方法。

本公开实施例通过将系统文件和BootLoader一同烧录在Flash中,并对BootLoader进行改进,以使BootLoader被加载后自动读取预设配置文件以获取系统文件、根据系统文件进行BootLoader版本更新、自动引导系统文件,可以通过一次烧录Flash实现嵌入式系统的启动,以及BootLoader文件的自动更新,有效提高嵌入式系统的启动效率以及启动文件管理的便捷度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本公开实施例中嵌入式系统启动方法的流程图。

图2是本公开实施例中一种嵌入式系统闪存烧录方法的流程图。

图3是本公开一个实施例中步骤S12的子流程图。

图4是本公开另一个实施例中步骤S12的子流程图。

图5是本公开一个实施例中步骤S13的子流程图。

图6是本公开实施例中一种嵌入式系统更新方法的流程图。

图7是本公开实施例中一种嵌入式系统启动装置的方框图。

图8是本公开实施例提供的一种嵌入式设备的方框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

下面结合附图对本公开示例实施方式进行详细说明。

图1示意性示出本公开示例性实施例中嵌入式系统启动方法的流程图。参考图1,嵌入式系统启动方法100可以包括:

步骤S11,从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址;

步骤S12,根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件;

步骤S13,根据所述第二引导程序文件的版本号更新所述第一引导程序文件;

步骤S14,引导所述目标系统文件以使所述目标系统文件运行。

本公开实施例通过将系统文件和BootLoader一同烧录在Flash中,并对BootLoader进行改进,以使BootLoader被加载后自动读取预设配置文件以获取系统文件、根据系统文件进行BootLoader版本更新、自动引导系统文件,可以通过一次烧录Flash实现嵌入式系统的启动,以及BootLoader文件的自动更新,有效提高嵌入式系统的启动效率以及启动文件管理的便捷度。

方法100可以通过嵌入式系统的处理器在上电后,读取闪存中的BootLoader(即第一引导程序文件)并执行BootLoader来实现,即执行方法100的相关代码记录在BootLoader中。

在本公开实施例中,将预设配置文件、BootLoader、一或多个系统文件一同生成烧录文件,烧录到Flash。

图2是本公开示例性实施例中一种嵌入式系统闪存烧录方法的流程图。图2所示的方法可以由计算机(包括台式机、笔记本电脑等)完成。

参考图2,嵌入式系统闪存烧录方法200可以包括:

步骤S21,响应文件合成指令获取预设配置文件;

步骤S22,根据所述预设配置文件获取第一引导程序文件以及一或多个系统文件;

步骤S23,根据所述预设配置文件将所述第一引导程序文件、所述一或多个系统文件、所述预设配置文件合并为一个烧录文件,所述第一引导程序文件的存储地址偏移量为零;

步骤S24,响应烧录指令将所述烧录文件写入闪存。

可以预先生成一个文件管理程序以完成文件合成。该文件管理程序可以通过输入指令实现烧录文件的生成与分解。

在一个实施例中,文件合成程序的指令格式例如可以为cmd[c/x][预设配置文件的文件名][烧录文件的文件名],其中cmd代表可执行命令,c/x表示命令运行最终的功能是合成烧录文件还是分解烧录文件,c表示将按照预设配置文件将指定的BootLoader和系统文件合并生成烧录文件;x表示将已生成的烧录文件进行分解,按照配置文件指定的名字分解出BootLoader和系统文件,该功能可以用于调试和问题定位。预设配置文件例如为一个文本文件,其内容格式例如为“xxx=yyy”。下面是预设配置文件的内容的一个示例:

bl_num=yyy//表示Flash中的BootLoader数量,最多2个;

sysfile_num=zzz//表示Flash中的系统文件数量,最多2个;

f_bl_name=mmm//表示第一个BootLoader文件的文件名;

f_bl_version=vvv//表示第一个BootLoader文件的版本号;

f_bl_offset=0xnnn////表示第一个BootLoader文件在Flash中的偏移地址(存储地址);

s_bl_name=mmm//表示第二个BootLoader文件的文件名;

s_bl_version=vvv//表示第一个BootLoader文件的版本号;

s_bl_offset=0xnnn//表示第二个BootLoader文件在Flash中的偏移地址(存储地址);

f_sysfile_name=mmm//表示第一个系统软件版本的文件名;

f_sysfile_version=vvv//表示第一个系统软件版本的版本号;

f_sysfile_offset=0xnnn//表示第一个系统软件版本在Flash中的偏移地址(存储地址);

s_sysfile_name=mmm//表示第二个系统软件版本的文件名;

s_sysfile_version=vvv//表示第二个系统软件版本的版本号;

s_sysfile_offset=0xnnn//表示第二个系统软件版本在Flash中的偏移地址(存储地址);

device_id=sss//表示设备识别符,用于区分不同类型的设备,便于产品化。

对文件管理程序输入cmd[c][预设配置文件的文件名][烧录文件的文件名]的命令后,文件管理程序在指定位置找到预设配置文件并读取,按照预设配置文件中记录的内容在指定位置找到待烧录的BootLoader和系统文件。为了方便文件管理程序进行后续操作,可以预先将需要使用的各文件存储到指定位置。

在步骤S23,文件管理程序根据预设配置文件中记录的内容将BootLoader和系统文件、预设配置文件合并为一个能够烧录到Flash中的烧录文件。由于BootLoader文件的特殊性,第一个BootLoader文件的存储地址(偏移量)一定为0x00。在一些实施例中,当嵌入式设备的处理器支持BootLoader二次选择(即第一个BootLoader无法启动时自动查找第二个BootLoader加载)时,可以在第一个BootLoader之后存储第二个BootLoader。当嵌入式设备的处理器不支持此功能时,无需存储第二个BootLoader。

在一些实施例中,可以将文件管理程序作为与Flash烧录控制程序独立的程序,生成烧录文件后,由操作人员操作Flash烧录控制程序,读取该烧录文件后,将该烧录文件烧录到Flash中;在另一些实施例中,可以直接将Flash烧录控制功能与文件管理功能集成在一起,通过一个软件实现烧录文件的生成和Flash烧录。

本公开实施例提供的文件管理程序具有Flash烧录控制功能,能够直接使用生成的烧录文件对Flash进行烧录。

接下来,操作人员可以将烧录好的Flash焊接到嵌入式设备的主板上,对嵌入式设备上电,以使嵌入式设备的处理器通过读取Flash中存储地址为0x00的BootLoader实现系统引导,执行方法100。

下面,对嵌入式系统启动方法100的各步骤进行详细说明。

在步骤S11,从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址。

嵌入式设备的处理器在运行BootLoader(第一引导程序文件)后,可以自动读取预设配置文件,并读取预设配置文件以自动在Flash中查找要引导的目标系统文件。

在步骤S12,根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件。

图3是本公开一个实施例中步骤S12的子流程图。

参考图3,在一个实施例中,步骤S12可以包括:

步骤S121,根据所述预设配置文件记录的所述一或多个系统文件在所述闪存中的存储地址,从所述闪存获取存储地址偏移量最小的第一系统文件,并对所述第一系统文件进行预设验证;

步骤S122,在所述第一系统文件通过预设验证时,将所述第一系统文件作为所述目标系统文件;

步骤S123,在所述第一系统文件未通过预设验证且所述系统文件的数量大于1时,获取存储位置与所述第一系统文件最近的第二系统文件并对所述第二系统文件进行预设验证;

步骤S124,在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

预设验证例如为文件的完整性、合法性验证,本公开实施例对此不作特殊限制。图3所示实施例中,按照系统文件的存储顺序确定通过预设验证的系统文件为目标文件,这种方式可以用于Flash中烧录了两个完全相同的、其中一个用作冗余备份的系统文件的场景。在其他实施例中,当Flash中烧录了版本不同的系统文件(设置低版本系统文件以防止处理器无法兼容最高版本的系统文件),还可以按照系统文件的版本高低顺序来确定通过预设验证的系统文件为目标文件。

图4是本公开另一个实施例中步骤S12的子流程图。

参考图4,在一个实施例中,步骤S12可以包括:

步骤S125,根据所述预设配置文件记录的所述一或多个系统文件的版本号,获取版本号最高的第一系统文件并对所述第一系统文件进行预设验证;

步骤S126,在所述第一系统文件通过所述预设验证时,将所述第一系统文件作为所述目标系统文件;

步骤S127,在所述第一系统文件未通过所述预设验证时,获取版本号次高的第二系统文件并对所述第二系统文件进行所述预设验证;

步骤S128,在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

系统文件均包括BootLoader文件,以为后续自动更新BootLoader提供实现通道。在本公开实施例中,将嵌入式设备的处理器能够直接读取的BootLoader文件称为第一引导程序文件(无论是前述第一个BootLoader还是第二个BootLoader),将系统文件中包含的BootLoader文件称为第二引导程序文件(即使Flash中有两个系统文件,每个系统文件中均包含一个BootLoader)。

在步骤S13,根据所述第二引导程序文件的版本号更新所述第一引导程序文件。

图5是本公开一个实施例中步骤S13的子流程图。

参考图5,步骤S13可以包括:

步骤S131,获取所述第一引导程序文件的版本号;

步骤S132,在所述第一引导程序文件的版本号低于所述第二引导程序文件的版本号时,获取所述第二引导程序文件;

步骤S133,在所述闪存中删除所述第一引导程序文件,将所述第二引导程序文件写入所述第一引导程序文件对应的存储地址。

在图5所示实施例中,当发现目标系统文件中包含的BootLoader文件的版本比当前使用的BootLoader的版本高,可以在Flash的BootLoader存储位置上更新BootLoader,以便在下一次启动时,直接使用最新版本的BootLoader,实现BootLoader的无拆卸更新,有效提高BootLoader更新的效率。步骤S13需要配合后续实施例中系统自动更新的步骤以实现BootLoader在线更新,详情请见后续内容。

由于运行到步骤S13时,第一引导程序文件(BootLoader)的相关代码已经被处理器加载到内存中运行,因此处理器可以直接在Flash中删除第一引导程序文件而不会发生故障。

在步骤S14,引导所述目标系统文件以使所述目标系统文件运行。

处理器运行BootLoader的相关代码,引导目标系统文件,并在引导成功后自动运行目标系统文件。由于系统引导部分为本领域公知常识,本公开于此不再赘述。

目标系统文件运行后,通常会联网以实现系统文件的自动更新。

图6是本公开实施例提供的一种嵌入式系统更新方法的流程图。

参考图6,方法600可以包括:

步骤S61,响应系统文件更新消息获取待更新系统文件,所述待更新系统文件包括待更新引导程序文件;

步骤S62,在闪存中删除当前应用的目标系统文件,将所述待更新系统文件写入所述目标系统文件对应的存储地址。

运行有目标系统文件的系统可以响应系统文件更新消息,联网以获取更高版本的系统文件,即待更新系统文件。该待更新系统文件中可能包含更高版本的BootLoader。系统自动将待更新系统文件更新到Flash中。由于此时目标系统文件相关的代码已经被处理器加载到内存中,因此删除Flash中的目标系统文件不会引起故障。

系统文件更新后,嵌入式设备第二次(相比与更新前)启动时,自动抓取更新后的系统文件,获得更新后的系统文件中包含的第二引导程序文件(BootLoader),在该第二引导程序文件的版本号比当前使用的BootLoader的版本号更高时,将该第二引导程序文件写入当前第一引导程序文件对应的位置,实现BootLoader的自动更新。同时,第一引导程序文件引导更新后的系统文件,即更新后的系统文件可以在更新后的第一次开机过程中投入使用。

在第三次启动时,处理器按存储位置拉取BootLoader,使用最新版本的BootLoader实现系统文件的自动引导,即更新后的BootLoader可以在更新后的第二次开机过程中投入使用。从而,只要烧录一次Flash,即可实现后续BootLoader的自动更新,无需拆卸Flash重新烧录。

综上所述,本公开实施例通过将BootLoader和系统文件一同烧录到Flash中,并通过预设配置文件指导BootLoader自动引导系统文件,无需人工连接串口即可实现嵌入式设备的系统文件自动加载,有效提高了操作效率;通过在BootLoader启动过程中设置BootLoader文件自动更新,可以在后续操作中,将待更新的BootLoader加入系统文件中,通过系统文件的联网自动更新,实现将待更新的BootLoader写入Flash,进而在更新后的第二次开机时使新的BootLoader投入使用,无需拆卸Flash重新焊接,有效提高了嵌入式设备的组装、调试、生产效率。

对应于上述方法实施例,本公开还提供一种嵌入式系统启动装置,可以用于执行上述方法实施例。

图7是本公开示例性实施例中一种嵌入式系统启动装置的方框图。

参考图7,嵌入式系统启动装置700可以包括:

配置文件读取模块71,设置为从闪存中读取预设配置文件,所述预设配置文件用于记录一或多个系统文件的文件名、版本号以及在所述闪存中的存储地址;

系统文件读取模块72,设置为根据所述预设配置文件从所述闪存获取目标系统文件,所述目标系统文件包括第二引导程序文件;

引导程序文件更新模块73,设置为根据所述第二引导程序文件的版本号更新所述第一引导程序文件;

系统文件引导模块74,设置为引导所述目标系统文件以使所述目标系统文件运行。

在本公开的一种示例性实施例中,引导程序文件更新模块73设置为:获取所述第一引导程序文件的版本号;在所述第一引导程序文件的版本号低于所述第二引导程序文件的版本号时,获取所述第二引导程序文件;在所述闪存中删除所述第一引导程序文件,将所述第二引导程序文件写入所述第一引导程序文件对应的存储地址。

在本公开的一种示例性实施例中,系统文件读取模块72设置为:根据所述预设配置文件记录的所述一或多个系统文件在所述闪存中的存储地址,从所述闪存获取存储地址偏移量最小的第一系统文件,并对所述第一系统文件进行预设验证;在所述第一系统文件通过预设验证时,将所述第一系统文件作为所述目标系统文件;在所述第一系统文件未通过预设验证且所述系统文件的数量大于1时,获取存储位置与所述第一系统文件最近的第二系统文件并对所述第二系统文件进行预设验证;在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

在本公开的一种示例性实施例中,系统文件读取模块72设置为:根据所述预设配置文件记录的所述一或多个系统文件的版本号,获取版本号最高的第一系统文件并对所述第一系统文件进行预设验证;在所述第一系统文件通过所述预设验证时,将所述第一系统文件作为所述目标系统文件;在所述第一系统文件未通过所述预设验证时,获取版本号次高的第二系统文件并对所述第二系统文件进行所述预设验证;在所述第二系统文件通过所述预设验证时,将所述第二系统文件作为所述目标系统文件。

在本公开的一种示例性实施例中,所述预设配置文件为文本文件,所述预设配置文件与所述第一引导程序文件、所述系统文件一同被烧录到所述闪存中,每个所述系统文件均包含一个第二引导程序文件。

由于装置700的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

在本公开的示例性实施例中,还提供了一种能够实现上述方法的嵌入式设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

图8是本公开实施例提供的一种嵌入式设备的方框图。

下面参照图8来描述根据本发明的这种实施方式的嵌入式设备800。图8显示的嵌入式设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

参考图8,嵌入式设备800可以包括:

闪存81;以及

耦合到所述闪存81的处理器82,所述处理器被配置为基于存储在所述闪存中的第一引导程序文件,执行如上任一项所述的嵌入式系统启动方法100,基于存储在所述闪存81中的系统文件,执行如上所述的嵌入式系统更新方法600。

可以理解的是,嵌入式设备800还包括其他部分,例如总线、FPGA、IO接口等等,由于其他部分并非本公开的重点,本公开对此不作特殊限制。

在本公开的示例性实施例中,还提供了一种闪存,其上存储有烧录文件,所述烧录文件至少包括第一引导程序文件和一或多个系统文件,所述第一引导程序文件用于执行如上所述的嵌入式系统启动方法100,所述系统文件用于执行如上所述的嵌入式系统更新方法600。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

概括而言,本公开涉及生成烧写版本、烧写版本以及系统软件的实现。生成烧写版本不是在嵌入式设备上完成的,是在标准PC或服务器等开发环境中进行,通过运行命令生成烧写版本。通过配置文件中的注释,基本可以了解到配置文件主要用来指定BootLoader和系统软件版本的数量、名字、版本号以及在flash中存放的偏移地址,device_id用来区分不同产品的device id便于进行产品化。烧写文件的名字是指最终合成的烧写文件或将要进行分解的烧写文件的名字。烧写版本是在BootLoader下实现的,通过管理BootLoader和系统软件版本(显示、更新、删除),以及最终引导系统软件版本。BootLoader启动过程首先读取flash中记录的BootLoader和系统软件版本的数量、名字、版本号以及其在flash中的偏移地址,然后根据上述信息对BootLoader和系统软件版本进行管理。烧写版本时,从配置文件中获取BootLoader和系统软件版本的数量、名字、版本号以及其在flash中的偏移地址。创建烧写版本文件,首先将上述信息写到烧写版本文件的最后512字节中,然后根据配置文件中的信息,读取BootLoader和系统软件版本文件到内存将内存中BootLoader和系统软件版本文件写到烧写版本。在BootLoade部分中,读取flash中的BootLoader和系统软件版本的数量、名字、版本号以及在flash中保存的偏移地址,比较上述BootLoader的版本号与待更新的版本的版本号,如果待更新的版本号高,就将待更新版本写入flash中BootLoader的偏移地址,并更新flash中记录的BootLoader的版本号,否则不更新版本,如同上面一样,比较flash中的系统软件的版本号与待更新的版本的版本号,如果待更新版本号高,就进行系统软件版本的更新,否则不更新;将flash的中第一系统软件版本读到内存,对其进行校验检查;如果合法,则引导该版本;如果不合法,则需要确认是否还有第二版本;如果有,则需要对第二版本进行校验,如果合法将启动第二版本。系统软件的实现与烧写版本相似,都是通过flash中的版本信息,来管理BootLoader和系统软件版本,即读取flash中的BootLoader和系统软件版本的数量、名字、版本号以及在flash中保存的偏移地址;比较上述BootLoader的版本号与待更新的版本的版本号;如果待更新的版本号高,就将待更新版本写入flash中BootLoader的偏移地址;并更新flash中记录的BootLoader的版本号;否则不更新版本;如同上面一样,同上,比较flash中的系统软件的版本号与待更新的版本的版本号,如果待更新版本号高,就进行系统软件版本的更新,否则不更新。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号