一种通用编程器固件的更新方法.pdf

上传人:大师****2 文档编号:1308051 上传时间:2018-04-14 格式:PDF 页数:7 大小:380.34KB
返回 下载 相关 举报
摘要
申请专利号:

CN201611081505.0

申请日:

2016.11.30

公开号:

CN106648759A

公开日:

2017.05.10

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/445申请日:20161130|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

苏州华芯微电子股份有限公司

发明人:

张飞飞

地址:

215011 江苏省苏州市高新区向阳路198号

优先权:

专利代理机构:

南京利丰知识产权代理事务所(特殊普通合伙) 32256

代理人:

王锋

PDF下载: PDF下载
内容摘要

本发明公开了一种通用编程器固件的更新方法,包括:下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;MCU重新上电后,boot程序首先从非易失性存储器中读取更新标记位,根据所述更新标记位判断是否需要更新固件程序;若需要更新固件程序,boot程序再从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;若不需要更新固件程序,则直接执行原有固件程序。采用本发明无需外接编程接口等硬件电路即可完成MCU固件的更新,方便简单,并提高固件更新效率。

权利要求书

1.一种通用编程器固件的更新方法,其特征在于包括:
下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;
MCU重新上电后,boot程序根据所述更新标记位判断是否需要更新固件程序;
若需要更新固件程序,boot程序从所述非易失性存储器中读取固件代码,并将所述固
件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;
之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序;
若不需要更新固件程序,boot程序跳转至原有固件程序的入口地址执行固件程序;
其中,所述boot程序为预先烧录至MCU中。
2.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于所述下载固件
代码包括:
在MCU固件程序中预设置一下载命令,上位机发送固件更新命令时,MCU执行下载命令
以下载固件代码。
3.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述MCU支持
IAP功能。
4.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述boot程序
位于MCU的复位地址处,MCU运行时首先执行boot程序。
5.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述固件程序
在编译时,改变其加载地址,使其位于所述boot程序之后。
6.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述非易失性
存储器为内部或外部EEPROM。
7.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:所述非易失性
存储器为内部或外部FLASH。
8.根据权利要求1或2所述的一种通用编程器固件的更新方法,其特征在于:所述下载
固件代码的方式包括网络下载、远程传输。
9.根据权利要求1所述的一种通用编程器固件的更新方法,其特征在于:
所述更新标记位的值为1或0;
所述下载固件代码并设置更新标记位包括将更新标记位设置为1。
10.根据权利要求9所述的一种通用编程器固件的更新方法,其特征在于所述判断是否
需要更新固件程序包括:
所述更新标记位等于1时,表示需要更新固件;
所述更新标记位等于0时,表示不需要更新固件。

说明书

一种通用编程器固件的更新方法

技术领域

本发明涉及嵌入式开发技术领域,具体涉及一种通用编程器固件的更新方法。

背景技术

在普通8位OTP型MCU项目开发中,编程器是一个重要的开发工具。通过它可以将开
发人员编译好的程序烧录到MCU的程序存储器中。但如果在编程器开发完成,并且交付给客
户使用后,需要增加新的功能或需要对新OTP MCU编程支持,这时,就需要更新编程器的固
件程序。

在传统的方案中,需要客户将编程器寄给编程器开发者,由编程器开发者更新好
固件程序后,再寄给客户使用,这种方法非常麻烦且效率低下。因此,可在编程器的研发初
期考虑由客户自己更新编程器的固件程序。

发明内容

针对现有技术的不足,本发明的主要目的在于:解决依赖编程器开发者更新固件
的问题,客户可以根据需要更新固件的嵌入产品自行更新编程器的固件程序。

为实现前述目的,本发明公开了一种通用编程器固件的更新方法,具体包括:

下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;

MCU重新上电后,boot程序根据所述更新标记位判断是否需要更新固件程序;

若需要更新固件程序,boot程序从所述非易失性存储器中读取固件代码,并将所
述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;

之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序;

若不需要更新固件程序,跳转至原有固件程序的入口地址执行程序;

其中,所述boot程序为预先烧录至MCU中。

优选地,所述下载固件代码包括:

在MCU固件程序中预设置一下载命令,上位机发送固件更新命令时,MCU下载固件
代码。

优选地,所述MCU支持IAP功能。

优选地,所述boot程序位于MCU的复位地址处,MCU运行时首先执行boot程序。

优选地,所述固件程序在编译时,改变其加载地址,使其位于所述boot程序之后。

优选地,所述非易失性存储器为内部或外部EEPROM。

优选地,所述非易失性存储器为内部或外部FLASH。

优选地,所述下载固件代码的方式包括网络下载、远程传输。

优选地,所述更新标记位的值为1或0;所述下载固件代码并设置更新标记位包括
将更新标记位设置为1。

优选地,所述判断是否需要更新固件程序包括:

所述更新标记位等于1时,表示需要更新固件;

所述更新标记位等于0时,表示不需要更新固件。

与现有技术相比,本发明的优点在于:采用本发明公开的一种通用编程器固件的
更新方法,不需要提前在编程器的电路板上增加编程接口等硬件电路,此更新方法简单,操
作方便,且大大提高了固件更新的效率。

附图说明

图1是本发明一实施例提出的一种通用编程器固件的更新方法中下载固件部分的
流程图;

