一种嵌入式系统及其引导程序的升级方法、系统与流程

文档序号:15517447发布日期:2018-09-25 18:42阅读:269来源:国知局

本发明涉及嵌入式系统领域,具体涉及嵌入式系统及其引导程序的升级方法、系统。



背景技术:

现有的嵌入式系统(stm32),为了便于升级应用程序,通常采用通过引导程序来升级应用程序的方法,但是现有的引导程序在没有专业工具下却无法升级。

现有的引导程序(bootloader程序)的升级方法为:通过专业的仿真器,专业的编程软件,通过烧录的方法,对引导程序进行更新。这种方案,需要对机器进行拆机,需要一定的专业知识,成本高,效率低,耗时间,容易出错,导致升级非常不便。

因此,现有技术还有待改进和提高。



技术实现要素:

本发明主要提供一种嵌入式系统及其引导程序的升级方法、系统,以提高引导程序升级的效率。

根据第一方面,一种实施例中提供一种嵌入式系统引导程序的升级方法,包括如下步骤:

数据存储步骤,接收外部传输的引导程序升级数据,将所述引导程序升级数据存储在闪存的缓存区;所述闪存包括引导程序存储区,应用程序存储区和缓存区;

数据检测步骤,检测缓存区的引导程序升级数据是否完整;

数据更新步骤,若引导程序升级数据完整,则擦除引导程序存储区的数据,将缓存区的引导程序升级数据拷贝到引导程序存储区。

所述的嵌入式系统引导程序的升级方法,其中,数据存储步骤包括:

接收外部传输的引导程序升级数据的长度以及引导程序升级数据的一部分,读取接收的引导程序升级数据头部的第一预设个数字节,判断所述第一预设个数字节是否和本机型相匹配;若匹配,则继续接收剩下的引导程序升级数据;

每接收第二预设个数字节的引导程序升级数据,则将其写入到缓存区,将刚写入缓冲区的第二预设个数字节与当前接收的引导程序升级数据的第二预设个数字节进行比对;比对成功,则更新当前已接收数据的总长度;依此循环,直到外部传输的引导程序升级数据全部发送完成。

所述的嵌入式系统引导程序的升级方法,其中,所述数据检测步骤包括:

将接收的所述引导程序升级数据的长度和缓存区保存的引导程序升级数据的大小进行比对,以判断引导程序升级数据是否完整。

所述的嵌入式系统引导程序的升级方法,其中,所述接收外部传输的引导程序升级数据的步骤,包括如下步骤:

接收上位机通过网口或者usb线发送的升级指令,根据所述升级指令保存上位机发出的引导程序升级数据的长度,并向上位机反馈自身处于准备接收数据的状态;接收上位机发出的引导程序升级数据。

根据第二方面,一种实施例中提供一种嵌入式系统引导程序的升级系统,包括:

数据存储模块,用于接收外部传输的引导程序升级数据,将所述引导程序升级数据存储在闪存的缓存区;所述闪存包括引导程序存储区,应用程序存储区和缓存区;

数据检测模块,用于检测缓存区的引导程序升级数据是否完整;

数据更新模块,用于在数据检测模块检测到缓存区的引导程序升级数据完整后,擦除引导程序存储区的数据,将缓存区的引导程序升级数据拷贝到引导程序存储区。

所述的嵌入式系统引导程序的升级系统,其中,数据存储模块具体用于:

接收外部传输的引导程序升级数据的长度以及引导程序升级数据的一部分,读取接收的引导程序升级数据头部的第一预设个数字节,判断所述第一预设个数字节是否和本机型相匹配;若匹配,则继续接收剩下的引导程序升级数据;

每接收第二预设个数字节的引导程序升级数据,则将其写入到缓存区,将刚写入缓冲区的第二预设个数字节与当前接收的引导程序升级数据的第二预设个数字节进行比对;比对成功,则更新当前已接收数据的总长度;依此循环,直到外部传输的引导程序升级数据全部发送完成。

