CN103077056B - 使用少量ROM资源的Bootlorder实现方法 - Google Patents

使用少量ROM资源的Bootlorder实现方法 Download PDF

Info

Publication number
CN103077056B
CN103077056B CN201210592732.5A CN201210592732A CN103077056B CN 103077056 B CN103077056 B CN 103077056B CN 201210592732 A CN201210592732 A CN 201210592732A CN 103077056 B CN103077056 B CN 103077056B
Authority
CN
China
Prior art keywords
flash
interrupt vector
user application
sig
boot
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.)
Active
Application number
CN201210592732.5A
Other languages
English (en)
Other versions
CN103077056A (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.)
Clp Taiji Group Co Ltd
CETC 15 Research Institute
Original Assignee
CETC 15 Research Institute
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 CETC 15 Research Institute filed Critical CETC 15 Research Institute
Priority to CN201210592732.5A priority Critical patent/CN103077056B/zh
Publication of CN103077056A publication Critical patent/CN103077056A/zh
Application granted granted Critical
Publication of CN103077056B publication Critical patent/CN103077056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种使用少量ROM资源的Bootlorder实现方法,本发明为了减少ROM资源使用量,并非将所有资源在流片时固化到Boot?ROM中,而是将Bootlorder程序分成了三个部分,分别为引导程序代码、Flash管理程序和用户应用程序;其中只有引导程序代码固化到Boot?ROM中,保证Boot?ROM内仅保留最少量的必要固件资源;而其他大量内容,存放在Flash可擦写存储单元内。这样Boot?ROM中只存放最基本最简单的测试和下载程序。在需要进行程序修改时,不需要重新流片,大大降低了风险和成本。

Description

