CN107885523A - 一种快速稳定的串口升级软件方法 - Google Patents
一种快速稳定的串口升级软件方法 Download PDFInfo
- Publication number
- CN107885523A CN107885523A CN201711128412.3A CN201711128412A CN107885523A CN 107885523 A CN107885523 A CN 107885523A CN 201711128412 A CN201711128412 A CN 201711128412A CN 107885523 A CN107885523 A CN 107885523A
- Authority
- CN
- China
- Prior art keywords
- code
- serial ports
- upgrading
- software
- upgrade
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种快速稳定的串口升级软件方法,在软件升级时,通过串口将升级代码和目标代码烧写至DSP的现有方式的基础上,通过重新定义串口引导格式文件,智能擦除Flash扇区,增加每个代码段的校验码,利用双缓冲接收数据,此还可对传输错误引入重传机制,提高了串口升级软件的速度和稳定性,使得串口升级软件方法能更好的应用于外场软件升级。升级过程不需要开盖,大幅提高了软件升级的效率,节约了外场服务的成本。
Description
技术领域
本发明涉及数字信号处理器(DSP)技术领域,尤其涉及一种到通过串口快速升级嵌入式软件的方法。
背景技术
基于DSP外场软件升级主要采用JTAG方法,这种方式在软件的开发与调试过程中非常方便、升级程序速度快。当应用到外场软件的升级时,一个很大的弊端是每次升级都需要开盖才能升级程序,升级效率低。解决方法之一是通过串口升级软件,升级过程不需要开盖。而这种方法的一种方式是将升级代码长驻DSP中,升级时利用升级代码将目标程序烧写到DSP中;另一种方式不事先固化升级代码,升级时将升级代码和目标代码通过串口烧写至DSP。两种方式都存在升级速度慢且不稳定,中间任意环节出错升级即被中断的缺点。此外,第一种方式还存在较大的单粒子翻转风险(1变0,0变1)。
发明内容
鉴于现有技术的上述情况,本发明的目的是提供一种快速稳定的串口升级软件方法,以提高通过串口升级软件的速度和稳定性。
一种快速稳定的串口升级软件方法,包括:
将数字信号处理器(DSP)开发环境生成的用户目标代码和升级代码的格式转换为符合串口引导的数据格式;
解析格式转换后的目标代码,获取需要擦除的扇区,计算每个段的校验码,从上层软件获取用户输入的解锁密码,添加到目标代码的串口引导格式文件中;
将DSP的加载方式从FLASH加载切换为串口加载;
通过串口把格式转换后的升级代码加载到DSP中并在RAM空间运行,取得DSP的控制权;
然后通过串口接收格式转换后的用户目标代码;
升级代码解析接收到的用户目标代码,根据解析结果,把接收到的用户目标代码写入指定的扇区,完成软件的升级。
进一步地,用户目标代码是利用双缓冲区接收的,如此,提高了一次接收数据的大小。
进一步地,所述方法在接收数据过程中,还可对传输和写入出错的数据进行重传,以提高软件升级的稳定性。
进一步地,所述方法还包括在完成软件升级后,DSP跳转到目标代码的入口地址,开始运行目标代码。从而,DSP不需要重新上电即可验证升级是否成功。
本发明提出的串口升级软件方法在现有的第二种方式的基础上,通过重新定义串口引导格式文件,智能擦除Flash扇区,增加每个代码段的校验码,并利用双缓冲区接收数据,还可对传输错误引入重传机制,提高了串口升级软件的速度和稳定性,使得串口升级软件方法能更好地应用于外场软件升级。升级过程不需要开盖,大幅提高了软件升级的效率,节约了外场服务的成本。
附图说明
图1为本发明的串口升级软件方法的原理图;
图2为上位机工作流程图;
图3为升级代码工作流程图。
具体实施方式
为了更清楚地理解本发明的目的、技术方案及优点,以下结合附图及实施例,对本发明进行进一步详细说明。
本发明的方法利用DSP的自举引导(BootLoader)功能,上电后首先通过串口加载升级代码,再接收用户程序。利用升级代码将用户程序烧写到FLASH,工作原理如图1所示。升级过程如图2和图3所示。
如图所示,首先上位机借助转换工具Hex2000,将升级代码和目标代码转换为Hex,然后使用Hex2bin命令将hex格式转换为bin格式(S10)。为了扩展串口升级的功能和提高串口升级的稳定性,对用户目标代码重新设计了串口引导格式,增加了烧写密码的验证、智能擦除FLASH扇区表示方法和每段校验码,参见下表1。
表1串口引导格式
串口升级速度慢的一个原因是在写入数据前需要擦除原来的扇区,一般将所有扇区全部擦除,时间开销很大。通过分析,在进行软件升级时并不需要往所有的扇区写入数据,也就是不必擦除所有的扇区。通过提前解析目标代码的bin格式文件,获取需要写入的扇区,添加到串口引导格式文件中。然后将跳线拨到串口加载模式,给DSP上电。DSP向上位机发送0xFC,上位机收到后发送0x61(S11、12),即可完成自动波特率的设置。
上位机将转换后的升级代码发送至DSP(S13),DSP接收并运行升级代码,同时将接收的数据回传至上位机。上位机验证回传的数据与发送数据是否一致(S14)。若一致则传输正确,继续发送目标代码的前缀信息、解锁密码和需要擦除的扇区信息(S50)。DSP验证解锁解码,若解锁成功则擦除对应的扇区(S51、S52、S53),并向上位机发送0xFA(S54)。解锁失败则进入出错处理(S70)。上位机提取待发送第一个段的段大小、段地址、段内容(S17)。若段大小不为0(S21),且未超过最大发送大小maxnum,则将该段全部发送至DSP(S23)。若超过maxnum,将分多次发送(S24、S25)。
由于升级代码涉及到对FLASH的读写操作,而DSP不允许在FLASH中运行升级代码读写其它的扇区,所以升级代码必须运行在RAM空间。本发明的方法通过配置CMD文件,将升级代码分配到DSP2812RAM空间的H0、M0和M1。在剩余的L0和L1区域上设计了双缓冲区Buffer0和Buffer1,每个缓冲区都可以接收4000*16b数据。由于接收缓冲区L0&L1空间仅有8K,FLASH最大的段为16KB,数据有可能超出缓冲区大小,因此分多次发送。本发明测试了每次发送的大小对升级速度的影响,优化了串口升级的速度。当DSP接收到段大小、段地址和段内容后(S55),若段大小小于4000*16b时,只使用buffer1(S62)。当数据超过4000*16b时,buffer1填充满后,继续向Buffer2写入数据(S60、S61)。通过双缓冲区,可提高一次接收数据的大小。然后将缓冲区数据写入Flash(S63),对写入数据进行验证(S64、S65、S67)。若正确则向上位机发送0xFA,否则发送0xWE(S66)。
上位机收到0xFA后,将后续段按同样方式发送。若收到0xCE(S18),则认为当前段传输出错,重新发送当前段(S19)。若收到其它值,则DSP在写入Flash过程中出错,需要重新擦除当前扇区,并重传从当前扇区的所有段的数据(S19)。由于采用双缓冲增大了吞吐量,使得任意扇区出错最多重传2次段数据。当发送的段大小为0时(S21),表示所有的段已发送完毕。DSP收到段大小为0数据段(S55),发送0xAB到上位机(S68),同时跳转到目标代码入口地址执行目标代码(S69),整个升级过程结束。
为了便于观察软件升级的效果,以DSP2812开发板为例,将升级的目标代码功能设计为间隔1s循环点亮8个LED灯。上位机选择待升级的目标代码,完成目标代码、升级代码的格式转换。设置每次发送最大段数据maxnum为50个字节,勾选智能擦除选项。通过跳线设置DSP2812的四个I/O口状态(GPIOF4=0,GPIOF12=0,GPIOF3=1,GPIOF2=1),使得DSP上电后从SCIA口加载程序。然后执行上位机的升级命令,给DSP2812开发版上电后,Bootloader自动给上位机发送0xFC,上位机收到后发送自动波特率检测代码0x61。Bootloader完成自动波特率设置,开始接收上位机发送的升级代码,并跳转到升级代码的入口地址开始执行。DSP的控制权由Bootloader转向升级代码。上位机按照图2的流程继续发送目标代码,升级代码按照图3的流程接收目标代码,并写入到FLASH。最后升级代码通过一段汇编指令,使程序跳转到目标代码的入口地址执行,可观察到开发板上的8个LED灯间隔1s点亮。
Claims (4)
1.一种快速稳定的串口升级软件方法,包括:
将数字信号处理器开发环境生成的用户目标代码和升级代码的格式转换为符合串口引导的数据格式;
解析格式转换后的目标代码,获取需要擦除的扇区,计算每个段的校验码,从上层软件获取用户输入的解锁密码,添加到目标代码的串口引导格式文件中;
将数字信号处理器的加载方式从FLASH加载切换为串口加载;
通过串口把格式转换后的升级代码加载到数字信号处理器中,并在RAM空间运行,取得数字信号处理器的控制权;
然后通过串口接收格式转换后的用户目标代码;
升级代码解析接收到的用户目标代码,根据解析结果,把接收到的用户目标代码写入指定的扇区,完成软件的升级。
2.按照权利要求1所述的方法,其中用户目标代码是利用双缓冲区接收的。
3.按照权利要求1所述的方法,其中在接收数据过程中,还包括对传输和写入出错的数据进行重传。
4.按照权利要求1所述的方法,还包括在完成软件升级后,数字信号处理器跳转到目标代码的入口地址,开始运行目标代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711128412.3A CN107885523B (zh) | 2017-11-10 | 2017-11-10 | 一种快速稳定的串口升级软件方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711128412.3A CN107885523B (zh) | 2017-11-10 | 2017-11-10 | 一种快速稳定的串口升级软件方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107885523A true CN107885523A (zh) | 2018-04-06 |
CN107885523B CN107885523B (zh) | 2021-08-31 |
Family
ID=61777149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711128412.3A Active CN107885523B (zh) | 2017-11-10 | 2017-11-10 | 一种快速稳定的串口升级软件方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107885523B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955447A (zh) * | 2019-11-14 | 2020-04-03 | 北京航天时代激光导航技术有限责任公司 | 一种基于烧写模块的激光惯组系数多扇区烧写及校验方法 |
CN111913728A (zh) * | 2019-05-08 | 2020-11-10 | 杰克缝纫机股份有限公司 | 一种用于缝纫设备上的程序升级方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682902A (en) * | 1995-10-16 | 1997-11-04 | Hewlett-Packard Company | ECG pace pulse detection and processing |
CN101609544A (zh) * | 2009-07-21 | 2009-12-23 | 华中科技大学 | 一种图像处理机数据加载与测试方法及装置 |
CN103345404A (zh) * | 2013-06-09 | 2013-10-09 | 深圳市晶福源电子技术有限公司 | 一种ups系统的升级方法及系统 |
CN104049996A (zh) * | 2014-05-29 | 2014-09-17 | 湖北三江航天红峰控制有限公司 | 一种基于串口进行弹载计算机软件更新的方法 |
CN104133705A (zh) * | 2014-07-31 | 2014-11-05 | 武汉邮电科学研究院 | 一种串口加载PowerPC系统引导文件的系统及方法 |
CN104216714A (zh) * | 2014-09-03 | 2014-12-17 | 东方电气(乐山)新能源设备有限公司 | 基于can总线的dsp程序烧写方法 |
WO2016202088A1 (zh) * | 2015-06-17 | 2016-12-22 | 中兴通讯股份有限公司 | 引导程序升级方法、嵌入式设备、控制设备及嵌入式系统 |
CN106648803A (zh) * | 2016-12-30 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种dsp芯片在线升级方法 |
US20170131996A1 (en) * | 2014-06-10 | 2017-05-11 | Arm Ip Limited | Method and device for updating software executed from non-volatile memory |
CN106951289A (zh) * | 2017-03-23 | 2017-07-14 | 苏州英威腾电力电子有限公司 | 一种在线升级方法、dsp控制器及升级系统 |
CN107067825A (zh) * | 2017-04-27 | 2017-08-18 | 四川九洲空管科技有限责任公司 | 一种机载防撞系统的语音告警系统及其语音告警方法 |
CN107391189A (zh) * | 2017-07-17 | 2017-11-24 | 上海卫星工程研究所 | 星载软件的在轨编程方法 |
-
2017
- 2017-11-10 CN CN201711128412.3A patent/CN107885523B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682902A (en) * | 1995-10-16 | 1997-11-04 | Hewlett-Packard Company | ECG pace pulse detection and processing |
CN101609544A (zh) * | 2009-07-21 | 2009-12-23 | 华中科技大学 | 一种图像处理机数据加载与测试方法及装置 |
CN103345404A (zh) * | 2013-06-09 | 2013-10-09 | 深圳市晶福源电子技术有限公司 | 一种ups系统的升级方法及系统 |
CN104049996A (zh) * | 2014-05-29 | 2014-09-17 | 湖北三江航天红峰控制有限公司 | 一种基于串口进行弹载计算机软件更新的方法 |
US20170131996A1 (en) * | 2014-06-10 | 2017-05-11 | Arm Ip Limited | Method and device for updating software executed from non-volatile memory |
CN104133705A (zh) * | 2014-07-31 | 2014-11-05 | 武汉邮电科学研究院 | 一种串口加载PowerPC系统引导文件的系统及方法 |
CN104216714A (zh) * | 2014-09-03 | 2014-12-17 | 东方电气(乐山)新能源设备有限公司 | 基于can总线的dsp程序烧写方法 |
WO2016202088A1 (zh) * | 2015-06-17 | 2016-12-22 | 中兴通讯股份有限公司 | 引导程序升级方法、嵌入式设备、控制设备及嵌入式系统 |
CN106648803A (zh) * | 2016-12-30 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种dsp芯片在线升级方法 |
CN106951289A (zh) * | 2017-03-23 | 2017-07-14 | 苏州英威腾电力电子有限公司 | 一种在线升级方法、dsp控制器及升级系统 |
CN107067825A (zh) * | 2017-04-27 | 2017-08-18 | 四川九洲空管科技有限责任公司 | 一种机载防撞系统的语音告警系统及其语音告警方法 |
CN107391189A (zh) * | 2017-07-17 | 2017-11-24 | 上海卫星工程研究所 | 星载软件的在轨编程方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913728A (zh) * | 2019-05-08 | 2020-11-10 | 杰克缝纫机股份有限公司 | 一种用于缝纫设备上的程序升级方法 |
CN110955447A (zh) * | 2019-11-14 | 2020-04-03 | 北京航天时代激光导航技术有限责任公司 | 一种基于烧写模块的激光惯组系数多扇区烧写及校验方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107885523B (zh) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9891991B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
CN110147240B (zh) | 基于云存储的应用程序安装方法、系统及存储介质 | |
CN102945173B (zh) | 用户程序在线升级系统和升级方法 | |
CN109976767B (zh) | 软件烧录方法和装置 | |
US8010868B2 (en) | Method for processing noise interference | |
US20130185484A1 (en) | File programming method and associated device for nand flash | |
CN110187909B (zh) | 一种基于安卓系统的单片机固件升级方法 | |
CN107885523A (zh) | 一种快速稳定的串口升级软件方法 | |
CN102346677A (zh) | Fpga程序的升级方法 | |
CN108231132B (zh) | 一种nand闪存验证装置和验证系统 | |
CN105205142A (zh) | 保存日志文件的方法、装置和移动终端 | |
CN112416408A (zh) | 固件升级方法、装置、设备及计算机可读存储介质 | |
CN116820586A (zh) | 一种程序加载的方法及相关装置和存储介质和程序 | |
CN104133743A (zh) | 一种将文件烧录到emmc芯片的方法及装置 | |
CN112181444B (zh) | 一种基于1553b总线的dsp多核数据烧写方法 | |
US20140215123A1 (en) | Controller-Opaque Communication with Non-Volatile Memory Devices | |
CN103970512A (zh) | 多核处理器及其并行重放方法 | |
CN108170487B (zh) | Dsp中程序烧写方法、装置以及车辆 | |
CN103677919A (zh) | 一种基于串口的机载软件更新方法 | |
CN116246680A (zh) | 一种prom编程器 | |
CN112559349B (zh) | 一种程序的运行方法及运行装置 | |
CN114579155A (zh) | 一种多fpga系统在线更新方法、系统及计算机设备 | |
CN114625389A (zh) | 嵌入式设备升级方法、嵌入式设备及存储装置 | |
WO2024109410A1 (zh) | 一种插件安装的优化方法及控制装置 | |
CN117193833B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |