一种嵌入式设备的固件升级方法与流程

文档序号:12786035阅读:682来源:国知局
一种嵌入式设备的固件升级方法与流程

本发明涉及嵌入式设备的维护领域,特别涉及一种嵌入式设备的固件升级方法。



背景技术:

固件(Firmware)是指写入EROM(可擦写只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。固件是担任着一个系统最基础、最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

在诸如麻醉机的嵌入式设备的维护过程中,为了节约成本,在不更换硬件、结构的前提下,进行固件升级满足需求是普遍的做法。对于新的软件功能的需求,用户更愿意支付少量的固件升级费用,而不是更换整个价值不菲的机器。这样,也就意味着麻醉机的固件必须具备快速、便捷的升级的方法。通常的固件升级的方法是更换有新固件的电路板或者技术人员携带工具去现场进行更新。以上都需要对机器进行拆装,繁琐且容易出现安装问题等,时效性也比较差。



技术实现要素:

本发明的目的在于克服已有的嵌入式设备固件升级方法需要更换有新固件的电路板或者技术人员携带工具去现场进行更新的缺陷,从而提供一种时效性好、简单方便的固件升级方法。

为了实现上述目的,本发明提供了一种嵌入式设备的固件升级方法,包括:

步骤1)、嵌入式设备加电启动后,运行引导加载程序;

步骤2)、嵌入式设备的Flash读写初始化,将Flash的API库从Flash区域拷贝到SRAM区;

步骤3)、读取启动标志,进而判断是进入升级模式还是正常运行模式,若是升级模式执行步骤4),若是正常运行模式,则执行步骤11);

步骤4)、等待图形用户界面发送升级指令,当引导加载程序收到升级指令后,向图形用户界面回复确认升级;

步骤5)、擦除嵌入式设备的控制单元的应用程序区,若擦除成功,向图形用户界面上报成功指令,然后执行下一步,若擦除失败,向图形用户界面上报升级失败 指令,然后重新执行步骤4);

步骤6)、当图形用户界面收到擦除成功指令后,开始读取并解析升级文件,然后将升级文件中的每行数据提取后按照通讯协议封装,生成升级数据包,然后向嵌入式设备的控制单元传输;

步骤7)、嵌入式设备的控制单元接收到升级数据包,提取其中的有效数据,按其地址顺序写入嵌入式设备的控制单元的应用程序区;

步骤8)、写完后,再从存储区中读取写入的数据,比较读取和写入数据是否一致,若嵌入式设备的控制单元接收升级数据超时或者写入数据异常,则向图形用户界面申请重传该升级数据帧的数据包,若写入数据正常,判断升级数据是否传输完毕,若传输完毕,执行步骤10),否则继续向图像用户界面申请下一数据包;

步骤9)、当图形用户界面收到嵌入式设备的控制单元的升级数据申请包后,继续封装相应的数据帧,并传输至嵌入式设备的控制单元,然后重新执行步骤7);当图形用户界面接收到的嵌入式设备的控制单元的升级数据申请包超时,则重新发送嵌入式设备的控制单元未收到的升级数据帧;

步骤10)、整个数据传输完毕,表明嵌入式设备的控制单元正常写入完毕,改写启动标志,结束升级过程,重新执行步骤1);

步骤11)、跳转到嵌入式设备的控制单元的开始地址,运行嵌入式设备的控制单元的应用程序。

上述技术方案中,所述升级文件为HEX格式的升级文件,HEX格式的数据解析必须从包括行首字符、数据长度、数据类型、校验在内的多个方面做检查。

本发明的优点在于:

本发明可使用外接存储卡(U盘、SD卡等)或者远程连接等方式对BDU及下端设备进行升级,不需要携带烧写工具,也不需要进行拆装,省时省力。

附图说明

图1是一个麻醉机的程序存储区的示意图;

图2是本发明的固件升级方法的流程图。

具体实施方式

现结合附图对本发明作进一步的描述。

嵌入式设备的运行过程一般为:从程序存储区启动后,运行存储在程序存储区的代码数据。在对嵌入式设备的固件进行自动升级时,需要替换程序存储区中的一部分数据。

在本发明的实施例中,以麻醉机为例,对麻醉机固件的升级方法加以说明。

图1为一个麻醉机的程序存储区的示意图。从该图中可以看出,程序存储区的地址0x003D8000是引导加载程序(Bootloader)的开始地址,该地址之后的一部分存储空间存储了Bootloader的代码。麻醉机操作系统的加载启动任务由BootLoader来完成,在本发明中,麻醉机软件的在线升级也由BootLoader完成。程序存储区的地址0x003E4000是启动标志的存放地址,该启动标志用于标识当前的麻醉机应当处于升级模式还是正常运行模式。程序存储区的地址0x003E8000是BDU(Breath Delivery Unit,呼吸控制单元)应用程序开始地址。

参考图2,本发明的固件升级方法包括:

步骤1)、麻醉机加电启动后,运行Bootloader。

步骤2)、Flash读写初始化,将Flash的API库从Flash区域拷贝到SRAM区。

步骤3)、读取启动标志,进而判断是进入升级模式(在图2中启动标志为0xFFFF表示升级模式)还是正常运行模式(在图2中启动标志为0x0001表示正常运行模式),若是升级模式执行步骤4),若是正常运行模式,则执行步骤11)。

步骤4)、等待GUI(Graphic User Interface,图形用户界面)发送升级指令,当Bootloader收到升级指令后,向GUI回复确认升级。

步骤5)、擦除BDU(Breath Delivery Unit,呼吸控制单元)应用程序区,若擦除成功,向GUI上报成功指令,然后执行下一步,若擦除失败,向GUI上报升级失败指令,然后重新执行步骤4)。

步骤6)、当GUI收到擦除成功指令后,开始读取并解析HEX格式的升级文件,HEX格式的数据解析必须从行首字符、数据长度、数据类型、校验等各个方面做检查。然后将升级文件中的每行数据提取后按照通讯协议封装,生成升级数据包,然后向BDU传输。

步骤7)、BDU接收到升级数据包,提取其中的有效数据,按其地址顺序写入BDU应用程序区。

步骤8)、写完后,再从存储区中读取写入的数据,比较读取和写入数据是否一致。若BDU接收升级数据超时或者写入数据异常,则向GUI申请重传该升级数据帧的数据包,若写入数据正常,判断升级数据是否传输完毕,若传输完毕,执行步骤10),否则继续向GUI申请下一数据包。

步骤9)、当GUI收到BDU的升级数据申请包后,继续封装相应的数据帧,并传输至BDU,然后重新执行步骤7);当GUI接收到的BDU的升级数据申请包超时,则重新发送BDU未收到的升级数据帧。

步骤10)、整个数据传输完毕,表明BDU正常写入完毕,改写启动标志(将启动标志由0xFFFF改写为0x0001),结束升级过程,重新执行步骤1)。

步骤11)、跳转到BDU开始地址,运行BDU应用程序。

麻醉机中具备了固件升级的功能后,可以实现不用拆机完成固件升级;当麻醉机具备远程通讯功能,还可以完成远程升级、远程诊断、维护等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

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