所述的嵌入式系统引导程序的升级系统,其中,所述数据检测模块具体用于:

将数据存储模块接收的所述引导程序升级数据的长度和缓存区保存的引导程序升级数据的大小进行比对,以判断引导程序升级数据是否完整。

所述的嵌入式系统引导程序的升级系统,其中,所述数据存储模块接收外部传输的引导程序升级数据,包括:

接收上位机通过网口或者usb线发送的升级指令,根据所述升级指令保存上位机发出的引导程序升级数据的长度,并向上位机反馈自身处于准备接收数据的状态;接收上位机发出的引导程序升级数据。

根据第三方面,一种实施例中提供一种嵌入式系统,包括:

闪存,用于存储程序;所述闪存包括引导程序存储区,应用程序存储区和缓存区;

处理器,用于通过执行所述闪存存储的程序以实现如上所述的方法。

根据第四方面,一种实施例中提供一种计算机可读存储介质,包括应用程序,所述应用程序能够被处理器执行以实现如上所述的方法。

依据上述实施例的嵌入式系统及其引导程序的升级方法、系统,将接收到的引导程序升级数据存储在闪存的缓存区,检测引导程序升级数据是否完整,在数据完整时,擦除引导程序存储区的数据,将缓存区的引导程序升级数据拷贝到引导程序存储区,完成升级。可见,本发明提供的升级方法不需要专业的工具,不需要拆机;而且,从设备本身的闪存内进行拷贝,拷贝过程非常短,不容易被外界打断,升级过程效率高、安全、可靠、方便。

附图说明

图1为本发明提供嵌入式系统引导程序的升级系统的结构框图;

图2为本发明提供嵌入式系统引导程序的升级系统中,闪存的存储区间示意图;

图3为本发明提供嵌入式系统引导程序的升级方法的流程图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。

本发明提供一种嵌入式系统,如图1所示,所述嵌入式系统包括引导程序(bootloader程序)的升级系统和闪存(flashmemory)40。本实施例中,所述嵌入式系统应用在stm32上。

所述引导程序的升级系统包括:数据存储模块10,数据检测模块20和数据更新模块30。

如图2所示,所述闪存40包括:引导程序存储区,应用程序存储区和缓存区。具体的,预先将闪存40的地址区间分成3部分,一部分为引导程序存储区、另一部分为应用程序存储区,剩下的部分为缓存区。由于本实施例采用stm32芯片,stm32芯片的闪存地址区间为0x08000000至0x080fffff。

所述引导程序存储区的地址区间为:0x08000000-0x08040000,用于存储引导程序的代码,所述引导程序也是就系统启动首先执行的地方,也是本发明需要更新的部分。

所述应用程序存储区的地址区间为:0x08040000-0x080a0000,用于存储各个应用程序(app)的代码。引导程序启动后,再跳转到此部分运行。本发明是在应用程序运行后,再对引导程序进行升级。

所述缓存区的地址区间为:0x080a0000-0x080fffff,用于缓存,本发明将需要更新的引导程序升级数据暂时存储在缓存区,等下载完成确认文件无误后,在将缓存区的内容拷贝到引导程序存储区,从而实现引导程序的升级。

所述数据存储模块10,用于接收外部传输的(例如,上位机发出的)引导程序升级数据,将所述引导程序升级数据存储在闪存40的缓存区。

具体的,所述数据存储模块10接收上位机通过网口或者usb线发送的升级指令,根据所述升级指令保存上位机发出的引导程序升级数据的长度(大小),并向上位机反馈自身处于准备接收数据的状态。上位机接收到该状态后,确认可以开始传送数据,将需要升级的引导程序升级数据发送给数据存储模块10。所述数据存储模块10接收上位机发出的引导程序升级数据。所述引导程序升级数据为引导程序升级所需的所有数据,得到了引导程序升级数据即可完成对引导程序的升级。

