一种通用的嵌入式计算机软件在线升级方法

文档序号:9910765阅读:1544来源:国知局
一种通用的嵌入式计算机软件在线升级方法
【技术领域】
[0001]本发明属于嵌入式设备技术领域,特别涉及一种通用的嵌入式计算机软件在线升级方法。
【背景技术】
[0002]传统的嵌入式计算机,由于硬件资源的限制(比如,程序存储器容量小,运算速度慢,无外部通信接口或外部通信接口速度慢),在生产阶段就把用户程序固化到程序存储器中,出厂后用户程序是无法随意更改的。如果在运行中程序出现问题,或者功能需要改进,那就只能返厂维修,或者现场拆机更换硬件板卡。
[0003]随着科技的不断发展,嵌入式计算机中的硬件资源也越来越充裕,这就为嵌入式计算机实现更多功能提供了硬件保障。为了方便厂家对系统的维护、满足用户多变的需求,以及延长系统的生命周期等,嵌入式计算机应当具备在线升级的能力。
[0004]目前,在LED显示屏控制器所用的嵌入式计算机中普遍使用的升级方法是,直接把升级文件中的新版用户程序写入程序存储器中,覆盖掉之前的旧版用户程序,然后重启系统,直接使用程序存储器中的新版用户程序。这种升级方法将会导致以下问题:
[0005]1.在线升级时,待升级的嵌入式计算机无法运行用户程序,因此,嵌入式计算机将会失去响应。
[0006]2.升级完成后,必须重启待升级的嵌入式计算机,这将会影响整个嵌入式系统的正常运行。
[0007]3.在线升级时,如果升级数据发生错误(比如,升级文件接收错误,升级文件写入错误),这将会导致用户分区的用户程序错误。
[0008]4.在线升级时,如果嵌入式计算机硬件发生故障(比如,系统掉电,程序存储器损坏),这也会导致用户分区的用户程序错误(引导区和恢复区只读不写)。
[0009]5.在线升级时,如果升级文件选择错误,这同样会导致用户分区的用户程序错误,最终将会导致重启后用户程序无法正常运行。

【发明内容】