使用少量ROM资源的Bootlorder实现方法
技术领域
本发明涉及Bootlorder技术领域,尤其涉及一种使用少量ROM资源的Bootlorder实现方法。
背景技术
智能卡芯片通常采用嵌入式操作系统。
在嵌入式操作系统中,Bootlorder是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射、从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
BootROM是管理设备启动序列的只读存储器,每次上电复位都是从BootROM进行启动和跳转,物理上使用1KB掩膜ROM实现。BootROM对于用户应用程序是不可见的。一般的智能卡芯片中BootROM中必须要存放所有与底层相关的程序,以及COS下载程序。
这样设计的缺陷是ROM中的程序是在流片过程中通过掩膜方式固化在芯片里面。如果:1.掩膜过程中万一出现故障,导致ROM中的程序不能正常工作,则整批晶圆报废。2.如果发现程序中有BUG,或者程序需要升级,则需要在流片阶段重新定制掩膜版,费用昂贵。
本次设计中的方案是BootROM仅保留最少量测试固件资源;其他大量内容,放在非易失性存储管理器(NVMManager,存放在Flash可擦写存储单元内)里实现。这样bootrom中只存放最基本最简单的测试和下载程序。大大降低了风险和成本。
发明内容
有鉴于此,本发明提供了一种使用少量ROM资源的Bootlorder实现方法,采用Flash+ROM的方案,在ROM中固化少量必要的引导程序,在需要进行程序修改时,不需要重新定制掩膜版,节省费用。
为了解决上述技术问题,本发明是这样实现的:
一种使用少量ROM资源的Bootlorder实现方法,该方法采用BootROM和Flash共同构成Boot存储区;其中,Flash内部具有Flash系统区和数据区,数据区又被细分为中断向量存放区、Flash管理程序区和用户应用程序区;
该方法包括如下步骤:
步骤1、在流片阶段,通过掩膜的方式,向BootROM中加载引导程序代码;
步骤2、设备中的CPU上电后,首先执行BootROM中的引导程序;首次执行引导程序时,进入管理员模式,以后再次进入引导程序时,均进入用户模式;
在管理员模式下,向Flash系统区加载系统参数表,向Flash管理程序区加载Flash管理程序,向中断向量存放区加载Flash管理程序的中断向量;
在用户模式下,跳转到BootROM的指定地址Add1,执行该地址Add1上的语句,从而引导CPU的取值地址切换到Flash的预留地址处,从而实现BootROM到Flash的跳转,接着执行Flash预留地址处存储的语句,实现将执行地址跳转到Flash管理程序区,执行步骤3;
其中,预留地址设置在中断向量存放区内为中断向量预留的存储空间之后,预留地址的起始为Add1;
步骤3、进入Flash管理程序后,首先判断NVM_SIG标识是否为1,如果是,则执行步骤4,否则,执行步骤5;NVM_SIG标识保存在Flash系统区的系统参数表中,初始值为1;
步骤4、向用户应用程序区加载用户应用程序,将用户应用程序的中断向量暂存,当收到外部启用当前用户应用程序的指令时,将暂存的用户应用程序的中断向量加载到中断向量存放区中,然后将NVM_SIG标识置为0,下电;
步骤5、判断是否需要更新用户应用程序,如果不需要则转入用户应用程序区执行用户应用程序;如果需要更新,则将Flash管理程序的中断向量加载到中断向量存放区,然后将NVM_SIG标识置为1,下电。
优选地,在步骤2中,所述首次执行引导程序时,进入管理员模式,以后再次进入引导程序时,均进入用户模式的实现方式为:
设置TEST_SIG标志,该TEST_SIG标志保存在Flash系统区的系统参数表中,初始值为1;首次执行引导程序时判断TEST_SIG=1,则进入管理员模式,下载Flash管理程序后将TEST_SIG置为0;判断TEST_SIG=0时,则进入用户模式。
当判定TEST_SIG标志为1后,等待命令;如果接收到外部的测试代码,则运行测试代码,并返回运行结果,并继续等待命令;如果接收到外部的加载指令,则执行所述向Flash系统区加载系统参数表、Flash管理程序的中断向量和用户应用程序的中断向量,向Flash管理程序区加载Flash管理程序。
优选地,步骤4在向用户应用程序区加载用户应用程序之前,先进行用户应用程序区的读写测试,确定该用户应用程序区没有问题,再加载用户应用程序。
优选地,在步骤2中,向Flash系统区加载系统参数表时,进一步将Flash管理程序的中断向量备份在Flash系统区中;当需要向中断向量存放区加载Flash管理程序的中断向量时,从Flash系统区中获取Flash管理程序的中断向量。
有益效果:
采用Flash+ROM的方案,在ROM中固化少量必要的引导程序,在需要进行程序修改时,不需要重新定制掩膜版,节省费用。
附图说明
图1为BootROM和Flash共同构成Boot存储区的示意图。
图2为本发明引导程序的具体流程图。
图3为本发明Flash管理程序的流程图。
具体实施方式
本发明为了减少ROM资源使用量,并非将所有资源在流片时固化到BootROM中,而是将Bootlorder程序分成了三个部分,分别为引导程序代码、Flash管理程序和用户应用程序;其中只有引导程序代码固化到BootROM中,保证BootROM内仅保留最少量的必要固件资源;而其他大量内容,存放在Flash可擦写存储单元内。这样BootROM中只存放最基本最简单的程序。在需要进行程序修改时,不需要重新流片,大大降低了风险和成本。
下面结合附图并举实施例,对本发明进行详细描述。
如图1所示,本发明采用BootROM和Flash共同构成设备的Boot存储区。其中,Flash内部具有Flash系统区(又称信息区)和数据区,这两个区域是分开编址的。本发明将数据区细分为中断向量存放区、Flash管理程序区和用户应用程序区。
该方法包括如下步骤:
步骤1、在流片阶段,通过掩膜的方式,向设备的BootROM中加载引导程序代码;
步骤2、设备中的CPU上电后,首先执行BootROM中的引导程序;首次执行引导程序时,进入管理员模式,以后再次进入引导程序时,均进入用户模式;
在管理员模式下,向Flash系统区加载系统参数表,向Flash管理程序区加载Flash管理程序,向中断向量存放区加载Flash管理程序的中断向量;
在用户模式下,跳转到BootROM的指定地址Add1,执行该地址Add1上的语句,从而引导CPU的取值地址切换到Flash的预留地址处,实现BootROM到Flash的跳转,接着执行Flash预留地址处存储的语句,实现将执行地址跳转到Flash管理程序区,执行步骤3。其中,预留地址设置在中断向量存放区内为中断向量预留的存储空间之后,预留地址的起始为Add1。
图2为本发明引导程序的具体流程图。
(1)、根据TEST_SIG标志位判断BootROM工作模式。
TEST_SIG标志位标识了BootROM处于管理员模式还是用户模式。该标志位在Flash系统区的系统参数表里,初始值为1,TEST_SIG标志位是受保护的,因此仅能在出厂前修改。BootROM第一次上电时,可以读到TEST_SIG=1,表示其默认状态是管理员模式,下载Flash管理程序完成后设置为用户模式(TEST_SIG=0),出厂之后无法修改,此后每次上电时,读到TEST_SIG=0,进入用户模式。
(2)、在管理员模式下,首先建立与外部的无线通信连接,例如可以按照ISO14443-3协议中表述的命令序列建立无线通信连接。通信连接建立之后,进入ISO14443-4协议中约定的数据链路层通信。该协议采用分组的方式在PCD和PICC之间传递APDU指令和反馈应答(Feedback)。
无线通信连接建立完成后,等待外部命令。如果外部发来测试代码,则运行测试代码,若测试通过,则反馈成功信息;若测试不通过,则反馈出错信息。如果外部发来加载指令,则向Flash加载数据,加载的内容包括:系统参数表(加载到Flash系统区)、Flash管理程序(加载到Flash管理程序区)、Flash管理程序的中断向量(加载到中断向量存放区)等。加载成功之后,修改TEST_SIG标志位=0,使BootROM下次启动进入用户模式。最后,向外部反馈测试完成结果,外部就认为该产品的操作已完成,转为操作下一产品。
(3)、在用户模式下执行如下操作:
①首先加载校准字(Trimmingwords):从位于Flash系统区的系统参数表里将校准字读入相应寄存器中,用于改善诸如射频接口、电源等模拟单元的性能。
②跳转到Flash:修改相应SFR可以使CPU的取指地址由BootROM切换到Flash中,因此这里首先将CPU取值地址跳转到BootROM的0x006B地址,在这个地址上存放着修改MMUSFR的语句。语句执行之后,CPU的取值地址切换到Flash的0x006B之后、0x0072之前的某个地址上,从而实现BootROM到Flash的跳转。接着执行Flash跳转地址上存储的语句,实现将执行地址跳转到Flash管理程序区。
Flash的0x006B-0x0072处于中断向量存放区,但是该段地址为保留地址,专用于放置跳转到管理程序区的语句,不用于中断向量。这样,就可以引导CPU取值地址跳转到特定地址里去执行管理程序。
其中0x006B-0x0072是根据中断向量存放区的大小和所要存放的中断向量大小确定的,保留地址不能打断中断向量,因此可以放在中断向量存放区内为中断向量预留的存储空间之后。
为了实现跳转,在BootROM的0x006B处存放了跳转语句,由于CPU执行语句时是按照地址逐条执行的,通过SFR的修改,可以实现存储器跳转,但是地址不会跳动,BootROM存放跳转语句的位置需要与Flash上的保留地址向对应,例如本实施例中,保留地址为0x006B-0x0072,则放跳转语句的地址就为0x006B,否则会出现跳转和执行上的错误。
步骤3、进入Flash管理程序后,首先判断的是从Flash管理执行,还是从用户应用程序执行。
参见图3,通过判断NVM_SIG标志位可以决定接下来跳转地址的指向,NVM_SIG标识为1,则执行步骤4,否则,执行步骤5。这个标志位在Flash系统区的系统参数表里,在首次下载用户应用程序之前,NVM_SIG=1,在每次用户应用程序下载完成之后,修改NVM_SIG=0,如果希望更新用户应用程序,则将修改NVM_SIG=1,以便下一次上电时转到执行步骤4去再次下载用户应用程序。
步骤4、从外部接收用户应用程序及其中断向量,向用户应用程序区加载用户应用程序,将用户应用程序的中断向量暂存在XRAM中,当收到外部启用当前用户应用程序的指令时,将暂存的用户应用程序的中断向量加载到中断向量存放区中,然后将NVM_SIG标识置为0,下电。
其中,在向用户应用程序区加载用户应用程序之前,还可以先进行Flash用户应用程序区的读写测试,确定该区域没有问题,再加载用户应用程序。
步骤5、判断是否需要更新用户应用程序,如果不需要则转入用户应用程序区执行用户应用程序;如果需要更新,则将Flash管理程序的中断向量加载到Flash中断向量存放区,然后将NVM_SIG标识置为1,下电。这样,在下一次上电时,会转入步骤4重新下载用户应用程序。Flash管理程序和用户程序使用了相同的中断源(例如RFIF和Timer),但有不同的中断服务子程序及其入口地址,因此需要针对Flash管理程序和用户程序使用不同的中断向量表。
在本步骤中,将Flash管理程序的中断向量加载到Flash中断向量存放区时,可以从外部重新获取Flash管理程序的中断向量,也可以从Flash系统区中获取备份的Flash管理程序的中断向量。这就需要在步骤2向Flash系统区加载系统参数表时,进一步将Flash管理程序的中断向量备份在Flash系统区中,从而可以快速从内部加载信息,提高处理速度。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种使用少量ROM资源的Bootlorder实现方法,其特征在于,设备采用BootROM和Flash共同构成Boot存储区;其中,Flash内部具有Flash系统区和数据区,数据区又被细分为中断向量存放区、Flash管理程序区和用户应用程序区;
该方法包括如下步骤:
步骤1、在流片阶段,通过掩膜的方式,向BootROM中加载引导程序代码;
步骤2、设备中的CPU上电后,首先执行BootROM中的引导程序;首次执行引导程序时,进入管理员模式,以后再次进入引导程序时,均进入用户模式;
在管理员模式下,向Flash系统区加载系统参数表,向Flash管理程序区加载Flash管理程序,向中断向量存放区加载Flash管理程序的中断向量;
在用户模式下,跳转到BootROM的指定地址Add1,执行该地址Add1上的语句,从而引导CPU的取值地址切换到Flash的预留地址处,从而实现BootROM到Flash的跳转,接着执行Flash预留地址处存储的语句,实现将执行地址跳转到Flash管理程序区,执行步骤3;
其中,预留地址设置在中断向量存放区内为中断向量预留的存储空间之后,预留地址的起始为Add1;
步骤3、进入Flash管理程序后,首先判断NVM_SIG标识是否为1,如果是,则执行步骤4,否则,执行步骤5;NVM_SIG标识保存在Flash系统区的系统参数表中,初始值为1;
步骤4、向用户应用程序区加载用户应用程序,将用户应用程序的中断向量暂存,当收到外部启用当前用户应用程序的指令时,将暂存的用户应用程序的中断向量加载到中断向量存放区中,然后将NVM_SIG标识置为0,下电;
步骤5、判断是否需要更新用户应用程序,如果不需要则转入用户应用程序区执行用户应用程序;如果需要更新,则将Flash管理程序的中断向量加载到中断向量存放区,然后将NVM_SIG标识置为1,下电。
2.如权利要求1所述的方法,其特征在于,在步骤2中,所述首次执行引导程序时,进入管理员模式,以后再次进入引导程序时,均进入用户模式的实现方式为:
设置TEST_SIG标志,该TEST_SIG标志保存在Flash系统区的系统参数表中,初始值为1;首次执行引导程序时判断TEST_SIG=1,则进入管理员模式,下载Flash管理程序后将TEST_SIG置为0;判断TEST_SIG=0时,则进入用户模式。
3.如权利要求2所述的方法,其特征在于,当判定TEST_SIG标志为1后,等待命令;如果接收到外部的测试代码,则运行测试代码,并返回运行结果,并继续等待命令;如果接收到外部的加载指令,则执行所述向Flash系统区加载系统参数表、Flash管理程序的中断向量和用户应用程序的中断向量,向Flash管理程序区加载Flash管理程序。
4.如权利要求1所述的方法,其特征在于,步骤4在向用户应用程序区加载用户应用程序之前,先进行用户应用程序区的读写测试,确定该用户应用程序区没有问题,再加载用户应用程序。
5.如权利要求1所述的方法,其特征在于,在Flash中,中断向量存放区地址为0000H~0080H,中断向量存放区内的预留地址为006BH~0072H,Add1=006BH。
6.如权利要求1所述的方法,其特征在于,在步骤2中,向Flash系统区加载系统参数表时,进一步将Flash管理程序的中断向量备份在Flash系统区中;当需要向中断向量存放区加载Flash管理程序的中断向量时,从Flash系统区中获取Flash管理程序的中断向量。
CN201210592732.5A 2012-12-31 2012-12-31 使用少量ROM资源的Bootlorder实现方法 Active CN103077056B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210592732.5A CN103077056B (zh) 2012-12-31 2012-12-31 使用少量ROM资源的Bootlorder实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210592732.5A CN103077056B (zh) 2012-12-31 2012-12-31 使用少量ROM资源的Bootlorder实现方法