所述数据存储模块10先接收上位机传输的引导程序升级数据的一部分,读取接收的引导程序升级数据头部的第一预设个数字节,判断所述第一预设个数字节是否和本机型(安装有所述嵌入式系统的终端)相匹配;若匹配,则说明这部分数据与本机型相匹配,则继续接收剩下的引导程序升级数据;若不匹配,则返回文件不匹配的结果给上位机,升级失败。所述第一预设个数可根据需要进行设置,几个字节即可。进行机型匹配可确保引导程序升级数据的准确性,避免出现兼容问题。

所述数据存储模块10在匹配成功后,每接收第二预设个数字节的引导程序升级数据,则将其写入到缓存区,将刚写入缓冲区的第二预设个数字节与当前接收的引导程序升级数据的第二预设个数字节进行比对;比对成功,则更新当前已接收数据的总长度(可采用累加的方式计算当前已接收数据的总长度);依此循环,直到外部传输的引导程序升级数据全部发送完成。所述第二预设个数可根据需要进行设置,本实施例采用4个。所有存储在缓存区的引导程序升级数据都经过了比对,确保接收的升级数据与存储的升级数据一致,避免数据出错。

所述数据检测模块20,用于检测缓存区的引导程序升级数据是否完整。具体的,所述数据检测模块20将数据存储模块10接收的所述引导程序升级数据的长度和缓存区保存的引导程序升级数据的大小进行比对,以判断引导程序升级数据是否完整,即,数据存储模块10接收的引导程序升级数据的长度与缓存区保存的引导程序升级数据的长度相等,则认为缓存区的升级数据完整。

所述数据更新模块30,用于在数据检测模块20检测到缓存区的引导程序升级数据完整后,擦除引导程序存储区(0x08000000-0x08040000)的数据,将缓存区的引导程序升级数据拷贝到引导程序存储区(0x08000000-0x08040000),从而实现引导程序的升级。拷贝动作完成后,则执行软件复位,重启终端,此时,嵌入式系统就从新的引导程序开始运行。引导程序升级完成。

所述升级系统可以是一应用程序,用来专门升级引导程序。

综上所述,本发明将引导程序升级数据首先保存在缓存区,以保护引导程序升级数据不被轻易损坏。由于数据通过上位机传送过程有个10秒左右的时间,如果直接把下载的升级数据放在引导程序存储区,当升级数据在传送的时间内突然间断电,或者突然拔掉了网线/usb等,引导程序存储区内的数据就会不完整,则会出现终端启动不起来的致命问题。

而本发明从终端本身的存储区拷贝升级数据,这个过程仅仅需要微秒毫秒级别,且不容易被外界打断,这个过程出现问题的现象微乎其微,可以忽略不计。而且通过判断文件是否正确和完整,保护升级数据不被轻易损坏。本发明不需要专业的工具,不需要具备专业知识,不需要拆机,只需要上位机通过usb线或者网线等其他通信接口向安装有stm32芯片的终端,即能高效经济简单的对引导程序代码部分进行升级。

基于上述实施例提供的升级系统,本发明还提供一种嵌入式系统引导程序的升级方法,如图3所示,所述升级方法包括如下步骤:

s09、将闪存的地址区间分成引导程序存储区,应用程序存储区和缓存区。由于本实施例采用stm32芯片,stm32芯片的闪存地址区间为0x08000000至0x080fffff。

所述引导程序存储区的地址区间为:0x08000000-0x08040000,用于存储引导程序的代码,所述引导程序也是就系统启动首先执行的地方,也是本发明需要更新的部分。

所述应用程序存储区的地址区间为:0x08040000-0x080a0000,用于存储各个应用程序(app)的代码。引导程序启动后,再跳转到此部分运行。本发明是在升级应用程序运行后,再对引导程序进行升级。