[0010]本发明的目的在于克服现有升级方法的不足,提供一种可靠的、不影响系统运行的嵌入式计算机软件在线升级方法。
[0011 ]本发明的技术方案是,一种通用的嵌入式计算机软件在线升级方法,采用在线升级服务器对嵌入式计算机软件升级,在线升级服务器的升级步骤包括:
[0012]步骤[201],开始升级;
[0013]步骤[202],读取升级文件头,
[0014]该文件头为升级文件的前若干个字节,包括前半部分字节和后半部分字节,
[0015]前半部分字节为文件头的后半部分字节以及升级文件除文件头之外的所有数据的校验和,后半部分字节为升级文件的版本号;
[0016]步骤[203],校验升级文件,SP,
[0017]计算文件头的后半部分字节以及升级文件除文件头之外的所有数据的校验和,然后与文件头前半部分字节的数据进行比较,如果相同则说明升级文件数据无误,否则说明升级文件数据错误;
[0018]步骤[204],比较版本号,SP,
[0019]发送获取软件版本号的指令给嵌入式计算机以获得嵌入式计算机中正在运行软件的版本号,然后与文件头后半部分字节的数据进行比较,如果升级文件的版本号大于正在运行软件的版本号则说明升级文件版本号无误,否则说明升级文件版本号错误;
[0020]步骤[205],发送升级文件,SP,
[0021]把升级文件中除了文件头之外的所有数据(即升级文件中的有效升级数据)拆为若干个数据块,按照升级通信协议打包,形成升级文件数据包后按顺序发送给嵌入式计算机,
[0022]每发送一个升级文件数据包后都要等待对方的应答,如果接收到失败的应答则重新发送当前的数据包,否则继续发送下一个数据包,直到所有有效的升级数据发送完成为止,
[0023]如果同一个升级文件数据包连续多次发送失败,则表示升级失败;
[0024]步骤[206],发送重启指令,
[0025]在合适的时间发送重启指令给嵌入式计算机,以便完成升级,重启指令的发送时间完全由用户而定;
[0026]步骤[207],结束升级。
[0027]进一步的,所述嵌入式计算机具有程序存储器,程序存储器具有多个分区,包括:
[0028]启动区,用于存储嵌入式计算机的启动程序,为只读分区,
[0029]上电后,嵌入式计算机的主控制器从启动区读出启动程序并运行,用来启动整个嵌入式计算机;
[0030]配置区,用于存储分区的激活信息,为可读写分区,
[0031]在嵌入式计算机启动的最后阶段,启动程序会读取配置区中的分区激活信息,然后转跳到激活的分区,执行激活分区中的用户程序;
[0032]恢复区,用于存储预设的用户程序,为只读分区,
[0033]在正常情况下恢复区未激活,只有在升级失败时才会激活该分区,在升级失败时,嵌入式计算机启动后会进入该分区,执行该分区中预设的用户程序,
[0034]预设的用户程序具备完整的升级文件接收和写入的功能,确保在升级失败时,嵌入式计算机仍然具备在线升级的功能,
[0035]预设的用户程序还具备硬件维护的功能,可以方便用户检测硬件单元的故障;
[0036]用户一区,为可读写分区,
[0037]用户一区存储正常使用的用户程序,即从在线升级服务器接收到的升级文件数据;
[0038]用户二区,为可读写分区,
[0039]与用户一区一样,用来存储正常使用的用户程序,在正常情况下,启动程序会转跳到两个用户分区中的一个来运行其中存储的用户程序。
[0040]进一步的,嵌入式计算机的升级步骤包括:
[0041 ]步骤[401],开始升级,
[0042]接收到获取软件版本号的指令后,嵌入式计算机将正在运行软件的版本号返回给在线升级服务器,表示升级开始;
[0043]步骤[402],接收升级文件,
[0044]按顺序从在线升级服务器接收升级文件数据包,成功拆包后写入程序存储器中未激活的用户分区(用户一区或用户二区),最后校验本次写入的数据,
[0045]如果校验无误,则发送成功的应答给在线升级服务器,否则发送失败的应答,
[0046]如果同一个升级文件数据包连续多次校验错误,则表示升级失败,之后将修改配置区中的分区激活信息,激活恢复区,否则,嵌入式计算机将会循环接收升级文件,直到所有的升级文件数据包接收完成为止,之后将修改配置区中的分区激活信息,激活另一个用户分区;
[0047]步骤[403],重启嵌入式计算机,
[0048]等待在线升级服务器的重启指令,接收到后立即重启;
[0049]步骤[404],结束升级。
[0050]进一步的,嵌入式计算机的启动步骤包括:
[0051]步骤[501],上电开始启动;
[0052]步骤[502],运行启动区程序;
[0053]步骤[503],读取配置区分区激活信息,
[0054]如果上次升级失败,配置区中记录的激活信息为恢复区;如果上次升级成功,配置区中记录的激活信息为用户分区之一;
[0055]步骤[504],转跳到激活的分区,并运行分区中的用户程序;
[0056]步骤[505],启动完成。
[0057]进一步的,所述的嵌入式计算机是作为LED显示屏控制器使用。
[°°58] 进一步的,所述的嵌入式计算机基于单片机、ARM、MIPS或PowerPC平台。
[0059]本发明的有益效果是:在线升级时,待升级的嵌入式计算机内用户程序的运行不受影响;升级完成后,不必立即重启待升级的嵌入式计算机,重启时间完全由用户来确定,可以在一个相对不怎么影响系统运行的时间内重启;在线升级时,升级通信协议能确保升级文件会得到完整和正确的接收与写入;在线升级时,如果嵌入式计算机硬件发生故障,升级机制将会在下次重启时进入恢复区,使嵌入式计算机进入确定的运行状态,以便用户远程连接并排查故障;在线升级时,升级机制将会对升级文件进行校验,确保升级文件选择无误。
【附图说明】
[0060]图1本发明的方法所基于的系统结构示意图。
[0061]图2本发明实施例中的在线升级服务器升级流程图。
[0062]图3是本发明实施例中嵌入式计算机程序存储器的分区示意图。
[0063]图4是本发明实施例中嵌入式计算机的升级流程图。
[0064]图5是本发明实施例中嵌入式计算机的启动流程图。
【具体实施方式】
[0065]本发明的通用的嵌入式计算机软件在线升级方法,其实现的系统结构参见附图1。包括在线升级服务器(101)、通信介质(102)、嵌入式计算机(103),在线升级服务器(101)与嵌入式计算机(103)之间通过通信介质(102)相连。
[0066]在线升级服务器:
[0067]在线升级服务器提供在线升级服务,通常以电脑中一个可执行程序的形式而存在。
[0068]在线升级服务器的升级步骤参见附图2。
[0069]步骤[201],开始升级。
[0070]步骤[202],读取升级文件头。文件头为升级文件的前8个字节,前半部分4个字节为后续所有数据(文件头的后半部分4个字节以及升级文件除文件头之外的所有数据)的校验和,后半部分4个字节为升级文件的版本号。
[0071]步骤[203],校验升级文件。计算文件头的后半部分4个字节以及升级文件除文件头之外的所有数据的校验和,然后与文件头前半部分4个字节的数据进行比较,如果相同则说明升级文件数据无误,否则说明升级文件数据错误。
[0072]步骤[204],比较版本号。发送获取软件版本号的指令给嵌入式计算机以获得嵌入式计算机中正在运行软件的版本号,然后与文件头后半部分4个字节的数据进行比较,如果升级文件的版本号大于正在运行软件的版本号则说明升级文件版本号无误,否则说明升级文件版本号错误。
[0073]校验升级文件与比较版本号,可以确保升级文件的选择无误。
[0074]步骤[205],发送升级文件。把升级文件中除了文件头之外的所有数据(即升级文件中的有效升级数据)拆为若干个数据块,按照升级通信协议打包,形成升级文件数据包后按顺序发送给嵌入式计算机。每发送一个升级文件
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1