CN110647339A - 一种嵌入式产品软件在线升级方法 - Google Patents
一种嵌入式产品软件在线升级方法 Download PDFInfo
- Publication number
- CN110647339A CN110647339A CN201910885595.6A CN201910885595A CN110647339A CN 110647339 A CN110647339 A CN 110647339A CN 201910885595 A CN201910885595 A CN 201910885595A CN 110647339 A CN110647339 A CN 110647339A
- Authority
- CN
- China
- Prior art keywords
- software
- embedded product
- upgrading
- data
- upper computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000008023 solidification Effects 0.000 claims description 43
- 238000007711 solidification Methods 0.000 claims description 35
- 238000004891 communication Methods 0.000 claims description 26
- 238000004458 analytical method Methods 0.000 claims description 9
- 238000013524 data verification Methods 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000007405 data analysis Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- KKIMDKMETPPURN-UHFFFAOYSA-N 1-(3-(trifluoromethyl)phenyl)piperazine Chemical compound FC(F)(F)C1=CC=CC(N2CCNCC2)=C1 KKIMDKMETPPURN-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本发明公开了一种嵌入式产品软件在线升级方法,无需拆卸分布式系统中嵌入式产品,只需分布式系统总控计算机及各嵌入式产品具备本发明的能力,系统给所有产品上电后,总控计算机即可通过RS422或RS485等总线实现对各嵌入式产品的软件在线升级,不需要每台单产上下电,在退出升级前,可反复多次升级,可靠性较高,通用性好。
Description
技术领域
本发明涉及一种嵌入式产品软件在线升级方法,属于计算机软件技术领域。
背景技术
嵌入式产品在进行程序升级通常用三种方法:(1)通过RS422通信方式进行软件在线升级,(2)通过TFTP服务器升级,(3)通过专用设备升级。方法(1)采用常见的通用通信接口进行软件在线升级,但现有的方法适用于单个产品,不适用于分布系统;方法(2)、(3)对升级设备要求较高,不具备通用性。
发明内容
本发明的目的是根据上述现有技术的不足之处,提供一种能够适用于分布式系统中嵌入式产品的软件在应用编程的升级方法。
为解决上述技术问题,本发明采用的技术方案如下:
一种嵌入式产品软件在线升级方法,其特征是,
制定上位机和嵌入式产品软件间的通信协议;
在外部存储器不同的地址中分别存放工作模式标志和应用程序固化状态标志;
根据外部存储器中工作模式标志、应用程序固化状态标志,选择执行应用程序或者嵌入式产品软件升级程序;当嵌入式产品软件读取的外部存储器中工作模式标志数据为“软件升级模式”或应用程序固化状态标志为非“固化完成”状态时,进入软件升级模式;
软件升级模式时,嵌入式产品软件升级程序擦除现有应用程序代码存储区,并清除外部存储器中“固化完成”标志,擦除完成后反馈“擦除完成”状态给上位机;当上位机接收到反馈后,发送“数据固化”命令并同时传输代码数据给嵌入式产品软件升级程序进行升级。
进一步地,当所有代码数据固化完成后,进行数据CRC校验;如果数据CRC校验结果和上位机发送的CRC码相同时,则反馈“固化完成”状态给上位机,同时将“固化完成”标志写入外部存储器;如果两者不相等,则反馈“固化失败”状态给上位机,同时清除相关标志准备重新加载,当上位机接收到“固化失败”信息后,重新发送“执行软件升级”命令。
进一步地,上位机和嵌入式产品软件间的通信协议包括在上位机和嵌入式产品软件正常通信报文中定义工作模式、上位机和嵌入式产品软件升级模式下的通信协议。
进一步地,上位机和嵌入式产品软件升级模式下的通信协议具体为:双方均周期性发送报文,发送的报文只有对方正确回应后才按约定流程继续发送;上位机软件和嵌入式产品软件均对通信状态进行监测,如果出现连续10帧报文的帧计数不连续则判定为通信故障。
进一步地,报文内容包括报文起始字、报文长度、计数字、工作模式、工作状态、产品ID、加载状态、数据、校验字等信息。
进一步地,报文接收和解析采用两个不同的缓存区,报文解析时,首先识别报文起始字、然后识别报文长度、最后计算校验字;如果这些信息均正确,则判定该报文存入解析缓存区,否则从报文起始字后继续解析。
进一步地,当通过外部存储器存储数据时,同时将数据和校验字节写入主存储区和备份存储区;读取数据时,如果主存储区数据校验失败,则读取备份存储区数据,如果均失败则使用默认值,执行产品应用程序。
进一步地,当嵌入式产品软件升级程序接收到上位机发出的“退出升级模式”命令后,读取外部存储器应用程序固化状态标志,如果是“固化完成”标志,则退出软件升级模式,等待下电;否则维持原状态不变。
本发明所达到的有益效果:
本发明提供的嵌入式产品软件在线升级方法,无需拆卸分布式系统中嵌入式产品,只需分布式系统总控计算机(上位机)及各嵌入式产品具备本发明的能力,系统给所有产品上电后,总控计算机即可通过RS422或RS485等总线实现对各嵌入式产品的软件在线升级,不需要每台单产上下电,在退出升级前,可反复多次升级,可靠性较高,通用性好。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明的主要内容包括:
1、高可靠的通信协议及数据解析
制定上位机软件和嵌入式产品软件间的通信协议,包括两部分内容,一是在上位机软件和嵌入式产品正常通信报文中同时定义工作模式,当需要进行软件升级时,手动将上位机软件工作模式设置为“软件升级模式”,同时发送至通信总线;嵌入式产品收到“软件升级模式”命令后,将自身工作模式也设置为“软件升级模式”。二是上位机软件和嵌入式产品软件升级模式下的通信协议,双方均周期性发送报文,发送的报文只有对方正确回应后才按约定流程继续发送,报文内容包括报文起始字、报文长度、计数字、工作模式、工作状态、产品ID、加载状态、数据、校验字等信息。上位机软件和嵌入式产品软件均对通信状态进行监测,如果出现连续10帧报文的帧计数不连续则判定为“通信故障”。
数据接收和解析采用两个不同的缓存区,数据解析时,首先识别报文起始字、然后识别报文长度、最后计算校验字;如果这些信息均正确,则判定该报文存入解析缓存区,否则从报文起始字后继续解析,提高数据解析的可靠性。
2、高可靠的数据存储
当通过外部存储器存储数据时,同时将数据和校验字节写入主存储区和备份存储区;读取数据时,如果主存储区数据校验失败,则读取备份存储区数据,如果均失败则使用默认值,即当外部存储器数据读取失败,执行产品应用程序。
3、高可靠的软件升级流程
软件升级流程共包含进入软件升级模式、执行软件升级、退出软件升级模式等3个部分。
外部存储器0x0000和0x0004地址中存放工作模式标志,0x0008和0x000C地址中存放应用程序固化状态标志。产品复位后根据外部存储器中工作模式标志、应用程序固化状态标志,选择执行应用程序或者在线升级程序,便于应用程序和在线升级程序的切换,以及产品首次软件的灌装;软件升级过程中根据存储区固化状态标志,选择是否退出软件升级模式,是产品可靠多次反复加载的基础,有效避免因未升级成功,直接退出加载模式,提高产品的安全性和可靠性。
1)进入软件升级模式
产品复位后根据外部存储器中的标志位,当读取工作模式标志数据为“软件升级模式”或应用程序存储区状态标志为非“固化完成”状态时,进入软件升级模式。当嵌入式产品应用程序接收到“进入软件升级”命令后,将软件升级模式标志写入外部存储器,然后复位产品。
通过此方式可一次引导所有产品进入升级模式。
2)执行软件升级
当嵌入式产品升级程序接收到“执行软件升级”命令后,首先擦除现有应用程序代码存储区,并清除外部存储器中“固化完成”标志,擦除完成后反馈“擦除完成”状态;当上位机接收到反馈后,发送“数据固化”命令并同时传输代码数据。
当所有代码数据固化完成后,进行数据CRC校验。如果数据CRC校验结果和上位机发送的CRC码相同时,则反馈“固化完成”状态,同时将“固化完成”标志写入外部存储器;如果两者不相等,则反馈“固化失败”状态,同时清除相关标志准备重新加载,当上位机接收到“固化失败”信息后,可重新发送“执行软件升级”命令。
通过此方式在一次上电后,可对每台产品单独多次反复加载,提高升级效率及可靠性。
3)退出软件升级模式
当嵌入式产品升级程序接收到“退出升级模式”命令后,读取外部存储器应用程序固化状态标志,如果是“固化完成”标志,则退出软件升级模式,等待下电;否则维持原状态不变。
通过此方式可一次引导所有产品退出升级模式。
嵌入式产品软件在线升级方法,具体操作过程为:
1、启动上位机软件,完成端口、波特率、目标文件等配置,此时上位机开放“进入软件升级模式”和“退出软件升级模式”选择功能;然后产品上电。产品上电后首先读取外部存储器的数据,如果数据为“软件升级模式”或非“固化完成”标志,则将工作模式设置为“软件升级模式”,并执行软件升级程序,等待上位机“执行软件升级”命令;否则执行应用程序,等待上位机 “进入软件升级模式”命令。
外部存储器的数据读写方法如下:读取数据时,先读取主存储区0x0000中的数据,如果校验失败,则读取备份存储区0x0004中的数据,如果均失败则使用默认值(正常模式);写数据时,同时将数据和校验字节写入主存储区0x0000和备份存储区0x0004。
数据接收和解析采用两个不同的缓存区,数据解析时,首先识别报文起始字、然后识别报文长度、最后计算校验字;如果这些信息均正确,则判定该报文存入解析缓存区,否则从报文起始字后继续解析,提高数据解析的可靠性。如果出现连续10帧报文的帧计数不连续则判定为“通信故障”,并将故障码发送给上位机。
2、上位机手动选择发送“进入软件升级模式”,以100ms为周期连续发送10s,如果嵌入式产品接收到此命令,则将“软件升级模式”标志位写入外部存储器并复位,然后根据(2)继续执行;如果10s内上位机接收到嵌入式产品反馈工作模式为“软件升级模式”,则开放“执行软件升级”选择功能;
3、上位机手动选择发送“执行软件升级”命令,以100ms为周期连续发送报文,首先发送“执行软件升级”命令,嵌入式产品升级程序接收到此命令后,首先擦除现有应用程序代码存储区,并清除外部存储器中“固化完成”标志,擦除完成后反馈“擦除完成”状态;当上位机接收到反馈后,发送“数据固化”命令并同时传输代码数据。当所有代码数据固化完成后,产品升级程序进行数据CRC校验,如果计算得到数据CRC校验值和上位机发送的CRC码相同时,则反馈“固化完成”状态,同时将“固化完成”标志写入外部存储器;如果两者不相等,则反馈“固化失败”状态,同时清除相关标志准备重新加载,当上位机接收到“固化失败”信息后,可重新发送“执行软件升级”命令,实现对产品多次反复加载。
4、上位机手动选择发送“退出软件升级”命令,以100ms为周期连续发送报文,当嵌入式产品升级程序接收到“退出升级模式”命令后,读取外部存储器应用程序固化状态标志,如果是“固化完成”标志,则退出软件升级模式,等待下电;否则维持原状态不变。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (8)
1.一种嵌入式产品软件在线升级方法,其特征是,
制定上位机和嵌入式产品软件间的通信协议;
在外部存储器不同的地址中分别存放工作模式标志和应用程序固化状态标志;
根据外部存储器中工作模式标志、应用程序固化状态标志,选择执行应用程序或者嵌入式产品软件升级程序;当嵌入式产品软件读取的外部存储器中工作模式标志数据为“软件升级模式”或应用程序固化状态标志为非“固化完成”状态时,进入软件升级模式;
软件升级模式时,嵌入式产品软件升级程序擦除现有应用程序代码存储区,并清除外部存储器中“固化完成”标志,擦除完成后反馈“擦除完成”状态给上位机;当上位机接收到反馈后,发送“数据固化”命令并同时传输代码数据给嵌入式产品软件升级程序进行升级。
2.根据权利要求1所述的一种嵌入式产品软件在线升级方法,其特征是,
当所有代码数据固化完成后,进行数据CRC校验;如果数据CRC校验结果和上位机发送的CRC码相同时,则反馈“固化完成”状态给上位机,同时将“固化完成”标志写入外部存储器;如果两者不相等,则反馈“固化失败”状态给上位机,同时清除相关标志准备重新加载,当上位机接收到“固化失败”信息后,重新发送“执行软件升级”命令。
3.根据权利要求1所述的一种嵌入式产品软件在线升级方法,其特征是,
上位机和嵌入式产品软件间的通信协议包括在上位机和嵌入式产品软件正常通信报文中定义工作模式、上位机和嵌入式产品软件升级模式下的通信协议。
4.根据权利要求1所述的一种嵌入式产品软件在线升级方法,其特征是,
上位机和嵌入式产品软件升级模式下的通信协议具体为:双方均周期性发送报文,发送的报文只有对方正确回应后才按约定流程继续发送;上位机软件和嵌入式产品软件均对通信状态进行监测,如果出现连续10帧报文的帧计数不连续则判定为通信故障。
5.根据权利要求4所述的一种嵌入式产品软件在线升级方法,其特征是,
报文内容包括报文起始字、报文长度、计数字、工作模式、工作状态、产品ID、加载状态、数据、校验字等信息。
6.根据权利要求4所述的一种嵌入式产品软件在线升级方法,其特征是,
报文接收和解析采用两个不同的缓存区,报文解析时,首先识别报文起始字、然后识别报文长度、最后计算校验字;如果这些信息均正确,则判定该报文存入解析缓存区,否则从报文起始字后继续解析。
7.根据权利要求1所述的一种嵌入式产品软件在线升级方法,其特征是,
当通过外部存储器存储数据时,同时将数据和校验字节写入主存储区和备份存储区;读取数据时,如果主存储区数据校验失败,则读取备份存储区数据,如果均失败则使用默认值,执行产品应用程序。
8.根据权利要求1所述的一种嵌入式产品软件在线升级方法,其特征是,
当嵌入式产品软件升级程序接收到上位机发出的“退出升级模式”命令后,读取外部存储器应用程序固化状态标志,如果是“固化完成”标志,则退出软件升级模式,等待下电;否则维持原状态不变。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885595.6A CN110647339A (zh) | 2019-09-19 | 2019-09-19 | 一种嵌入式产品软件在线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910885595.6A CN110647339A (zh) | 2019-09-19 | 2019-09-19 | 一种嵌入式产品软件在线升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110647339A true CN110647339A (zh) | 2020-01-03 |
Family
ID=68991971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910885595.6A Pending CN110647339A (zh) | 2019-09-19 | 2019-09-19 | 一种嵌入式产品软件在线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647339A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559011A (zh) * | 2020-12-22 | 2021-03-26 | 四川虹微技术有限公司 | 一种对电池管理系统进行稳定升级的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346179A (zh) * | 2013-07-29 | 2015-02-11 | 北京同步科技有限公司 | 通过can总线远程升级的嵌入式系统及方法 |
CN105573807A (zh) * | 2015-12-31 | 2016-05-11 | 清华大学苏州汽车研究院(吴江) | 一种基于can总线的ecu在线程序升级系统及方法 |
CN105677398A (zh) * | 2015-12-31 | 2016-06-15 | 中海网络科技股份有限公司 | 一种通用的嵌入式计算机软件在线升级方法 |
WO2016145798A1 (zh) * | 2015-03-16 | 2016-09-22 | 中兴通讯股份有限公司 | 一种嵌入式系统的应用程序的升级方法及升级装置 |
CN107678765A (zh) * | 2017-10-12 | 2018-02-09 | 北方电子研究院安徽有限公司 | 一种基于c8051f系列单片机的在线升级方法 |
-
2019
- 2019-09-19 CN CN201910885595.6A patent/CN110647339A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346179A (zh) * | 2013-07-29 | 2015-02-11 | 北京同步科技有限公司 | 通过can总线远程升级的嵌入式系统及方法 |
WO2016145798A1 (zh) * | 2015-03-16 | 2016-09-22 | 中兴通讯股份有限公司 | 一种嵌入式系统的应用程序的升级方法及升级装置 |
CN105573807A (zh) * | 2015-12-31 | 2016-05-11 | 清华大学苏州汽车研究院(吴江) | 一种基于can总线的ecu在线程序升级系统及方法 |
CN105677398A (zh) * | 2015-12-31 | 2016-06-15 | 中海网络科技股份有限公司 | 一种通用的嵌入式计算机软件在线升级方法 |
CN107678765A (zh) * | 2017-10-12 | 2018-02-09 | 北方电子研究院安徽有限公司 | 一种基于c8051f系列单片机的在线升级方法 |
Non-Patent Citations (1)
Title |
---|
李淑娟: "基于SD 卡的嵌入式软件在线升级系统研究", 《智能处理与应用》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559011A (zh) * | 2020-12-22 | 2021-03-26 | 四川虹微技术有限公司 | 一种对电池管理系统进行稳定升级的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109677455B (zh) | 一种列车辅助驾驶系统 | |
CN101557583B (zh) | 直放站设备嵌入式软件的远程升级与版本切换方法 | |
US9110843B2 (en) | Rack and method thereof for simultaneously updating basic input output systems | |
CN105491161A (zh) | 一种电池管理系统软件的远程升级系统及其远程升级方法 | |
CN106874054B (zh) | 一种直放站内模块程序在线升级方法与系统 | |
CN103677869A (zh) | 无线传感器网络节点远程代码更新系统及方法 | |
CN108415718B (zh) | 一种应用于星载软件在线更新的BootLoader设计方法 | |
CN104579719A (zh) | 一种固件的升级方法和系统、上位机和光模块 | |
US11433718B2 (en) | Upgrading method and apparatus for tire pressure monitoring module and tire pressure sensor | |
CN103942080A (zh) | 电子设备信息传输方法 | |
CN112947977B (zh) | 一种软件在线升级方法及系统 | |
CN106909352A (zh) | 一种嵌入式设备的固件升级方法 | |
CN1976517B (zh) | 移动终端 | |
CN109491686A (zh) | 基于xilinx公司k7系列的FPGA程序在线升级方法 | |
CN104102518A (zh) | 一种双cpu系统及其程序升级方法 | |
CN101325610A (zh) | 虚拟磁带库备份系统以及磁盘电源控制方法 | |
CN105677398A (zh) | 一种通用的嵌入式计算机软件在线升级方法 | |
CN113360347B (zh) | 一种服务器及其控制方法 | |
CN103713925A (zh) | 避免存储阵列在升级过程的业务中断方法和装置 | |
CN112822654A (zh) | 一种基于ftp远程固件升级功能的遥测终端机及其控制方法 | |
CN111309363A (zh) | 基于Contiki操作系统的在线升级方法及装置 | |
CN109062600A (zh) | 一种固态硬盘内固件在线升级的实现方法及系统 | |
CN110647339A (zh) | 一种嵌入式产品软件在线升级方法 | |
US11073893B2 (en) | System and method capable of remotely controlling electronic apparatus | |
CN108958752A (zh) | 单片机在线升级系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200103 |
|
RJ01 | Rejection of invention patent application after publication |