CN110347417A - 固定向量表mcu的iap程序升级方法 - Google Patents

固定向量表mcu的iap程序升级方法 Download PDF

Info

Publication number
CN110347417A
CN110347417A CN201910626523.XA CN201910626523A CN110347417A CN 110347417 A CN110347417 A CN 110347417A CN 201910626523 A CN201910626523 A CN 201910626523A CN 110347417 A CN110347417 A CN 110347417A
Authority
CN
China
Prior art keywords
user program
program
vector table
iap
user
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
Application number
CN201910626523.XA
Other languages
English (en)
Other versions
CN110347417B (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.)
Nanjing Qinheng Microelectronics Co Ltd
Original Assignee
Nanjing Qinheng Microelectronics Co Ltd
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 Nanjing Qinheng Microelectronics Co Ltd filed Critical Nanjing Qinheng Microelectronics Co Ltd
Priority to CN201910626523.XA priority Critical patent/CN110347417B/zh
Publication of CN110347417A publication Critical patent/CN110347417A/zh
Application granted granted Critical
Publication of CN110347417B publication Critical patent/CN110347417B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种固定向量表MCU的IAP程序升级方法,在升级过程中,将用户程序和IAP程序分在不同的擦写块内;在用户程序中断时,通过间接跳转来实现。本发明IAP程序和用户程序完全分隔开,无需共用一个Flash擦写块,能够从根本上解决升级变砖的情况。

Description

固定向量表MCU的IAP程序升级方法
技术领域
本发明涉及一种固定向量表MCU的IAP程序升级方法,属于IAP程序升级技术领域。
背景技术
IAP技术指的是在应用中编程,相比于传统的ISP系统编程,该技术无需硬件编程器,操作更简单、灵活,比如IAP升级程序可以支持串口、USB、蓝牙、网络等多种方式实现,其原理就是借助Flash内部的一段IAP升级程序实现的。
针对于内核中断向量表可以偏移的MCU,实现IAP程序相对简单,并且基本不存在风险。但是如果对于中断向量表不可偏移的MCU,IAP升级程序就需要谨慎设计,否则会存在变砖风险。以C51单片机为例,传统的IAP程序设计一般会把IAP跳转指令放在0x0000地址,紧接着的是用户程序中断向量表存放位置,在IAP升级用户程序时,如果在擦除0x0000所在块时异常断电,则单片机再次重新上电将会变砖。
那么如何解决固定向量表的IAP程序升级变砖问题,就是当前亟待解决的问题。
发明内容
为了解决上述问题,本发明提供一种固定向量表MCU的IAP程序升级方法,IAP程序和用户程序完全分隔开,无需共用一个Flash擦写块,能够从根本上解决升级变砖的情况。
解决上述问题的技术方案为:一种固定向量表MCU的IAP程序升级方法,在升级过程中,将用户程序和IAP程序分在不同的擦写块内;
在用户程序中断时,通过间接跳转来实现。
进一步地,包括如下具体步骤:S1、判断是否需要升级,若需要升级转S2,若不需要升级转S3;S2、用户程序入口指令以及用户程序向量表存放在指定的用户区开始处;用户程序链接地址开始的程序依次存放在对应存储地址;S3、跳转用户程序入口,执行用户程序。
进一步地,S2中,接收到0x0000开始的代码以及完整的用户程序向量表区长度内容存放在内核向量表之后,用户程序链接地址之前,并且从第一个擦写块之后存放。
进一步地,S2中,把用户程序链接到所述用户程序向量表之后;所述用户程序存储地址与链接地址相同。
进一步地,S3的具体步骤为:当不需要升级时,执行用户程序并等待中断,若发生中断,则MCU自动至内核向量表取指令,间接跳转用户程序向量表区,最终跳转至中断服务程序,然后中断返回,继续执行用户主程序。
本发明的优点在于:把用户程序链接地址往后偏移以保证用户程序和IAP程序严格分在不同的flash擦写块内,用户程序的中断向量表同时也搬移到用户程序空间的固定位置,内核中断向量表处存放固定的跳转指令,用来跳转到用户程序空间的中断向量表处,完成间接跳转。从而杜绝了升级变砖的情况。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明程序结构示意图;
图2是本发明一个较佳实施例的流程图。
具体实施方式
为了加深对本发明的理解,下面将结合实施例和附图对本发明作进一步详述,该实施例仅用于解释本发明,并不构成对本发明保护范围的限定。
如图1所示,一种固定向量表MCU的IAP程序升级方法,在升级过程中,将用户程序和IAP程序分在不同的擦写块内;
在用户程序中断时,通过间接跳转来实现。
包括如下具体步骤:S1、判断是否需要升级,若需要升级转S2,若不需要升级转S3;S2、用户程序入口指令以及用户程序向量表存放在指定的用户区开始处;用户程序链接地址开始的程序依次存放在对应存储地址;S3、跳转用户程序入口,执行用户程序。
S2中,接收到0x0000开始的代码以及完整的用户程序向量表区长度内容存放在内核向量表之后,用户程序链接地址之前,并且从第一个擦写块之后存放。
S2中,把用户程序链接到所述用户程序向量表之后;所述用户程序存储地址与链接地址相同。
S3的具体步骤为:当不需要升级时,执行用户程序并等待中断,若发生中断,则MCU自动至内核向量表取指令,间接跳转用户程序向量表区,最终跳转至中断服务程序,然后中断返回,继续执行用户主程序。
如图2所示,实施例1:
IAP升级程序的构造方法:
IAP升级程序禁止使用中断服务函数,可以使用中断查询的方式实现升级接口的功能。因为中断向量表位置只有一个,是需要为用户程序服务的,IAP程序最终只需要保证稳定可靠即可。
由链接器把IAP程序链接到Flash的最后,这个地址记做D。目的是给用户程序留出整块的空间,最大化利用Flash资源。IAP主体程序从地址D开始依次存放。
控制器运行的第一条指令地址0x0000处存放IAP程序的main函数入口跳转指令。目的是直接跳转IAP程序,由IAP程序决定当前是否需要升级用户程序。
内核中断向量表处,把这个地址记做A,在所有中断的内核向量表跳转地址存放一个相对当前地址添加固定偏移量的跳转指令。用户程序真实向量表所处位置设为A1,A1和A的差值就是上述固定偏移量。目的是当用户程序发生中断后,由内核自动到内核中断向量表处取指,并间接地跳转到用户程序向量表处。固定的偏移量是确定的,所以对应的跳转指令也是确定的,所以可以随IAP程序一同烧录。
用户程序的构造方法:
用户程序可以随意使用MCU所有中断服务。
由链接器把用户程序链接到内核中断向量表地址之后,并且保证不在第一个Flash擦写块内,因为IAP跳转地址处于第一个擦写块内,这个目的是把用户程序和IAP程序严格分开,避免擦写用户程序的同时把IAP程序也一起擦掉的情况。
用户程序开始的地址记做B。除此之外,还需要在这个地址上加一个向量表总长度作为最终用户程序链接的地址,这个地址记做C。用户程序的主体部分就是从C地址开始依次存放。
B地址处存放用户程序的main函数入口跳转指令。方便IAP程序准确找到用户程序入口,进行跳转。
B地址和C地址之间的部分是存放用户程序实际中断向量入口跳转地址的,起始地址为A1。也就是上述“IAP升级程序的构造方法”中提到的用户程序向量表处。程序执行流程分析:
芯片上电执行第一条指令后即可跳转到IAP程序的MAIN函数,由IAP程序分析是否符合升级条件:(1)如果不符合则直接跳转到B地址处,进而把控制权交给用户程序。用户程序执行过程中,如果发生中断,则由内核跳转到A地址内核向量表区取指令,而A地址区域存放的并不是真正的用户中断服务程序入口,而是一个跳转到A1用户程序向量表处的跳转指令。再次由A1向量表区的中断跳转指令跳转到中断服务程序执行。(2)如果符合升级条件,则准备通过相关接口接收用户程序,收到从0x0000开始的代码以及完整的向量表长度内容从B、A1地址依次存放。收到从用户程序链接地址开始的用户程序代码从C地址依次存放。烧录完成后,复位相关寄存器后,直接跳转用户程序入口B即可把控制权转交用户程序。
综上,本发明把用户程序链接地址往后偏移以保证用户程序和IAP程序严格分在不同的flash擦写块内,用户程序的中断向量表同时也搬移到用户程序空间的固定位置,内核中断向量表处存放固定的跳转指令,用来跳转到用户程序空间的中断向量表处,完成间接跳转。从而杜绝了升级变砖的情况。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种固定向量表MCU的IAP程序升级方法,其特征在于,在升级过程中,将用户程序和IAP程序分在不同的擦写块内;
在用户程序中断时,通过间接跳转来实现。
2.根据权利要求1所述的方法,其特征在于,包括如下具体步骤:S1、判断是否需要升级,若需要升级转S2,若不需要升级转S3;S2、用户程序入口指令以及用户程序向量表存放在指定的用户区开始处;用户程序链接地址开始的程序依次存放在对应存储地址;S3、跳转用户程序入口,执行用户程序。
3.根据权利要求2所述的方法,其特征在于,S2中,接收到0x0000开始的代码以及完整的用户程序向量表区长度内容存放在内核向量表之后,用户程序链接地址之前,并且从第一个擦写块之后存放。
4.根据权利要求2所述的方法,其特征在于,S2中,把用户程序链接到所述用户程序向量表之后;所述用户程序存储地址与链接地址相同。
5.根据权利要求1所述的方法,其特征在于,S3的具体步骤为:当不需要升级时,执行用户程序并等待中断,若发生中断,则MCU自动至内核向量表取指令,间接跳转用户程序向量表区,最终跳转至中断服务程序,然后中断返回,继续执行用户主程序。
CN201910626523.XA 2019-07-11 2019-07-11 固定向量表mcu的iap程序升级方法 Active CN110347417B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910626523.XA CN110347417B (zh) 2019-07-11 2019-07-11 固定向量表mcu的iap程序升级方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910626523.XA CN110347417B (zh) 2019-07-11 2019-07-11 固定向量表mcu的iap程序升级方法

