CN103077056B - 使用少量ROM资源的Bootlorder实现方法 - Google Patents
使用少量ROM资源的Bootlorder实现方法 Download PDFInfo
- 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
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
技术领域
本发明涉及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管理程序的中断向量。
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)
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)
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)
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 |
-
2012
- 2012-12-31 CN CN201210592732.5A patent/CN103077056B/zh active Active
Patent Citations (3)
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. |