Publications (2)

Publication Number Publication Date
CN103077056A CN103077056A (zh) 2013-05-01
CN103077056B true CN103077056B (zh) 2015-12-23

Family

ID=48153593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210592732.5A Active CN103077056B (zh) 2012-12-31 2012-12-31 使用少量ROM资源的Bootlorder实现方法

Country Status (1)

Country Link
CN (1) CN103077056B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204896A (zh) * 2015-09-08 2015-12-30 江苏绿扬电子仪器集团有限公司 一种数字存储示波器的BootLoader设计方法
CN108089886A (zh) * 2016-11-19 2018-05-29 北京同方微电子有限公司 一种智能卡芯片下载程序的实现方法
CN107153613B (zh) * 2017-05-11 2019-09-24 山东鲁能智能技术有限公司 基于HCS12单片机的BootLoader程序调试方法及系统
CN109324838B (zh) * 2018-08-31 2022-05-10 深圳市元征科技股份有限公司 单片机程序的执行方法、执行装置及终端
CN109284135B (zh) * 2018-09-07 2022-02-01 深圳市航顺芯片技术研发有限公司 一种简捷调用微控制器内部启动程序的方法
CN109979520A (zh) * 2019-03-26 2019-07-05 深圳忆联信息系统有限公司 芯片功能自动化测试方法、装置和计算机设备
CN114266083A (zh) * 2021-12-24 2022-04-01 杭州万高科技股份有限公司 一种芯片内密钥的安全存储方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256494A (zh) * 2008-03-07 2008-09-03 中兴通讯股份有限公司 一种嵌入式系统从不同地址引导系统的方法
CN101976212A (zh) * 2010-10-27 2011-02-16 西安空间无线电技术研究所 一种基于少量代码重加载的dsp抗单粒子纠错方法
CN102279763A (zh) * 2011-08-30 2011-12-14 福州瑞芯微电子有限公司 一种bootrom的优化方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100131694A1 (en) * 2008-11-26 2010-05-27 Kelly Scott G Secure Boot ROM Emulation
US8799555B2 (en) * 2011-04-14 2014-08-05 Apple Inc. Boot data storage schemes for electronic devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256494A (zh) * 2008-03-07 2008-09-03 中兴通讯股份有限公司 一种嵌入式系统从不同地址引导系统的方法
CN101976212A (zh) * 2010-10-27 2011-02-16 西安空间无线电技术研究所 一种基于少量代码重加载的dsp抗单粒子纠错方法
CN102279763A (zh) * 2011-08-30 2011-12-14 福州瑞芯微电子有限公司 一种bootrom的优化方法