Publications (2)

Publication Number Publication Date
CN110347417A true CN110347417A (zh) 2019-10-18
CN110347417B CN110347417B (zh) 2023-08-29

Family

ID=68175667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910626523.XA Active CN110347417B (zh) 2019-07-11 2019-07-11 固定向量表mcu的iap程序升级方法

Country Status (1)

Country Link
CN (1) CN110347417B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113311931A (zh) * 2021-06-08 2021-08-27 合肥磐芯电子有限公司 一种方便iap的双复位向量8位mcu架构及其方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
JP2001175606A (ja) * 1999-12-20 2001-06-29 Sony Corp データ処理装置、データ処理機器およびその方法
US20080148252A1 (en) * 2006-12-13 2008-06-19 Vimicro Corporation Electronic Device, System and Method For Updating Software Online
WO2012100535A1 (zh) * 2011-01-30 2012-08-02 华为技术有限公司 超级内核组件的升级方法和计算机系统
CN105204899A (zh) * 2015-09-17 2015-12-30 浪潮软件集团有限公司 一种基于网络的单片机固件升级方法的实现
US20160077765A1 (en) * 2014-09-16 2016-03-17 Empire Technology Development Llc Data storage based on rank modulation in single-level flash memory
CN105487890A (zh) * 2015-11-25 2016-04-13 天津航空机电有限公司 一种基于c51系列单片机内核的固件下载方法
CN106874054A (zh) * 2017-03-06 2017-06-20 四川天邑康和通信股份有限公司 一种直放站内模块程序在线升级方法与系统
CN109240730A (zh) * 2018-08-29 2019-01-18 武汉光迅科技股份有限公司 一种单片机在线升级方法和系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
JP2001175606A (ja) * 1999-12-20 2001-06-29 Sony Corp データ処理装置、データ処理機器およびその方法
US20080148252A1 (en) * 2006-12-13 2008-06-19 Vimicro Corporation Electronic Device, System and Method For Updating Software Online
WO2012100535A1 (zh) * 2011-01-30 2012-08-02 华为技术有限公司 超级内核组件的升级方法和计算机系统
US20160077765A1 (en) * 2014-09-16 2016-03-17 Empire Technology Development Llc Data storage based on rank modulation in single-level flash memory
CN105204899A (zh) * 2015-09-17 2015-12-30 浪潮软件集团有限公司 一种基于网络的单片机固件升级方法的实现
CN105487890A (zh) * 2015-11-25 2016-04-13 天津航空机电有限公司 一种基于c51系列单片机内核的固件下载方法
CN106874054A (zh) * 2017-03-06 2017-06-20 四川天邑康和通信股份有限公司 一种直放站内模块程序在线升级方法与系统
CN109240730A (zh) * 2018-08-29 2019-01-18 武汉光迅科技股份有限公司 一种单片机在线升级方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J.D. BOGLE ETAL.: "US coast guard HH-65A helicopter avionics block upgrade", 《 PROCEEDINGS IEEE/AIAA 11TH DIGITAL AVIONICS SYSTEMS CONFERENCE》 *
杨光海等: "远程升级控制系统嵌入式设备程序的设计方法", 《工业控制计算机》, vol. 29, no. 6 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113311931A (zh) * 2021-06-08 2021-08-27 合肥磐芯电子有限公司 一种方便iap的双复位向量8位mcu架构及其方法

