CN100416503C - 一种软件版本更新的方法 - Google Patents
一种软件版本更新的方法 Download PDFInfo
- Publication number
- CN100416503C CN100416503C CNB2005101155602A CN200510115560A CN100416503C CN 100416503 C CN100416503 C CN 100416503C CN B2005101155602 A CNB2005101155602 A CN B2005101155602A CN 200510115560 A CN200510115560 A CN 200510115560A CN 100416503 C CN100416503 C CN 100416503C
- Authority
- CN
- China
- Prior art keywords
- district
- software
- version
- program
- space
- 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.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件版本更新的方法,包括:将启动的程序区域分A区,B区,在A区开辟一段版本切换程序;系统加电复位后DSP的程序指针自动指向内部ROM中的Bootloader程序;从A区的0xFFFF读出的数据作为加载程序的有效地址;Boot程序将FLASH中的Boot表的首地址,进行Bootloader过程:正常版本在A区,则FLASH 0x0000-0x8000映射为DSP的0x8000-0xffff空间,FLASH的0x8000即为DSP的0xFFFF,其首址内容为A版本加载内容的首址。本方法可以保护软件在下载过程突发的意外情况,保护系统可以重新启动。
Description
技术领域
本发明涉及数字信号处理领域,尤其是软件版本更新领域,具体地涉及DSP软件的版本更新方法。
背景技术
随着微电子技术,计算机技术和通讯技术的迅猛发展,数字化技术已广泛深入到现代国防、科技以及国民经济等各个领域,在社会活动和个人生活中随处可见,数字化技术的基础和核心是通用数字信号处理,及相应的程序软件,尤其是DSP的应用程序在科技、国防、国民经济、社会和个人生活中具有突出的地位。
DSP芯片最大的优越性在于其可重复编程的能力,并将不同的应用软件下载到DSP芯片中,实现通讯和控制功能。
通常将DSP程序放在专用的EEPROM中,但是DSP为了增加软件下载的灵活性,将EEPROM等存储器放置在片外,由一片或几片FLASH来替代,DSP的内部ROM固化了一个称为Boot的程序,在DSP上电硬件复位后,DSP自动执行Boot程序,将外部FLASH的程序读入DSP内部的高速RAM程序区中。
软件版本更新时,通常是直接刷新FLASH,但是若此时意外掉电可使数据丢失,系统无法启动。
第一、目前室外单元在无线系统中有广泛的应用,通过通讯的方式传达监控信息,在作版本升级及更新时,通常存在意外风险。通常采用的远程升级通过业已存在的数据通信链路,将新程序先下载到缓存空间,下载完成并校验无误后,将程序自举存储空间用新的升级程序覆盖,重新启动后,即可执行升级后的新程序。
但是若在覆盖过程中发生如系统断电,或意外复位等因素,就可使系统发生彻底崩溃的危险。
第二、在批量生产时,通常直接将有下载软件的FLASH焊接PCB板上,这时要进行软件版本更新要通过通讯接口等方法是带电直接刷新本版软件。
若这时发生突然断电,板子将无法启动,必须将片子从板上焊下来重新烧录后再焊接。这就要求在版本下载过程中有必要的保护机制,才能降低维护成本。
公开号为CN1259813,公开日期为2000年7月12日的专利“可远程下载运行软件的智能数据监控通讯设备及方法”,涉及计算机网络系统中的通讯技术和监控技术,针对远端地点的软件更新和调试需要较多的时间和工程量并且系统可靠性不高的问题,提出了由中央处理器及外围逻辑、只读存储器、闪烁存储器、随机读写存储器、串行电可擦写存储器、通讯接口组成的智能数据监控通讯设备,以及包括下载操作和运行软件中的下载处理的方法。
虽然本专利节约了时间和工程量,提高了系统的可靠性,适于远程通讯或监控系统中远端软件的更新和调试。但是该专利还是采用传统的直接刷新存储区的方法,只能保证下载过程中不出现意外复位的情况,存在出现意外复位,系统会发生崩溃的危险。
发明内容
本发明为了克服现有技术中存在的上述问题,提出一种软件版本更新的方法。
采用本发明可以保护软件在下载过程中突发意外情况,保护系统仍可以正确重启。
本发明是这样具体实现的:
步骤1、将启动的程序区域分A区,空间为0x0000-0x7fff,B区,空间为0xa000-0xffff,在A区开辟一段版本切换程序,空间为0x0000-0x1fff;A区保存和运行的软件称为A软件,B区保存和运行的软件称为B软件,A软件版本长度大小为0x2000-0x7fff;
步骤2、系统加电复位后DSP的程序指针自动指向内部ROM中的Bootloader程序;
步骤3、从A区的0x7fff读出的数据作为加载程序的有效地址;
步骤4、Boot程序将FLASH中的Boot表的首地址,进行Bootloader过程,完成程序加载运行过程;
当系统需版本更新时,软件查询当前运行的软件版本信息是A软件还是B软件:
如果运行的版本是在A区的A软件,FLASH 0x0000-0x7fff映射为DSP的0x8000-0xffff空间,FLASH的0x7fff即为DSP的0xffff,其首址内容为A版本加载内容的首址,进行版本更新时包括如下步骤:
步骤11:通过指令由外围硬件切换使FLASH空间工作在B区;
步骤12:进行B区擦除,数据校验正确后将B软件写入B区:
如B软件写入B区时出错,则原版本信息仍有效,重启后仍旧执行A的老版本,结束;
如B软件写入B区正确,在B区写入B软件的版本信息,继续下一步;
步骤13:切换到A区,将B软件版本信息写入A区的版本切换程序;
步骤14:再次切换到B区:在复位系统时由B区启动;在冷启时,先加载A区的版本切换程序,由版本切换程序保存的版本信息确定切换到B区启动;
如果运行的正常版本是在B区的B软件,冷启时FLASH 0x0000-0x7fff映射为DSP的0x8000-0xffff空间,这时DSP的0xffff加载版本的首地址为版本切换程序,版本切换程序将FLASH的空间切换为0x8000-0xFFFF映射为DSP的0x8000-0xffff空间;复位系统时,其首址内容为B版本加载内容的首址;进行版本更新时包括如下步骤:
步骤21:通过指令由外围硬件切换使FLASH空间工作在A区;
步骤22:进行A区擦除,数据校验正确后,将A软件写入A区:
如果A软件写入A区时出错,重启时系统读版本信息为B软件,由B区重启;
如果A软件写入A区正确,写入A软件版本信息,复位系统后由A区启动程序。
本发明采用A,B切换的方法克服了意外出现对系统造成的损失,利用巧妙的保护机制使系统在下载过程中出现意外仍可以重启,提高了系统的可靠性,还可以应用于广泛的下载更新的程序中,在常规设计中的DSP+FPGA的结构中可不改变原有系统硬件基础上即可作性能提升,有非常好的市场前。
附图说明
图1是本发明提出的单板版本更新及热启流程图。
具体实施方式
下面结合附图对本发明所述方法作进一步的详细说明:
将FLASH区域化为两块:一块叫A区,一块叫B区,系统重启分为冷启动(即系统上电),系统热启(带电复位);
如系统目前运行的程序在A区:
当系统需版本更新时,软件查询当前运行的软件版本信息是A(0x55)软件还是B(0xAA)软件:
如是A软件,则通过指令由外围硬件(如FPGA)切换A15为高,这时FLASH空间为0x8000-0xffff即工作在B区,先进行B区擦除,数据校验正确后写入B区,如图1所示;
在程序正确写完之后,写B区版本信息(0xAA)、Boot首址信息(0xA000)。
切换到A区,写A区版本信息(0xAA)、Boot首址信息(0x8000)。
再次切换到B区,复位系统(热启)由B区启动程序,如掉电重启则先加载版本切换程序,切换到B区后热启。
如目前运行的是B软件,则通过指令由外围硬件(如FPGA)却换A15为低,这时FLASH空间为0x0000-0x7fff即工作在A区,先进行A区擦除,数据校验正确后写入A区,如图1所示,
在程序正确写完之后,写A区版本信息(0x55)、Boot首址信息(0xA000)。
复位系统(热启)由A区启动程序,如掉电重启则仍由A区启动。不受版本切换影响。
正常工作过程如下:
1、将切换版本程序烧写到0x0000,A版本程序烧写到0x2000处,版本信息写0x55,Boot首址写0xa000,正常运行A版本;
2、如果下载过程中出错重启,则此时尚未对版本信息A和B改写,重启后仍旧执行A老版本;
3、如果改写版本信息B时出错,则版本信息A仍有效,重启后仍旧执行老版本;
4、如果改写版本信息A时出错,由于此时版本信息B已经成功写入,重启后,由于系统读版本信息为B,重启B。
各版本在FLASH中的地址分配:
内容 | 起始地址(FLASH) | 映射DSP空间 |
切换版本 | 0x0000 | 0x8000 |
A版本 | 0x2000(版本长度) | 0xA000 |
版本信息 | 0x7ff0 | 0xfff0 |
Boot首址内容 | 0x7fff | 0xffff |
B版本 | 0xa000 | 0xa000 |
版本信息 | 0xfff0 | 0xfff0 |
Boot首址内容 | 0xffff | 0xffff |
Claims (1)
1. 一种软件版本更新的方法,其特征在于,包括如下步骤:
步骤1、将启动的程序区域分A区,空间为0x0000-0x7fff,B区,空间为0xa000-0xffff,在A区开辟一段版本切换程序,空间为0x0000-0x1fff;A区保存和运行的软件称为A软件,B区保存和运行的软件称为B软件,A软件版本长度大小为0x2000-0x7fff;
步骤2、系统加电复位后DSP的程序指针自动指向内部ROM中的Bootloader程序;
步骤3、从A区的0x7fff读出的数据作为加载程序的有效地址;
步骤4、Boot程序将FLASH中的Boot表的首地址,进行Bootloader过程,完成程序加载运行过程;
当系统需版本更新时,软件查询当前运行的软件版本信息是A软件还是B软件:
如果运行的版本是在A区的A软件,FLASH 0x0000-0x7fff映射为DSP的0x8000-0xffff空间,FLASH的0x7fff即为DSP的0xffff,其首址内容为A版本加载内容的首址,进行版本更新时包括如下步骤:
步骤11:通过指令由外围硬件切换使FLASH空间工作在B区;
步骤12:进行B区擦除,数据校验正确后将B软件写入B区:
如B软件写入B区时出错,则原版本信息仍有效,重启后仍旧执行A的老版本,结束;
如B软件写入B区正确,在B区写入B软件的版本信息,继续下一步;
步骤13:切换到A区,将B软件版本信息写入A区的版本切换程序;
步骤14:再次切换到B区:在复位系统时由B区启动;在冷启时,先加载A区的版本切换程序,由版本切换程序保存的版本信息确定切换到B区启动;
如果运行的正常版本是在B区的B软件,冷启时FLASH 0x0000-0x7fff映射为DSP的0x8000-0xffff空间,这时DSP的0xffff加载版本的首地址为版本切换程序,版本切换程序将FLASH的空间切换为0x8000-0xFFFF映射为DSP的0x8000-0xffff空间;复位系统时,其首址内容为B版本加载内容的首址;进行版本更新时包括如下步骤:
步骤21:通过指令由外围硬件切换使FLASH空间工作在A区;
步骤22:进行A区擦除,数据校验正确后,将A软件写入A区:
如果A软件写入A区时出错,重启时系统读版本信息为B软件,由B区重启;
如果A软件写入A区正确,写入A软件版本信息,复位系统后由A区启动程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101155602A CN100416503C (zh) | 2005-11-04 | 2005-11-04 | 一种软件版本更新的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101155602A CN100416503C (zh) | 2005-11-04 | 2005-11-04 | 一种软件版本更新的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1959635A CN1959635A (zh) | 2007-05-09 |
CN100416503C true CN100416503C (zh) | 2008-09-03 |
Family
ID=38071344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101155602A Expired - Fee Related CN100416503C (zh) | 2005-11-04 | 2005-11-04 | 一种软件版本更新的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100416503C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100533380C (zh) * | 2007-11-30 | 2009-08-26 | 上海广电(集团)有限公司中央研究院 | 基于dsp的升级系统以及升级方法 |
CN101546267B (zh) * | 2008-03-24 | 2012-08-22 | 大唐移动通信设备有限公司 | 向数字信号处理器的外存加载程序的方法、系统及装置 |
CN101414264B (zh) * | 2008-11-24 | 2012-05-30 | 杭州师范大学 | 一种软件版本的更新方法 |
CN102081537B (zh) * | 2010-12-31 | 2014-12-17 | 青岛海信宽带多媒体技术有限公司 | 一种软件升级方法 |
CN102654839A (zh) * | 2012-04-18 | 2012-09-05 | 华为技术有限公司 | 一种实现现场可编程门阵列可靠升级的方法及装置 |
CN103345456B (zh) * | 2013-06-21 | 2015-12-02 | 烽火通信科技股份有限公司 | 调节BootLoader启动地址的电路及方法 |
CN104281463A (zh) * | 2013-07-12 | 2015-01-14 | 中国航天科工集团第三研究院第八三五八研究所 | 一种可选择版本的dsp处理器程序加载方法 |
CN106569817A (zh) * | 2016-11-03 | 2017-04-19 | 威海优微科技有限公司 | 一种isp在线式系统软件升级方法 |
CN110750405B (zh) * | 2019-10-28 | 2023-06-30 | 天津津航计算技术研究所 | 一种基于硬件板卡识别的软件兼容性方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1300390A (zh) * | 1998-03-12 | 2001-06-20 | 艾利森电话股份有限公司 | 数据转换硬件支援设备 |
WO2003009136A1 (en) * | 2001-07-16 | 2003-01-30 | Yuqing Ren | Embedded software update system |
JP2003271409A (ja) * | 2002-03-14 | 2003-09-26 | Toshiba Corp | 無線通信端末およびサーバ |
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
WO2005048075A2 (en) * | 2003-11-12 | 2005-05-26 | Yuqing Ren | Embedded software update methods and systems for digital devices |
-
2005
- 2005-11-04 CN CNB2005101155602A patent/CN100416503C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1300390A (zh) * | 1998-03-12 | 2001-06-20 | 艾利森电话股份有限公司 | 数据转换硬件支援设备 |
WO2003009136A1 (en) * | 2001-07-16 | 2003-01-30 | Yuqing Ren | Embedded software update system |
CN1585926A (zh) * | 2001-09-17 | 2005-02-23 | 索马网络公司 | 软件更新方法、设备和系统 |
JP2003271409A (ja) * | 2002-03-14 | 2003-09-26 | Toshiba Corp | 無線通信端末およびサーバ |
WO2005048075A2 (en) * | 2003-11-12 | 2005-05-26 | Yuqing Ren | Embedded software update methods and systems for digital devices |
Also Published As
Publication number | Publication date |
---|---|
CN1959635A (zh) | 2007-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100416503C (zh) | 一种软件版本更新的方法 | |
CN102214113B (zh) | 一种操作系统升级方法、装置及终端 | |
CN103299276B (zh) | 嵌入式装置的软件更新过程 | |
CN101853172B (zh) | 复杂可编程逻辑器件cpld动态升级装置及方法 | |
CN100383739C (zh) | 嵌入式操作系统镜像启动的启动优化方法 | |
CN109478135A (zh) | 优化的uefi重新引导过程 | |
CN101814035A (zh) | 允许快速平台重启的方法和系统 | |
CN1333358C (zh) | 具有配置初始化功能的内电路配置结构 | |
CN100504782C (zh) | 避免基本输出入系统程序更新失败的计算机系统 | |
CN102207879B (zh) | Lua脚本热更新方法及系统 | |
KR19990062455A (ko) | 컴퓨터메모리의 논리적드라이브에 파티션맵핑 변환시스템 및 방법 | |
CN112035294B (zh) | 安全日志文件系统及其实现方法和介质 | |
CN111562932B (zh) | 一种高可靠嵌入式软件升级方法及系统 | |
CN109358865A (zh) | 一种具有远程升级功能的工业车辆车联网仪表及升级方法 | |
CN100549959C (zh) | 引导程序在线升级方法 | |
CN101872306B (zh) | 一种实现软件更新和软件备份的嵌入式系统及其实现方法 | |
US7546596B2 (en) | Non-disruptive method, system and program product for overlaying a first software module with a second software module | |
CN101140537A (zh) | 嵌入式操作系统的备份与恢复操作方法 | |
CN102043636B (zh) | 现场可编程门阵列位文件下载的方法及装置 | |
CN1333357C (zh) | 具有非易失性配置储存装置的内电路配置结构 | |
CN105335166A (zh) | 嵌入式设备的系统及嵌入式设备远程升级的方法 | |
CN112035171B (zh) | 基于uefi固件的恢复出厂设置方法及系统 | |
CN116501357A (zh) | 一种单片机的在线升级方法 | |
US8019985B2 (en) | Data-processing arrangement for updating code in an auxiliary processor memory | |
CN113490112B (zh) | 一种无线耳机及无线耳机的数据处理方法、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080903 Termination date: 20151104 |
|
EXPY | Termination of patent right or utility model |