Also Published As

Publication number Publication date
CN103077056A (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
CN103077056B (zh) 使用少量ROM资源的Bootlorder实现方法
CN106020861B (zh) 一种智能手表的fota升级方法及系统
WO2021115477A1 (zh) 程序升级方法、装置、电子设备及存储介质
US8423991B2 (en) Embedded network device and firmware upgrading method
US7991988B2 (en) Communication device and firmware update method thereof
CN106095480B (zh) 一种光模块固件升级的方法及装置
CN100454258C (zh) 嵌入式系统加载程序与应用程序一体化更新方法
US8484631B2 (en) Supporting hardware configuration changes in a UEFI firmware component
CN104572206A (zh) 应用程序自更新和备份恢复的方法
CN107704285B (zh) 现场可编程门阵列多版本配置芯片、系统和方法
CN105260205A (zh) 一种嵌入式板上实现双操作系统启动的方法
CN103853586A (zh) 一种在uefi层实现无线网卡驱动的方法
CN105487885A (zh) 手游热更新方法
CN106371863A (zh) 一种嵌入式多操作系统的引导程序升级方法
CN110633091A (zh) 一种电子模块及其软件无线升级方法
CN104391714A (zh) 一种车辆的软件更新方法和装置
CN107526574A (zh) 系统启动模式的控制方法及装置
US20090013124A1 (en) Rom code patch method
US20020095619A1 (en) Fault tolerant/redundant boot ROM reprogramming
CN113741944A (zh) 一种具备升级功能的机器程序系统及升级方法与应用
CN108897576A (zh) 一种基于arm芯片的快速启动boot的方法
CN103853557A (zh) 一种用Uboot网络启动WinCE的方法
CN102033767A (zh) 一种单板及单板在线升级的方法
CN104423997A (zh) 一种远程基站版本安装方法及装置
US9495146B2 (en) Host and method of upgrading connection manager of dongles

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220624

Address after: 100083 No. 211 middle Fourth Ring Road, Haidian District, Beijing

Patentee after: NO.15 INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp.

Patentee after: CLP Taiji (Group) Co., Ltd

Address before: 100083 No. 211 middle Fourth Ring Road, Haidian District, Beijing

Patentee before: NO.15 INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp.