一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种电子设备的应用程序固件升级方法、装置及系统与流程

2022-03-05 08:15:26 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及一种电子设备的应用程序固件升级方法、装置及系统。


背景技术:

2.当设备要增加新的功能或解决现有产品的功能缺陷时,需要进行设备固件升级,固件升级的过程必须稳定可靠,否则会导致设备功能异常,甚至要拆机返工,损失巨大。
3.设备固件升级的方式一般如下:设备程序存储区域包含boot和app两个不同区域,上电的时候程序运行在boot区域,如果检测到app有效,则跳转到app运行,若未检测到有效app,则等待升级命令升级app固件,当在运行app时,如果接收到固件升级命令,则清除app有效标志,复位重新进入boot,开始固件升级。
4.现有技术主要存在以下技术问题:
5.1.app是否有效的标志检测机制不一致,有些方法即使升级了错误的app,也会运行app,导致设备异常,且无法再次升级;
6.2.若在烧录过程中异常断电,无法运行程序,也无法升级程序,最终导致设备异常或损坏。


技术实现要素:

7.基于上述现状,本发明的主要目的在于提供一种保证整个设备升级过程无法出错的电子设备的应用程序固件升级方法及装置。
8.为实现上述目的,本发明采用的技术方案如下:
9.一种电子设备的应用程序固件升级方法,所述电子设备的程序存储区域中包括引导程序区域和应用程序区域,所述引导程序区域中存储有引导程序,所述应用程序区域中存储有应用程序固件,所述方法包括:
10.运行所述引导程序,判断所述应用程序固件是否有效;
11.其中,所述引导程序中包括内存起始地址、内存结束地址、预设设备匹配值和预设升级完成标志值;判断所述应用程序固件是否有效包括:判断所述应用程序固件的堆栈地址是否在所述内存起始地址和所述内存结束地址范围内、判断所述应用程序固件中设备匹配值与所述预设设备匹配值是否相同、以及判断所述应用程序固件中升级完成标志值与所述预设升级完成标志值是否相同,如果均为是,则认为所述应用程序固件有效,否则,认为所述应用程序固件无效;
12.若所述应用程序固件无效,接收第一升级指令,执行应用程序固件升级;
13.当升级完成后,设置所述应用程序固件中的升级完成标志值为所述预设升级完成标志值。
14.优选地,所述堆栈地址包括:所述应用程序固件区域中起始n个字节数据组成的数值。
15.优选地,所述设备匹配值包括:所述应用程序固件中预设固定位置开始连续预设长度的程序数据,所述预设长度为所述预设设备匹配值的长度。
16.优选地,所述设备匹配值还包括所述电子设备的型号信息。
17.优选地,所述升级完成标志值包括:所述应用程序固件中末尾固定字节的程序数值。
18.优选地,若所述应用程序固件有效,则运行所述应用程序固件;
19.当所述应用程序固件运行过程中接收到第二升级指令时,则将所述应用程序固件中升级完成标志值设为非预设升级完成标志值;
20.重新运行所述引导程序,确定所述应用程序固件无效;
21.所述引导程序接收所述第一升级指令,对所述应用程序固件执行升级,并设置所述应用程序固件中的升级完成标志值为所述预设升级完成标志值。
22.本发明还提供一种电子设备,能够采用本发明的电子设备的应用程序固件升级方法对所述电子设备的应用程序固件进行升级操作。
23.本发明还提供一种电子设备的应用程序固件升级装置,包括引导程序执行模块和应用程序固件执行模块,所述引导程序执行模块包括判断单元、指令接收单元和升级单元,
24.所述引导程序执行模块用于运行引导程序,所述应用程序固件执行模块用于运行应用程序固件,所述判断单元用于判断所述应用程序固件是否有效,所述引导程序中包括内存起始地址、内存结束地址、预设设备匹配值和预设升级完成标志值;
25.所述判断单元包括第一判断单元、第二判断单元和第三判断单元,其中,
26.所述第一判断单元用于判断所述应用程序固件的堆栈地址是否在所述内存起始地址和所述内存结束地址范围内,
27.所述第二判断单元用于判断所述应用程序固件中设备匹配值与所述预设设备匹配值是否相同,
28.所述第三判断单元用于判断所述应用程序固件中升级完成标志值与所述预设升级完成标志值是否相同;
29.所述判断单元能够在所述第一判断单元、所述第二判断单元和所述第三判断单元的判断结果均为是的情况下认为所述应用程序固件有效,否则,认为所述应用程序固件无效;
30.所述指令接收单元能够在所述应用程序固件无效时接收第一升级指令,所述升级单元能够执行应用程序固件升级,并在升级完成后,设置所述应用程序固件中的升级完成标志值为所述预设升级完成标志值。
31.优选地,若所述指令接收单元在所述应用程序执行模块运行所述应用程序固件的过程中接收到第二升级指令,则所述应用程序执行模块将所述应用程序数据中升级完成标志值设为非预设升级完成标志值,所述引导程序执行模块重新运行所述引导程序,所述判断单元确定所述应用程序固件无效;
32.所述指令接收单元接收到所述第一升级指令后,所述升级单元能够执行应用程序固件升级,并在升级完成后,设置所述应用程序固件中的升级完成标志值为所述预设升级完成标志值。
33.本发明还提供一种电子设备的应用程序固件升级系统,包括上位机和本发明的电
子设备的应用程序固件升级装置,
34.所述上位机用于获取所述电子设备的应用程序固件升级装置的工作模式;
35.所述上位机在所述电子设备的应用程序固件升级装置运行在引导程序工作模式时,向所述电子设备的应用程序固件升级装置发送第一升级指令,所述电子设备的应用程序固件升级装置执行应用程序升级;
36.所述上位机在所述电子设备的应用程序固件升级装置运行在应用程序工作模式时,向所述电子设备的应用程序固件升级装置发送第二升级指令,所述电子设备的应用程序固件升级装置将升级完成标志值设为非预设升级完成标志值,所述电子设备的应用程序固件升级装置执行应用程序固件升级。
37.本发明的电子设备的应用程序固件升级方法及装置,上电后运行引导程序,检测应用程序固件是否有效,有效即进入应用程序固件运行,否则引导程序接收升级指令并执行应用程序固件升级,其中,引导程序内包含内存起始地址、内存结束地址、预设设备匹配值和预设升级完成标志值,内存起始地址、内存结束地址和预设设备匹配值这3个值都正确可以确保升级的文件是正确,错误的程序无法被升级到设备,预设升级完成标志值在升级过程最后阶段写入,该值正确可以确保已经完成所有数据的升级,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级应用程序,从而保证电子设备升级过程无法出错。
38.本发明的电子设备能够采用本发明的应用程序固件升级方法对所述电子设备的应用程序进行升级操作,保证错误的程序无法被升级到设备,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级固件。
39.本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
40.以下将参照附图对根据本发明的电子设备的应用程序升级方法、应用程序升级系统的优选实施方式进行描述。图中:
41.图1为根据本发明的一种优选实施方式的电子设备的应用程序固件升级方法流程图;
42.图2为根据本发明的另一种优选实施方式的电子设备的应用程序固件升级方法流程图;
43.图3为根据本发明的一种优选实施方式的电子设备的应用程序固件升级装置结构图;
44.图4为根据本发明的一种优选实施方式的应用程序固件升级系统示意图;
45.图5为图4所示应用程序固件升级系统工作流程图。
具体实施方式
46.图1为根据本发明的一种优选实施方式的电子设备的应用程序固件升级方法流程图,本发明的电子设备的程序存储区域中包括引导程序区域和应用程序固件区域,引导程
序区域中存储有引导程序,应用程序固件区域中存储有应用程序固件。本发明中,引导程序可用于执行应用程序固件的升级操作,具体的,可以包括,引导程序判断应用程序固件是否有效,以及实现升级操作等。应用程序固件通常是指与电子设备的硬件配套使用的应用程序,是依托于硬件而存在的应用程序。电子设备开启后,先运行引导程序,通过引导程序判断应用程序固件是否有效,如果有效,则运行应用程序固件,否则,等待升级指令,执行应用程序固件升级。
47.本发明的电子设备的应用程序固件升级方法包括:
48.s101:运行引导程序。
49.引导程序中包括内存起始地址preflag1_l、内存结束地址preflag1_h、预设设备匹配值preflag2和预设升级完成标志值preflag3。
50.s102:判断应用程序固件区域中的应用程序固件是否有效。
51.其中,判断应用程序固件是否有效包括:
52.s1021:判断应用程序固件的堆栈地址是否在所述内存起始地址preflag1_l和所述内存结束地址preflag1_h范围内。
53.s1022:判断应用程序固件中设备匹配值与所述预设设备匹配值preflag2是否相同。
54.s1023:判断应用程序固件数据中升级完成标志值与所述预设升级完成标志值preflag3是否相同。
55.如果s1021、s1022和s1023判断结果均为是,则认为应用程序固件有效,如果s1021、s1022和s1023其中一个判断结果为否,则判断应用程序固件无效;若应用程序固件无效,则执行s103。
56.s103:接收第一升级指令,对应用程序固件执行升级。在具体实施方式中,通常是由上位机发出第一升级指令。
57.s104:当升级完成后,设置所述应用程序固件中的升级完成标志值为所述预设升级完成标志值。
58.通常,在应用程序固件有效时,会运行应用程序固件。
59.本发明的电子设备的应用程序固件升级方法中,上电后运行引导程序,检测应用程序固件是否有效,有效即进入应用程序固件运行,否则引导程序接收升级指令并执行应用程序固件升级,其中,引导程序内包含内存起始地址preflag1_l、内存结束地址preflag1_h、预设设备匹配值preflag2和预设升级完成标志值preflag3,内存起始地址preflag1_l、内存结束地址preflag1_h和预设设备匹配值preflag2这3个值都正确可以确保升级的文件是正确,错误的程序无法被升级到设备,预设升级完成标志值preflag3在升级过程最后阶段写入,该值正确可以确保已经完成所有数据的升级,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级应用程序,从而保证电子设备升级过程无法出错。
60.在s101中,引导程序中的preflag1_l、preflag1_h可以为32位无符号整型数值,代表的可以是电子设备ram区域的开始地址和结束地址,由硬件决定,例如硬件包含192k的ram,起始地址为0x2000000,则preflag1_l等于0x2000000,preflag1_h等于0x20030000,preflag2、preflag3均可为特定的字符串或者数组。
61.在s1021中,读取应用程序固件区域中起始n个字节数据组成的数值即为应用程序固件的堆栈地址。例如,可以是应用程序固件区域最开始的4个字节组成的32位无符号整型数据。运行引导程序时,首先判断应用程序固件的堆栈地址(flag1)是否满足preflag1_l《flag1《preflag1_h,如果不满足,则判断应用程序固件无效,引导程序进入等待升级。应用程序固件的堆栈地址是在编译过程时固化在软件内部的,表示应用程序在内存运行的起始地址,编译过程中会根据电子设备的内存地址范围确定堆栈地址,当编译过程中输入错误的内存信息,则会导致该地址不在电子设备ram区域的起始地址和结束地址范围内,则表示该应用程序不是该电子设备的,所以,flag1正确可以确保软件是正确的固件。
62.在s1022中,应用程序固件中的设备匹配值可以是在应用程序固件中的预设固定位置开始连续预设长度的程序数据,所述预设长度为引导程序中预设设备匹配值的长度。例如,在应用程序固件区域的某固定位置,连续读取固定长度(len)的程序数据(flag2),判断flag2与引导程序区域中的预设设备匹配值是否一致,len的大小取决于预设设备匹配值的长度,预设设备匹配值由编码人员固定写在程序内部,可以包含电子设备的型号信息,以及一些其他的特定标记信息等,如果是错误的程序,该值也不可能一致。如果不一致,表示该固件与当前设备不匹配,应用程序固件无效,等待升级。
63.在具体实施方式中,预设设备匹配值为“model_ha86_flag”的字符串,读取的flag2若不等于“model_ha86_flag”,则应用程序固件无效。设备匹配值是固化在软件内部,该值正确可以确保软件是正确的固件。
64.在s1023中,升级完成标志值(flag3)可以是应用程序固件中末尾固定字节的程序数值。升级完成标志值(flag3)是在升级过程最后阶段写入应用程序固件中,该标志正确可以确保已经完成所有数据的升级。
65.在s102中,若应用程序固件的堆栈地址在内存起始地址preflag1_l和内存结束地址preflag1_h范围内,应用程序固件中设备匹配值与预设设备匹配值preflag2相同,并且应用程序固件数据中升级完成标志值与所述预设升级完成标志值preflag3相同,则判断应用程序固件有效,否则,只要上述3个条件中有任一项为否,则判断应用程序固件无效,则等待固件升级。
66.在具体实施方式中,s1021、s1022和s1023的执行可以是并行的,也可以是串行的,也可以通过设置优先级,先判断某一项,后判断某一项。例如,可以并行判断,当任一项为否时,即判断应用程序固件无效。也可以串行判断,首先判断应用程序固件的堆栈地址是否在内存起始地址preflag1_l和内存结束地址preflag1_h范围内,如果是,再判断应用程序固件中设备匹配值与所述预设设备匹配值preflag2是否相同,如果是,再判断应用程序固件数据中升级完成标志值与所述预设升级完成标志值preflag3是否相同,如果是,则判断应用程序固件有效,否则,当任一项判断为否时,判断应用程序固件无效。也可以根据需求设置s1021、s1022和s1023的判断优先级,根据优先级去执行判断,同样,当任一项判断为否时,判断应用程序固件无效。
67.在一实施方式中,如图2所示,若引导程序判断应用程序固件有效后,执行步骤s105:运行应用程序固件;步骤s106:若应用程序固件运行过程中接收到第二升级指令,则执行步骤s107:将应用程序固件中升级完成标志值设为非预设升级完成标志值,例如,清零;则重新运行引导程序,此时,由于升级完成标志为非预设升级完成标志值,引导程序会
确定应用程序无效,引导程序会接收第一升级指令,对所述应用程序固件执行升级,并设置应用程序固件中的升级完成标志值为预设升级完成标志值,从而完成应用程序固件升级。在具体实施方式中,通常是由上位机发出第二升级指令。
68.在s106中,收到的第二升级指令和s103中收到的第一升级指令是不同的。第一升级指令是在应用程序无效时发出的,此时,电子设备运行在引导程序区域,可直接执行升级。第二升级指令是在应用程序有效时发出的,此时,电子设备运行在应用程序区域,需要先设置升级完成标志值为非预设升级完成标志值,再运行引导程序,再执行升级。
69.本发明的电子设备的应用程序固件升级方法的升级方式可以是usb、串口、u盘、sd卡等,触发升级的方式可以是自定义的usb命令、串口命令、按键触发等等,对此不作限定。
70.本发明还提供一种电子设备,该电子设备能够采用本发明的电子设备的应用程序固件升级方法对所述电子设备的应用程序固件进行升级操作。通过采用本发明的固件升级方法,保证错误的程序无法被升级到设备,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级固件。所述电子设备可以是一种大屏设备,例如会议大屏等,例如,可以是对大屏设备中的红外触控框的应用程序进行升级操作。
71.本发明还提供一种电子设备的应用程序固件升级装置,如图3所示,应用程序固件升级装置包括引导程序执行模块20和应用程序执行模块30,引导程序执行模块20包括判断单元201、指令接收单元202和升级单元203。引导程序执行模块20用于运行引导程序,应用程序固件执行模块用于运行应用程序固件,引导程序中包括内存起始地址preflag1_l、内存结束地址preflag1_h、预设设备匹配值preflag2和预设升级完成标志值preflag3;判断单元201用于判断应用程序是否有效,判断单元201包括第一判断单元2011、第二判断单元2012和第三判断单元2013,第一判断单元2011用于判断应用程序固件的堆栈地址是否在内存起始地址和内存结束地址范围内,第二判断单元2012用于判断应用程序固件中设备匹配值与预设设备匹配值是否相同,第三判断单元2013用于判断应用程序固件中升级完成标志值与预设升级完成标志值是否相同;判断单元201能够在第一判断单元2011、第二判断单元2012和第三判断单元2013判断结果均为是的情况下认为应用程序固件有效,运行应用程序固件,否则,认为应用程序固件无效;指令接收单元202在应用程序固件无效时接收第一升级指令,升级单元203能够执行应用程序固件升级,并在升级完成后,设置应用程序固件中的升级完成标志值为预设升级完成标志值。
72.本发明的电子设备的应用程序固件升级装置,上电后由引导程序执行模块20运行引导程序,通过其中的判断单元201判断应用程序固件是否有效,有效,则由应用程序固件执行模块30运行应用程序固件,否则,指令接收单元202接收升级指令,并由升级单元203执行应用程序固件升级,其中,引导程序内包含内存起始地址preflag1_l、内存结束地址preflag1_h、预设设备匹配值preflag2和预设升级完成标志值preflag3,内存起始地址preflag1_l、内存结束地址preflag1_h和预设设备匹配值preflag2这3个值都正确可以确保升级的文件是正确,错误的程序无法被升级到设备,预设升级完成标志值preflag3在升级过程最后阶段写入,该值正确可以确保已经完成所有数据的升级,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级应用程序,从而保证电子设备固件升级过程不出错。
73.在一实施方式中,指令接收单元202能够在应用程序执行模块30运行应用程序固
件过程中接收第二升级指令,则应用程序执行模块30将应用程序固件中升级完成标志值设为非预设升级完成标志值,例如,清零;引导程序执行模块20重新运行引导程序,判断单元201会确定应用程序固件无效;指令接收单元202接收第一升级指令,升级单元203能够执行应用程序固件升级,并在升级完成后,设置应用程序固件中的升级完成标志值为预设升级完成标志值。在应用程序固件运行过程中,也可以顺利执行应用程序固件升级。
74.本发明还提供一种应用程序固件升级系统,如图4所示,包括上位机和本发明的电子设备的应用程序固件升级装置,上位机用于获取电子设备的应用程序固件升级装置的工作模式,上位机在电子设备的应用程序固件升级装置为引导程序工作模式时,向电子设备的应用程序固件升级装置发送第一升级指令,电子设备的应用程序固件升级装置执行应用程序升级;上位机在应用程序固件升级装置为应用程序工作模式时,向电子设备的应用程序固件发送第二升级指令,电子设备的应用程序固件升级装置将升级完成标志值设为非预设升级完成标志值,例如,清零,电子设备的应用程序固件升级装置执行应用程序固件升级。其中,引导程序工作模式是指电子设备的应用程序固件升级装置运行引导程序后判断应用程序固件无效,从而继续运行引导程序等待升级指令的状态,应用程序工作模式是指电子设备的应用程序固件升级装置运行引导程序后判断应用程序固件有效,运行应用程序固件的状态。
75.通过上位机与电子设备的应用程序固件升级装置的通信,先判断电子设备的应用程序固件升级装置的工作模式,根据工作模式发出不同的升级指令,电子设备的应用程序固件升级装置再根据不同的升级指令执行不同的处理,从而完成对应用程序固件的升级。保证错误的程序无法被升级到设备,正确的程序未更新完成前掉电,也不会导致设备异常,设备还能再次升级固件。
76.如图5所示,是本发明的固件升级系统工作流程图,上位机与电子设备的应用程序固件升级装置建立通信连接后执行步骤s401,上位机获取电子设备的应用程序固件升级装置的工作模式;步骤s402,上位机判断电子设备的应用程序固件升级装置为引导程序工作模式或应用程序工作模式,若为引导程序工作模式,执行步骤s403,上位机发送第一升级指令至电子设备的应用程序固件升级装置,步骤s404,电子设备的应用程序固件升级装置执行升级;若电子设备的应用程序固件升级装置为应用程序工作模式,执行步骤s405,上位机发送第二升级指令至电子设备的应用程序固件升级装置,步骤s406,电子设备的应用程序固件升级装置将升级完成标志值设为非预设升级完成标志值,例如,清零,电子设备的应用程序固件升级装置执行升级。通常,升级开始前,上位机会先读取文件,判读特定位置开始的一段固定长度的数据(flag2)是否等于preflag2,如果不一致,表示该固件与当前设备不匹配,无法继续升级,直到用户载入正确的文件为止。
77.需要说明的是,本发明中采用步骤编号(字母或数字编号)来指代某些具体的方法步骤,仅仅是出于描述方便和简洁的目的,而绝不是用字母或数字来限制这些方法步骤的顺序。本领域的技术人员能够明了,相关方法步骤的顺序,应由技术本身决定,不应因步骤编号的存在而被不适当地限制。
78.本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
79.应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本
原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献