所述缓存区的地址区间为:0x080a0000-0x080fffff,用于缓存,本发明将需要更新的引导程序升级数据暂时存储在缓存区,等下载完成确认文件无误后,在将缓存区的内容拷贝到引导程序存储区,从而实现引导程序的升级。

s10、数据存储步骤,升级应用程序(app)接收上位机传输的引导程序升级数据,将所述引导程序升级数据存储在闪存的缓存区。

具体的,升级应用程序接收上位机通过网口或者usb线发送的升级指令,根据所述升级指令保存上位机发出的引导程序升级数据的长度(大小),进入升级流程,并向上位机反馈自身处于准备接收数据的状态。上位机再发送命令读取升级应用程序返回的信息,接收到该状态(返回信息正确)后,确认可以开始传送数据,将需要升级的引导程序升级数据发送给升级应用程序。所述升级应用程序接收上位机发出的引导程序升级数据。所述引导程序升级数据为引导程序升级所需的所有数据,得到了引导程序升级数据即可完成对引导程序的升级。

所述升级应用程序先接收上位机传输的引导程序升级数据的一部分,读取接收的引导程序升级数据头部的第一预设个数字节,判断所述第一预设个数字节是否和本机型(安装有所述嵌入式系统的终端)相匹配;若匹配,则说明这部分数据与本机型相匹配,则继续接收剩下的引导程序升级数据;若不匹配,则返回文件不匹配的结果给上位机,升级失败。所述第一预设个数可根据需要进行设置,几个字节即可。进行机型匹配可确保引导程序升级数据的准确性,避免出现兼容问题。

所述升级应用程序在匹配成功后,每接收第二预设个数字节的引导程序升级数据,则将其写入到缓存区,将刚写入缓冲区的第二预设个数字节与当前接收的引导程序升级数据的第二预设个数字节进行比对;比对成功,则更新当前已接收数据的总长度(可采用累加的方式计算当前已接收数据的总长度);依此循环,直到外部传输的引导程序升级数据全部发送完成。所述第二预设个数可根据需要进行设置,本实施例采用4个。所有存储在缓存区的引导程序升级数据都经过了比对,确保接收的升级数据与存储的升级数据一致,避免数据出错。

s20、数据检测步骤,升级应用程序检测缓存区的引导程序升级数据是否完整。具体的,所述升级应用程序将接收的所述引导程序升级数据的长度和缓存区保存的引导程序升级数据的大小进行比对,以判断引导程序升级数据是否完整,即,接收的引导程序升级数据的长度与缓存区保存的引导程序升级数据的长度相等,则认为缓存区的升级数据完整。

s30、数据更新步骤,若引导程序升级数据完整,则升级应用程序擦除引导程序存储区的数据,将缓存区的引导程序升级数据拷贝到引导程序存储区,从而实现引导程序的升级。拷贝动作完成后,则执行软件复位,重启终端,此时,嵌入式系统就从新的引导程序开始运行。引导程序升级完成。

综上所述,本发明将引导程序升级数据首先保存在缓存区,以保护引导程序升级数据不被轻易损坏。由于数据通过上位机传送过程有个10秒左右的时间,如果直接把下载的升级数据放在引导程序存储区,当升级数据在传送的时间内突然间断电,或者突然拔掉了网线/usb等,引导程序存储区内的数据就会不完整,则会出现终端启动不起来的致命问题。

而本发明从终端本身的存储区拷贝升级数据,这个过程仅仅需要微秒毫秒级别,且不容易被外界打断,这个过程出现问题的现象微乎其微,可以忽略不计。而且通过判断文件是否正确和完整,保护升级数据不被轻易损坏。本发明不需要专业的工具,不需要具备专业知识,不需要拆机,只需要上位机通过usb线或者网线等其他通信接口向安装有stm32芯片的终端,即能高效经济简单的对引导程序代码部分进行升级。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本领域的一般技术人员,依据本发明的思想,可以对上述具体实施方式进行变化。

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