图2是本发明一实施例提出的一种通用编程器固件的更新方法中更新固件部分的
流程图。

具体实施方式

鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的
技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。

本发明实施例提出一种通用编程器固件的更新方法,具体包括以下过程:

下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;

MCU重新上电后,boot程序首先从非易失性存储器中读取更新标记位,根据所述更
新标记位判断是否需要更新固件程序;

若需要更新固件程序,boot程序再从所述非易失性存储器中读取固件代码,并将
所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;

之后,boot程序跳转到更新后的固件程序的入口地址执行更新后的固件程序。

若不需要更新固件程序,跳转至原有固件程序的入口地址执行程序;

其中,所述boot程序为预先烧录至MCU中,通过该程序来判断是否要更新固件,以
及执行更新固件的具体操作。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不
用于限定本发明。

根据前述固件更新的方法可知,本发明实施例所述方法主要由两部分组成:下载
固件代码和更新固件程序。图1是本发明一实施例提出的一种通用编程器固件的更新方法
中下载固件代码过程的流程图,如图1所示,具体步骤包括:

步骤101,上位机发送固件更新命令;

在正常的MCU固件程序中,增加一个下载命令,用于下载固件程序。上位机软件将
通过网络下载、远程传输等方式将新的固件代码下载下来后,上位机发送固件更新命令,
MCU执行下载命令进行固件代码下载操作。

步骤102,将固件代码存储到非易失性存储器中;

MCU执行下载命令,将固件代码保存到内部或外部存储器中,以备固件更新使用。

步骤103,设置更新标记位Flag_Update=1;

更新标记位用于提示是否需要进行固件更新,Flag_Update=1时,表示需要更新
固件;Flag_Update=0时,表示不需要更新固件。

步骤104,将该更新标记位Flag_Update保存在内部或外部存储器中。

由于在固件的更新过程中需要对MCU重新上电,因此,用来存储固件代码的所述内
部或外部存储器须为非易失性存储器。所述存储器可以为内部或外部存储器,如EEPORM、
FLASH等。

图2是本发明一实施例提出的一种通用编程器固件的更新方法中更新固件程序过
程的流程图,如图2所示,具体步骤如下:

步骤201,boot程序从如前所述的非易失性存储器中读取之前保存的更新标记位
Flag_Update,并判断Flag_Update值;

若Flag_Update=1,则表示需要更新固件,执行步骤202;若Flag_Update=0,则表
示不需要更新固件,直接跳转到原有固件程序的入口地址执行程序,执行步骤205。

步骤202,boot程序从所述非易失性存储器中读出固件代码,并将该固件代码写入
MCU自身的程序存储器中;

步骤203,待固件代码全部写完毕后,将Flag_Update的值修改为0,并再次保存到
所述非易失性存储器中;

固件更新后将Flag_Update的值修改为0,并保存在非易失性存储器中,待MCU重新
上电时,boot程序读取到Flag_Update=0则跳过固件更新的操作,从而防止了发生重复更
新固件程序的情况。

步骤204,boot程序跳转到更新后的固件程序的入口地址,执行更新后的固件程
序;

步骤205,执行固件程序。

为保证固件更新的准确性和有效性,boot程序须位于MCU的复位地址处,并保证
MCU运行的第一个程序必须是boot程序。固件程序须在编译时改变其加载地址,使其地址位
于boot程序之后。

进一步地,为了保证固件程序的稳定性,在执行具体更新操作前,还可包括一备份
过程,对原固件程序进行备份,以防更新失败导致固件程序无法使用。

需要说明的是,本发明实施例提出的一种固件更新方法中所述的下载固件代码和
更新固件程序过程,在操作过程中是独立的两个执行过程,MCU根据boot程序判断是否需要
执行固件更新操作,而在进行固件更新的具体过程中,则需要使用下载过程中获得的固件
代码方能完成固件更新操作。

采用本发明实施例提出的固件更新方法,不需要提前在编程器的电路板上增加编
程接口等硬件电路,只需MCU本身支持IAP功能即可。且在实际应用中,采用本方法可直接由
客户自己进行更新编程器的固件程序,不仅减少对原始固件程序开发者的依赖,同时也提
高了固件更新的效率。

应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此
项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡
根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

一种通用编程器固件的更新方法.pdf_第1页
第1页 / 共7页
一种通用编程器固件的更新方法.pdf_第2页
第2页 / 共7页
一种通用编程器固件的更新方法.pdf_第3页
第3页 / 共7页
点击查看更多>>
资源描述

《一种通用编程器固件的更新方法.pdf》由会员分享,可在线阅读,更多相关《一种通用编程器固件的更新方法.pdf(7页珍藏版)》请在专利查询网上搜索。

本发明公开了一种通用编程器固件的更新方法,包括:下载固件代码并设置更新标记位,将其一同保存至非易失性存储器中;MCU重新上电后,boot程序首先从非易失性存储器中读取更新标记位,根据所述更新标记位判断是否需要更新固件程序;若需要更新固件程序,boot程序再从所述非易失性存储器中读取固件代码,并将所述固件代码写入MCU的程序存储器中,同时修改所述更新标记位的值并保存;若不需要更新固件程序,则直接执行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1