Also Published As

Publication number Publication date
CN110347417B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
US9274789B2 (en) In-application upgrade method for optical module firmware not breaking service
CN105138382B (zh) 一种Android系统升级的方法及终端
CN111273937B (zh) 一种基于stm32f746处理器的远程升级方法
CN102945173B (zh) 用户程序在线升级系统和升级方法
CN104102518B (zh) 一种双cpu系统及其程序升级方法
CN104581397B (zh) 安卓机顶盒的系统升级方法及装置
US9146713B2 (en) Tool composition for supporting openCL application software development for embedded system and method thereof
CN109189434A (zh) 一种电能表的在线升级方法
CN105867977B (zh) DSP用户程序升级及Flash下载方法
CN104407886B (zh) 一种引导与目标分离的嵌入式软件固化、加载方法
CN102065118A (zh) 一种网络设备升级方法及装置
CN105912340A (zh) 一种主设备、遥控器及对其空中升级的方法
CN102831022A (zh) 修改系统配置的方法和装置
CN102890638B (zh) 一种机顶盒升级方法
CN110187909B (zh) 一种基于安卓系统的单片机固件升级方法
CN102646043A (zh) 移动终端软件升级方法、升级装置及移动终端
CN110347417A (zh) 固定向量表mcu的iap程序升级方法
CN105022646A (zh) 一种数据无损的远程代码更新方法和装置
CN113110860A (zh) 一种嵌入式终端远程软件更新方法
WO2020107436A1 (zh) 程序的升级方法和嵌入式设备
CN103324716B (zh) 一种基于安卓系统的应用程序数据库更新方法
CN109165037A (zh) 一种基于串口处理器的程序在线更新方法及系统
US20160239408A1 (en) Profiling system for computing devices
CN109240701A (zh) 一种面向谓词执行高性能dsp的指令依赖关系分析方法
CN111857785B (zh) 一种mcu的启动方法、装置及终端设备

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