[go: up one dir, main page]

CN1286008C - 一种实现单片机软件版本更新的方法和装置 - Google Patents

一种实现单片机软件版本更新的方法和装置 Download PDF

Info

Publication number
CN1286008C
CN1286008C CN 200410029617 CN200410029617A CN1286008C CN 1286008 C CN1286008 C CN 1286008C CN 200410029617 CN200410029617 CN 200410029617 CN 200410029617 A CN200410029617 A CN 200410029617A CN 1286008 C CN1286008 C CN 1286008C
Authority
CN
China
Prior art keywords
software version
flash memory
version
chip microcomputer
pin
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
Application number
CN 200410029617
Other languages
English (en)
Other versions
CN1564131A (zh
Inventor
王志刚
梁波
魏元
方瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN 200410029617 priority Critical patent/CN1286008C/zh
Publication of CN1564131A publication Critical patent/CN1564131A/zh
Application granted granted Critical
Publication of CN1286008C publication Critical patent/CN1286008C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种实现单片机软件版本更新的方法,用于更新与单片机相连的闪存中的软件版本。通过一片可编程逻辑器件来切换单片机的EA引脚的信号电平,从而控制单片机在版本更新过程中首先从内部自带的程序存储空间运行,在更新完毕后从所述的闪存中调用软件版本。还公开了一种实现单片机软件版本更新的装置,包括:一个单片机、一片随机存储器、一片闪存和一片可编程逻辑器件。本发明解决了现有技术在版本更新中需要将闪存中的内容搬移到随机存储器中执行,消耗掉随机存储器中的部分资源,造成数据存储空间的划分比较复杂的问题。本发明通过硬件实现的切换操作快捷容易,无需程序代码的搬移过程,提高了程序的运行效率。

Description

一种实现单片机软件版本更新的方法和装置
技术领域
本发明涉及通信技术中在单片机上进行软件版本更新的方法和装置,特别是涉及一种使用单片机为控制核心的装置进行远程软件版本更新的方法和装置。
背景技术
本发明涉及的装置采用单片机作为控制CPU,通常的使用方式是:软件版本存放在外部的FLASH闪存中,CPU从闪存中取指、译码执行。由于单片机的程序地址空间和数据地址空间是分开的,当从FLASH中取指执行程序时就不可能修改FLASH中的内容。每次更新软件版本时,一般需要用烧录器对FLASH闪存烧结更换。如果需要更新程序的单板或系统装置的数量相当多且分布比较分散的时候,升级软件版本的过程将是件复杂而又困难的事情,因此在工程开局的现场迫切需要一种能够实现远程软件版本更新的方法。
一种可以采用的方法是单片机从内部运行引导程序,将FLASH的地址空间映射到单片机的数据空间。将要运行的软件版本从FLASH搬移到数据RAM中执行,通过对FLASH空间的编程来达到软件版本更新的目的。这种方法将FLASH的地址空间看成是数据区,始终从单片机的内部来引导程序,如果需要执行下载后的程序时,则需要不断地将FLASH中的内容再搬到RAM中执行,如果RAM的地址有限,而FLASH的程序又很长时,则需要反复地进行搬移执行。这势必要消耗掉RAM中的部分资源,造成RAM数据空间的划分比较复杂,而且在选择RAM时更要多加一层考虑。
发明内容
本发明所要解决的技术问题是提供一种实现单片机软件版本更新的方法和装置,解决现有技术在版本更新中需要将FLASH中的内容搬到RAM中执行,消耗掉RAM中的部分资源,造成RAM数据空间的划分比较复杂的问题。
为达到上述目的,本发明提供了一种实现单片机软件版本更新的方法,用于更新与单片机相连的闪存中的软件版本,其特点在于,通过一片可编程逻辑器件来切换单片机的EA引脚的信号电平,从而控制单片机在版本更新过程中首先从内部自带的程序存储空间运行,在更新完毕后转到所述的闪存中调用软件版本。
上述的方法,其特点在于,在所述更新闪存中软件版本的过程前,包括一个查询单片机的运行状态的步骤,如果单片机正在从所述闪存中调用软件版本则进行EA切换和复位单片机,从而使单片机转到其内部自带的程序存储器中调用软件版本,并开始更新软件版本。
上述的方法,其特点在于,更新软件版本包括:首先接收下载软件版本的数据包,校验正确无误后烧录到闪存中并修改版本启动参数信息,最后启动该下载的软件版本。
上述的方法,其特点在于,所述可编程逻辑器件连接所述单片机的EA脚、RST脚和P1口,通过逻辑处理控制单片机的复位、EA脚信号设置和闪存地址空间的选择,使EA引脚为低电平时,单片机从闪存中调用软件版本,EA引脚为高电平时,单片机从其内部自带的程序存储器中调用软件版本。
上述的方法,其特点在于,在所述闪存中存储有两套软件版本和所述两套软件版本的启动参数和状态信息,单片机复位后总是先从其内部自带的程序存储器中调用软件版本,并从闪存中选择一套软件版本作为主用的软件版本,另一套为备用,然后进行EA切换转到闪存中调用所述作为主用的软件版本。
上述的方法,其特点在于,从所述闪存中调用软件版本还包括一个版本检测步骤,根据软件版本能否正确运行而修改版本启动参数的有效标志;并且如果下载的软件版本不能运行,则需要切换到单片机内部程序存储器运行,重新进行软件的启动检测过程。
上述的方法,其特点在于,从其内部自带的程序存储器中调用软件版本还包括一个版本检测步骤,检测所述闪存中的软件版本启动参数和状态信息,选择作为主用的软件版本供调用,备用的软件版本用于版本更新和当主用版本破坏时进行主备用的转换,避免由于下载更新过程中的错误导致整个系统无法回复的故障。
本发明还提供了一种实现单片机软件版本更新的装置,其特点在于,包括:一个单片机、一片随机存储器、一片闪存和一片可编程逻辑器件;
所述单片机其内部自带程序存储器,所述的单片机在外部扩展程序存储空间和数据存储空间,并从所述的单片机内部自带的程序存储器和所述闪存中调用软件版本;
所述可编程逻辑器件连接所述单片机的EA脚、RST脚和P1口,通过逻辑处理控制单片机的复位、EA脚信号设置和闪存地址空间的选择。
上述的装置,其特点在于,所述闪存的存储空间大于128K字节。
上述的装置,其特点在于,在EA脚为低电平时,所述可编程逻辑器件控制单片机从外部程序空间执行,闪存的地址映射为64K的程序空间,通过可编程逻辑器件选择闪存的高位地址线,从而控制单片机从闪存中调用的软件版本;在EA脚为高电平时,所述可编程逻辑器件控制单片机从内部程序空间执行,闪存的地址映射为高16K的数据空间,采用P1口选择扇区地址来达到对全部闪存地址空间的访问,通过数据空间读写来更新闪存中的软件版本内容。
本发明的技术效果在于:采用本发明的方法和装置,可以灵活地选择RAM空间的大小,无需进行复杂的RAM空间地址划分。通过对EA脚的切换选择,程序要么从单片机内部执行,要么从FLASH中来取指,省掉了大量向RAM中搬移程序再执行的操作过程,提高了程序的运行效率;同时EA脚是通过硬件来的切换的,操作起来也很快捷和容易。
下面结合附图进一步详细说明本发明的具体实施例。
附图说明
图1为本发明装置的硬件原理框图;
图2为软件版本下载接收的消息流程;
图3为内部运行的软件版本检测流程;
图4为外部运行的软件版本检测流程。
具体实施方式
本发明所述的版本更新方法的关键之处在于,系统通过切换EA引脚的电平状态来控制单片机从内外部程序空间运行。由于单片机的EA脚电平只在芯片复位时才采样,这就需要通过可编程逻辑器件锁存EA脚电平和控制单片机RST脚信号。选用的单片机为内部自带程序存储空间的CPU,存放用于接收软件版本并将下载版本烧结到FLASH中去的程序;外部FLASH闪存的空间要求为128K字节,每个64K字节的存储空间为独立的版本工作区;RAM采用32K字节的随机存储器。
图1为本发明装置的硬件原理框图,单片机102的P0、P1、P2口和/RD、/WR、/PSEN、ALE、/EA、/RST信号拉到可编程逻辑器件103中,分离出来的地址和数据线信号与RAM101地址线106、数据线105以及FLASH104地址线106、数据线105相连接,并产生FLASH的写选通信号/WE、读选通信号/OE和片选信号CE。可编程逻辑器件103还产生FLASH的高3位地址信号。RAM101的读选通信号/OE、写选通信号/WE直接和单片机的/RD、/WR信号线相连接,片选信号/CE直接由单片机的最高位地址线P2.7控制。在可编程逻辑器件103中,构建了用来控制EA引脚信号的寄存器、选择外部FLASH最高位地址线A16的寄存器,单片机102通过数据空间的地址进行访问。
当单片机从外部运行时,FLASH地址映射为程序空间0000H-FFFFH。通过可编程逻辑器件来控制A16线信号,选择运行的程序空间为00000H-OFFFFH还是10000H-1FFFFH。当单片机从内部运行时,FLASH地址则映射为数据空间C000H-FFFFH共16K字节,可通过单片机的P1.2、P1.1、P1.0来选择FLASH的扇区地址,以实现所有地址空间的访问。
图2为软件版本下载接收的消息流程图,包括以下几个步骤:
第一步,查询单片机的运行状态,如果运行在外部程序区,则进行EA切换和复位单片机,从内部程序区运行软件版本接收程序。
第二步,收到版本更新开始命令后,进行下载控制过程初始化,保存消息中的版本大小和校验信息,请求发送下载数据包。
第三步,收到下载数据包命令后,进行包序号的检查,并保存到下载版本缓冲区,请求下载下一个数据包。
第四步,收到版本更新结束命令后,进行软件版本校验,烧结到FLASH备用版本区,返回版本更新成功消息。
第五步,设置版本信息区状态为“首次运行”,修改版本启动参数区,设置新下载版本为主用。进行EA切换和复位单片机,从外部运行该软件版本。
图3为单片机在内部运行时的软件版本检测流程图,大致包括以下几个步骤:
第一步,上电启动后从内部空间运行,首先检查版本启动参数区是否“有效”,主备用版本选择是否正确?如果该参数区完整正确则转第三步继续,否则转第二步。
第二步,检查备份的版本启动参数区是否“有效”,设置的主备用版本选择信息是否正确?如果该参数区完整正确则恢复到版本启动参数区,转第三步继续,否则表明无版本可供启动。
第三步,读取主用版本信息并检查其状态,如果是“首次运行”则改为“无效”状态,转第五步继续;如果不是“首次运行”则转第四步;如果主用版本信息是“有效”状态则直接转第五步继续。
第四步,读取备用版本信息并检查其状态,如果是“无效”状态则表明无版本可供启动。如果是“首次运行”则改为“无效”状态,交换主备用版本选择。如果是“有效”状态则也要交换主备用版本选择。
第五步,设置主用版本区选择,进行EA脚切换和复位单片机,从外部运行该主用软件版本。
在图3中,上述的单片机在内部运行时的软件版本检测流程可进一步细化为:
步骤301,读取软件版本启动参数区的信息;
步骤302,检查版本启动参数区的信息是否有效,是则执行步骤303,否则执行步骤310;
步骤303,检查主用版本和备用版本选择是否正确,是则执行步骤304,否则执行步骤310;
步骤304,检查备份启动参数和当前启动参数是否一样,是则执行步骤306,否则执行步骤305;
步骤305,将软件版本启动参数区信息复制到备份区;
步骤306,读取主用软件版本状态信息;
步骤307,检查版本状态信息是否“有效”,是则执行步骤320,否则执行步骤308;
步骤308,检查版本状态信息是否为“首次运行”,是则执行步骤309,否则执行步骤314;
步骤309,将版本状态修改为“无效”并转到步骤320;
步骤310,读取备份软件版本启动参数区的信息;
步骤311,检查版本启动参数区的信息是否有效,是则执行步骤312,否则执行步骤317;
步骤312,检查主用版本和备用版本选择是否正确,是则执行步骤313,否则执行步骤317;
步骤313,从备份的软件版本启动参数区恢复信息,并转到步骤306;
步骤314,读取备份软件版本状态信息;
步骤315,检查软件版本状态信息是否“有效”,是则执行步骤319,否则执行步骤316;
步骤316,检查版本状态信息是否为“首次运行”,是则执行步骤318,否则执行步骤317;
步骤317,报告“无版本”可供引导告警,并转到步骤322;
步骤318,将版本状态修改为“无效”;
步骤319,交换版本启动参数中主用版本选择和备用版本选择;
步骤320,设置当前主用的版本区和备用的版本区号;
步骤321,进行EA切换、复位运行主用软件版本;
步骤322,结束。
图4为单片机从外部运行时软件版本的检测流程图,包括以下几个步骤:
第一步,读取软件版本的状态信息,检查软件版本的长度、校验FLASH存储区的软件版本内容。
第二步,校验如不通过表明版本破坏,修改版本有效位标志为“无效”,EA切换和复位单片机到内部运行。
第三步,校验如通过表明版本正确,修改版本有效位标志为“有效”,继续正常的软件版本运行。
在图4中,上述单片机从外部运行时软件版本的检测流程可进一步细化为:
步骤401,读取自己的软件版本状态信息;
步骤402,读取逻辑中保存的启动版本选择;
步骤403,检查状态信息中版本长度是否正确,是则执行步骤404,否则执行步骤410;
步骤404,按照版本长度读取软件版本并计算校验值;
步骤405,检查状态信息中版本校验是否正确,是则执行步骤406,否则执行步骤410;
步骤406,检查版本状态信息是否为“有效”,是则执行步骤409,否则执行步骤407;
步骤407,将该版本状态信息修改为“有效”;
步骤408,切换到内部运行重新引导软件版本,并转到步骤412;
步骤409,正常继续往下执行应用软件程序,并转到步骤412;
步骤410,将该版本状态信息修改为“无效”;
步骤411,切换到内部运行重新引导软件版本,并转到步骤412;
步骤412,结束。
如果下载的软件版本有错误,第一次运行时如果没有进入软件版本检测流程,就会导致看门狗溢出复位。进入到内部软件版本检测流程时,由于状态有效标志已被修改为“无效”状态,表明下载的软件版本错误,不会被再次启动运行。避免了软件版本下载错误导致整个系统无法恢复的现象。
以上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围;凡是依本发明所作的等效变化与修改,都被本发明的专利范围所涵盖。

Claims (7)

1、一种实现单片机软件版本更新的方法,用于更新与单片机相连的闪存中的软件版本,其特征在于,通过一片可编程逻辑器件来切换单片机的EA引脚的信号电平,从而控制单片机在版本更新过程中首先从内部自带的程序存储空间运行,在更新完毕后转到所述的闪存中调用软件版本;
在所述更新闪存中软件版本的过程前,包括一个查询单片机的运行状态的步骤,如果单片机正在从所述闪存中调用软件版本则进行EA切换和复位单片机,从而使单片机转到其内部自带的程序存储器中调用软件版本,并开始更新软件版本;
更新软件版本包括:首先接收下载软件版本的数据包,校验正确无误后烧录到闪存中并修改版本启动参数信息,最后启动该下载的软件版本。
2、根据权利要求1所述的方法,其特征在于,所述可编程逻辑器件连接所述单片机的EA脚、RST脚和P1口,通过逻辑处理控制单片机的复位、EA脚信号设置和闪存地址空间的选择,使EA引脚为低电平时,单片机从闪存中调用软件版本,EA引脚为高电平时,单片机从其内部自带的程序存储器中调用软件版本。
3、根据权利要求2所述的方法,其特征在于,在所述闪存中存储有两套软件版本和所述两套软件版本的启动参数和状态信息,单片机复位后总是先从其内部自带的程序存储器中调用软件版本,并从闪存中选择一套软件版本作为主用的软件版本,另一套为备用,然后进行EA切换转到闪存中调用所述作为主用的软件版本。
4、根据权利要求3所述的方法,其特征在于,从所述闪存中调用软件版本还包括一个版本检测步骤,根据软件版本能否正确运行而修改版本启动参数的有效标志;并且如果下载的软件版本不能运行,则需要切换到单片机内部程序存储器运行,重新进行软件的启动检测过程。
5、根据权利要求3所述的方法,其特征在于,从其内部自带的程序存储器中调用软件版本还包括一个版本检测步骤,检测所述闪存中的软件版本启动参数和状态信息,选择作为主用的软件版本供调用,备用的软件版本用于版本更新和当主用版本破坏时进行主备用的转换,避免由于下载更新过程中的错误导致整个系统无法回复的故障。
6、一种实现单片机软件版本更新的装置,其特征在于,包括:一个单片机、一片随机存储器、一片闪存和一片可编程逻辑器件;
所述单片机其内部自带程序存储器,所述的单片机在外部扩展程序存储空间和数据存储空间,并从所述的单片机内部自带的程序存储器和所述闪存中调用软件版本;
所述可编程逻辑器件连接所述单片机的EA脚、RST脚和P1口,通过逻辑处理控制单片机的复位、EA脚信号设置和闪存地址空间的选择;
在EA脚为低电平时,所述可编程逻辑器件控制单片机从外部程序空间执行,闪存的地址映射为64K的程序空间,通过可编程逻辑器件选择闪存的高位地址线,从而控制单片机从闪存中调用的软件版本;在EA脚为高电平时,所述可编程逻辑器件控制单片机从内部程序空间执行,闪存的地址映射为高16K的数据空间,采用P1口选择扇区地址来达到对全部闪存地址空间的访问,通过数据空间读写来更新闪存中的软件版本内容。
7、根据权利要求6所述的装置,其特征在于,所述闪存的存储空间大于128K字节。
CN 200410029617 2004-03-29 2004-03-29 一种实现单片机软件版本更新的方法和装置 Expired - Fee Related CN1286008C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410029617 CN1286008C (zh) 2004-03-29 2004-03-29 一种实现单片机软件版本更新的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410029617 CN1286008C (zh) 2004-03-29 2004-03-29 一种实现单片机软件版本更新的方法和装置

Publications (2)

Publication Number Publication Date
CN1564131A CN1564131A (zh) 2005-01-12
CN1286008C true CN1286008C (zh) 2006-11-22

Family

ID=34480958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410029617 Expired - Fee Related CN1286008C (zh) 2004-03-29 2004-03-29 一种实现单片机软件版本更新的方法和装置

Country Status (1)

Country Link
CN (1) CN1286008C (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100462916C (zh) * 2007-04-10 2009-02-18 中兴通讯股份有限公司 一种在嵌入式软件中记录版本信息的方法
CN101706731B (zh) * 2009-11-27 2013-03-27 中兴通讯股份有限公司 一种程序的加载方法及系统
CN104423984A (zh) * 2013-08-29 2015-03-18 比亚迪股份有限公司 在线升级方法和在线升级系统
CN104461589A (zh) * 2013-09-17 2015-03-25 海尔集团公司 单片机升级方法及升级系统
CN107957881A (zh) * 2017-12-06 2018-04-24 广东嘉腾机器人自动化有限公司 单片机程序更新方法、系统以及计算机可读存储介质
CN113296433A (zh) * 2021-04-28 2021-08-24 成都秦川物联网科技股份有限公司 一种单片机复位方法
CN113641393A (zh) * 2021-10-18 2021-11-12 深圳市智想科技有限公司 一种在单片机运行期间在线更新闪存数据的装置及方法

Also Published As

Publication number Publication date
CN1564131A (zh) 2005-01-12

Similar Documents

Publication Publication Date Title
CN1143209C (zh) 操作系统的重启动方法和计算机系统的控制方法
CN1282089C (zh) 控制串行快闪存储器中适当执行的装置和方法及相应芯片
US7639538B2 (en) Memory card, semiconductor device, and method of controlling memory card
US6415338B1 (en) System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
US7039788B1 (en) Method and apparatus for splitting a logical block
CN1230829C (zh) 快速可电擦写可编程只读存储器系统中的数据处理方法
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
US20040076069A1 (en) System and method for initializing a memory device from block oriented NAND flash
CN105391985B (zh) 一种基于嵌入式Linux的视频监控系统与方法
CN1499530A (zh) 非易失性存储器系统内有效允许失序写处理的方法和装置
CN111078318A (zh) 配置文件的处理方法、装置、系统及存储介质
EP1658562A1 (en) A method of accessing data in a computing device
CN101030146A (zh) 一种实现固件更新的方法和系统
CN1270229C (zh) 基于动态内核实现跨地址空间创建构件对象的方法
CN1525391A (zh) 非易失性存储卡
CN1286008C (zh) 一种实现单片机软件版本更新的方法和装置
US20070203959A1 (en) Apparatus and method for managing resources using virtual ID in multiple Java application environment
CN1945541A (zh) 处理操作信息传送控制系统和方法
CN1492320A (zh) Windows程序异常捕获及定位方法
US20210311879A1 (en) Apparatus and method for controlling map data in a memory system
CN1470991A (zh) 一种采用与非闪存作系统存储器的方法及装置
US20050268157A1 (en) Method for writing data to a non-volatile memory embedded in an integrated circuit and corresponding circuit
CN1244059C (zh) 在复位后用于检索复位矢量的方法
CN1945542A (zh) 一种嵌入式软件开发的方法及系统
CN1375769A (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: 20061122

Termination date: 20150329

EXPY Termination of patent right or utility model