CN1811708A - 一种实现单片机闪存动态更新的方法 - Google Patents
一种实现单片机闪存动态更新的方法 Download PDFInfo
- Publication number
- CN1811708A CN1811708A CN 200510033076 CN200510033076A CN1811708A CN 1811708 A CN1811708 A CN 1811708A CN 200510033076 CN200510033076 CN 200510033076 CN 200510033076 A CN200510033076 A CN 200510033076A CN 1811708 A CN1811708 A CN 1811708A
- Authority
- CN
- China
- Prior art keywords
- module
- flash
- download
- data
- chip microcomputer
- 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
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种实现单片机闪存动态更新的方法,将下载启动模块,状态切换模块,状态控制模块,Flash操作模块,程序获取模块,数据接收模块分别封装到单片机的源Flash区;由下载启动模块启动下载模式并通知状态切换模块;状态切换模块根据收到的下载指令来切换到不同运行状态;由状态控制模块设置待更新的目的Flash区域,由数据接收模块获取更新的分组数据,再由程序获取模块取出分组数据读入缓存,然后调用Flash操作模块中的Flash操作指令将数据写入到目的Flash中,完成更新。本发明将实现过程各步骤进行封装,在不同的地方使用时只需要将模块嵌入即可,具有很强的通用性、可扩展性和可移植性。
Description
技术领域
本发明涉及一种用于对单片机应用系统的闪存(Flash)进行远程动态更新的方法。尤其涉及适用于8051单片机应用领域的Flash更新。
背景技术
8051及与其兼容的系列单片机作为工业的标准地位,广泛应用于各类电器及通讯产品中。一般说来单片机使用内部的Flash来装载BOOT程序和应用程序,并且这两部分都分配有独立的空间。其中BOOT是引导程序存储在BOOT区,它的主要作用是对版本区的应用程序进行更新,以适应每次应用程序升级的需要;而BOOT程序的更新通常是通过烧录器将其直接烧录到Flash的BOOT区中的。由于BOOT程序属于软件范畴,因此不可避免的存在一些不完善的地方,这就需要更新BOOT程序来解决问题。如果程序代码存放在外部Flash中,实现程序代码升级直接对Flash进行操作即可;但对于单片机内部的程序代码,则需要通过IAP(In-Application-Programming)或ISP(In-System-Programming)方式实现。传统意义上的BOOT更新方式是将单片机从设备中取出,在烧录器上重新进行烧录,这样就涉及到设备的多次拆装,同时影响设备的稳定性也浪费了大量的人力和物力;并且对于应用程序的更新通常采用的是芯片自带的BOOT程序不具有通用性。
发明内容
本发明目的在于提供一种实现对单片机Flash进行远程动态更新的方法,用以克服目前情况下更新BOOT或应用程序需要将单片机从设备中取出然后通过烧录器来更新的弊端。
本发明的技术方案为:将下载启动模块,状态切换模块,状态控制模块,Flash操作模块,程序获取模块,数据接收模块各功能模块分别封装到单片机的源Flash区;由下载启动模块启动下载模式并通知状态切换模块;状态切换模块根据收到的下载指令来切换到单片机的不同运行状态;由状态控制模块设置待更新的目的Flash区域,由数据接收模块获取更新的分组数据,再由程序获取模块从数据接收模块中取出分组数据读入缓存,然后调用Flash操作模块中的Flash操作指令将数据写入到目的Flash中,完成更新。
这种Flash双向动态更新的方法,采用模块化的思想将实现过程各步骤进行封装,在不同的地方使用时只需要将模块嵌入即可,具有很强的通用性、可扩展性和可移植性。它可以应用于任何可以提供IAP或ISP操作的单片机系统。
附图说明
图1是本发明单片机Flash更新方法结构示意图
图2是本发明单片机Flash更新方法实施例实现流程图
具体实施方式
本发明的要点是将下载启动模块,状态切换模块,状态控制模块,Flash操作模块,程序获取模块,数据接收模块分别封装到单片机源Flash区域。如图1所示:
下载启动模块负责单片机下载模式的启动,这里主要是指启动下载BOOT还是下载应用程序,它以消息的形式通知状态切换模块。通常它的实现方式是以后台界面的形式出现。
对状态切换模块,在这里我们首先定义单片机运行的两种状态。第一是BOOT态,它是指单片机从BOOT区启动,从装载BOOT的Flash的起始地址开始取指令执行BOOT程序;第二是应用态,指单片机上电后从应用程序的Flash的起始地址开始取指令运行应用程序代码。这两种状态对单片机来说是可控的,状态切换模块完成的主要工作是在收到启动模块发来的相应的下载指令来切换到单片机的不同运行状态。当前单片机状态与下载状态相同是时,不切换;如果不同,则切换。
状态控制模块,该模块主要是设置不同的待更新的目的Flash区域。如果是BOOT态,需要更新应用程序部分,如果是应用态,需要更新BOOT部分。
数据接收模块,在状态确定后就可以启动数据接收模块来获取分组数据了,该模块可以根据不同的协议来完成,它提供的是一个通用的对外接口,主要用来获得更新的分组数据。
程序获取模块,该模块的作用是从数据接收模块中取出一分组数据读入缓存,然后调用Flash操作模块中的Flash操作指令将数据写入到待更新的目的Flash区域中,完成更新。
Flash操作模块负责根据不同型号的单片机,来封装Flash操作的指令,包括Flash的读、写、擦除和校验等。以实现对目的Flash区域的更新。
下面在3G无线通信系统中以应用8051系列单片机的单板为例描述用本专利方法进行Flash更新的过程。这里以SST89V564RD单片机为例,这款单片机内部Flash分为Block0和Block1两部分,Block0是用来保存应用程序的64k区域,Block1是用来保存BOOT程序的8k区域。。
单板的主要硬件包括8051单片机SST89V564RD和一些相关的外围电路和器件。单片机第一次使用时需要进行烧录。一般是将BOOT区和应用程序区都进行烧录。默认的工作状态是单片机上电后先进入BOOT态等待10秒钟后进入应用态,正常运行时候是处在应用态的。
如图2所示:
1、10秒后,首先进行单片机的上电后的系统初始化。
2、运行正常应用程序,如果收到下载启动消息,根据启动消息类型判断是哪种下载,BOOT下载或应用程序下载。
3、进行单片机状态切换,如果进行BOOT下载,保持当前状态;如果进行应用程序下载,则切换到BOOT态下运行。
4、状态切换完成后,保持当前状态并进行待更新的目的Flash区寄存器的设置,同时进入数据监听串口数据状态。
5、监听下载数据,在数据接收模块进行分组处理。
6、获取分组数据存入缓存中,并调用Flash操作模块的指令,将该缓存中的分组数据刷新到待更新的目的Flash区域中。
7、检查下载文件是否下发完毕,如果完毕并且写入成功则返回成功结果,否则返回失败结果;如果未发送完毕重复5、6步骤直到结束。
开始下载的时候,也可以启动定时器,如果下载时间超过预先设定的时间,可以返回失败结果,结束下载。
本发明提出了一种单片机Flash动态更新的方法,它可以对单片机不同的Flash区域进行动态更新。BOOT区和应用程序区是经常用到并且需要更新的区域,通过BOOT区完成对应用程序存储区Flash的动态更新;通过在应用程序区来完成BOOT区的更新。同时独立封装数据接收模块,这样可以通过各种方式来获取下载的文件数据方便在各个系统中的实现。该方法提出了一种双BOOT更新模式,即用原有的BOOT区来更新应用程序区,同时又在应用程序区中的应用程序中嵌入下载BOOT功能的模式,实现了单片机所有Flash的动态更新并且解决了传统单片机的BOOT更新不能下载的弊端。
Claims (3)
1、一种实现单片机闪存动态更新的方法,将下载启动模块,状态切换模块,状态控制模块,闪存操作模块,程序获取模块,数据接收模块各功能模块分别封装到单片机的源闪存区域;由下载启动模块启动下载模式并通知状态切换模块;状态切换模块根据收到的下载指令来切换到单片机的不同运行状态;由状态控制模块设置待更新的目的闪存区域,由数据接收模块获取更新的分组数据,再由程序获取模块从数据接收模块中取出分组数据读入缓存,然后调用闪存操作模块中的闪存操作指令将数据写入到目的闪存区域中,完成更新。
2、权利要求1所述的实现单片机闪存动态更新的方法,其特征在于,所述状态切换模块切换到不同运行状态,是指判断当前单片机状态是否与下载状态相同,如果不同,则切换。
3、权利要求1所述的实现单片机闪存动态更新的方法,其特征在于,在下载数据后检查数据是否下载完毕,若未下载完毕,则继续下载过程直到下载完毕后返回下载结果并进行状态切换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100330765A CN100373336C (zh) | 2005-01-28 | 2005-01-28 | 一种实现单片机闪存动态更新的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100330765A CN100373336C (zh) | 2005-01-28 | 2005-01-28 | 一种实现单片机闪存动态更新的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1811708A true CN1811708A (zh) | 2006-08-02 |
CN100373336C CN100373336C (zh) | 2008-03-05 |
Family
ID=36844650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100330765A Expired - Fee Related CN100373336C (zh) | 2005-01-28 | 2005-01-28 | 一种实现单片机闪存动态更新的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100373336C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329646B (zh) * | 2007-06-20 | 2011-11-30 | 上海华虹集成电路有限责任公司 | 实现flash页擦除仿真的仿真器 |
CN104035793A (zh) * | 2014-05-22 | 2014-09-10 | 浙江大学 | 基于单片机的在应用无线编程方法 |
CN104793942A (zh) * | 2015-04-27 | 2015-07-22 | 柳州市一呼百应科技有限公司 | 一种客户端软件开发的方法 |
CN104820597A (zh) * | 2015-04-27 | 2015-08-05 | 柳州市一呼百应科技有限公司 | 一种软件开发方法 |
CN107729040A (zh) * | 2017-09-28 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种单片机的iap方法及系统 |
CN109308932A (zh) * | 2017-07-26 | 2019-02-05 | 北京兆易创新科技股份有限公司 | 一种闪存、闪存工作模式的切换方法及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950277B (zh) * | 2010-09-13 | 2012-04-25 | 青岛海信信芯科技有限公司 | 用于微控制单元的数据传输方法与装置以及数据传输系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930504A (en) * | 1996-07-22 | 1999-07-27 | Intel Corporation | Dynamic nonvolatile memory update in a computer system |
JPH11353170A (ja) * | 1998-06-09 | 1999-12-24 | Canon Inc | フラッシュメモリ制御装置およびフラッシュメモリ制御装置のメモリアクセス方法 |
TWI317503B (en) * | 2002-12-31 | 2009-11-21 | Hon Hai Prec Ind Co Ltd | System and method for remote installation of application programs in mobile derices |
CN1258140C (zh) * | 2003-04-09 | 2006-05-31 | 英业达股份有限公司 | 更新闪存存储器内容的装置及方法 |
-
2005
- 2005-01-28 CN CNB2005100330765A patent/CN100373336C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329646B (zh) * | 2007-06-20 | 2011-11-30 | 上海华虹集成电路有限责任公司 | 实现flash页擦除仿真的仿真器 |
CN104035793A (zh) * | 2014-05-22 | 2014-09-10 | 浙江大学 | 基于单片机的在应用无线编程方法 |
CN104793942A (zh) * | 2015-04-27 | 2015-07-22 | 柳州市一呼百应科技有限公司 | 一种客户端软件开发的方法 |
CN104820597A (zh) * | 2015-04-27 | 2015-08-05 | 柳州市一呼百应科技有限公司 | 一种软件开发方法 |
CN109308932A (zh) * | 2017-07-26 | 2019-02-05 | 北京兆易创新科技股份有限公司 | 一种闪存、闪存工作模式的切换方法及设备 |
CN107729040A (zh) * | 2017-09-28 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种单片机的iap方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN100373336C (zh) | 2008-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100373336C (zh) | 一种实现单片机闪存动态更新的方法 | |
CN100561433C (zh) | 嵌入式系统及其升级方法 | |
RU2008144691A (ru) | Система и способ обновления программы для мобильного терминала с поддержкой ота | |
JP2010129080A (ja) | ソフトウェア実行システムおよびソフトウェアの実行方法 | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN101252458A (zh) | 一种固件批量升级方法 | |
TW201807571A (zh) | 產生容器的方法、裝置、終端、伺服器與系統 | |
CN109144532A (zh) | 升级方法及装置 | |
CN104063243A (zh) | 一种应用于智能穿戴设备的应用商店解决方案 | |
CN106502717A (zh) | 应用程序运行方法及装置 | |
CN104572207A (zh) | 一种基于智能配件的app扩展使用方法及智能配件 | |
CN101521600B (zh) | 一种网关设备中业务控制方法和网关设备 | |
US7302596B2 (en) | Circuit capable of updating power supply specification of microprocessor and method thereof | |
CN1670697A (zh) | 更新开机界面之系统及方法 | |
CN101193010A (zh) | 家庭智能网络系统的模拟板固件升级方法 | |
CN102185970A (zh) | 手机视频播放器组件模型对象接口规范的建立方法 | |
KR20070096316A (ko) | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 | |
CN101299676B (zh) | 单板软件的升级方法以及实现前后台校验升级的单板系统 | |
CN102629209B (zh) | 实现单板即插即用的方法、单板及系统 | |
CN111930409A (zh) | 一种基于网络的单片机dtu远程固件升级方法 | |
CN114327781A (zh) | 虚拟终端的管控方法及装置、系统、电子设备、存储介质 | |
KR100538627B1 (ko) | 무선통신단말기의 소프트웨어 부분 업그레이드 방법 | |
JP2004164605A (ja) | センサ | |
CN107315602B (zh) | 一种应用程序的升级方法及终端 | |
CN101000551A (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: 20080305 Termination date: 20150128 |
|
EXPY | Termination of patent right or utility model |