System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() MCU双BootROM程序启动方法技术_技高网

MCU双BootROM程序启动方法技术

技术编号:40564428 阅读:6 留言:0更新日期:2024-03-05 19:28
本发明专利技术属于半导体技术领域,尤其涉及MCU双BootROM程序启动方法,该双BootROM程序包括两个启动程序BootROM1和BootROM2,两个启动程序BootROM1和BootROM2分别存储于ROM存储区以及内部flash存储区,且两个启动程序可独立完成芯片启动工作,两个启动程序并行存在并均为一级引导程序,芯片启动时根据外部pin或者非易失性存储器值,选择其中一个BootROM程序进行芯片启动流程,用户可通过ROM区的BootROM1程序来更新内部flash区BootROM2程序。与现有技术相比,解决了单ROM区启动程序出现缺陷时,芯片厂商在设计阶段无法对功能样片进行正常功能验证问题,避免了芯片报废的风险;既解决了原有BootROM的软件缺陷问题,同时也不会因此而增加芯片的启动时间,而ROM区和内部flash存储BootROM区都是对用户不可见的,也不会带来安全隐患。

【技术实现步骤摘要】

本专利技术涉及半导体,更具体地说,它涉及一种mcu双bootrom程序启动方法。


技术介绍

1、mcu(microcontroller unit ,微控制器,以下简称芯片) bootrom启动引导程序是mcu上电启动时最先运行的一段程序,该程序主要作用是在用户image(用户应用程序)运行前进行相关软硬件的初始化工作,为用户程序运行创建合适运行环境,最终加载引导用户程序运行,所需的软硬件环境配置,包含时钟、外设(uart、wdt、timer、lpspi、flexspi、ecc)、内存(ram、dtcm、itcm)、中央处理器(cpu)等初始化、栈和堆内存分配、中断向量表获取、用户程序搬移、用户程序更新和参数配置以及cpu跳转到用户程序执行用户程序等。

2、mcu bootrom程序是由mcu芯片厂商设计完成的,该程序在芯片销售到客户前已经固化到芯片内部,内容对用户不可见,用户无法删除和修改该引导程序,程序主要存储在2个存储区域——rom存储区(read only memory)以及内部flash(internal flash)存储区域;

3、如图1所示,若该程序存储在rom区,由于该存储区的烧写方式为otp(one timeprogram),即只能烧录一次,这意味着即使是芯片厂商一旦烧录也无法修改该程序,芯片生产出来后,如果发现该段代码有软件缺陷或者有开发阶段未能考虑到的功能缺失和不完善之处,则无法将其修复,这会影响芯片的性能,不利于后续的芯片销售,而往往采用弥补方式是在现有bootrom程序基础上,在用户程序里面再加一级bootrom引导程序,称为二级bootrom引导程序,在二级引导程序里修正原本引导程序的不足和缺陷,用户程序运行前先由原本固化的bootrom引导程序引导该二级bootrom引导程序运行,再由二级bootrom程序引导用户程序运行,这样就能解决原有bootrom程序的缺陷问题,但在用户程序里增加一级引导程序,且用户程序一般是放在flash区的,本身flash运行速度相比较rom区会慢很多,这样经过二级引导程序会大大增加芯片的启动时间,且一般有rom存储区的芯片,没有内置flash,都是外挂flash,bootrom程序里会包含相关加解密算法,加载用户程序的时候,做加解密动作,如果放在外部flash里,容易被黑客读取,算法将会暴露出来,这使得大多数用户无法接受这个方案。

4、如图2所示,如果将bootrom程序放在内部flash区域,和用户程序放在同一块存储区域上,按照地址分别存储在不同的存储空间,由于该flash区域是可多次烧写的,芯片厂商在设计bootrom时,可以多次修改(用户不可修改,该程序存储空间对用户是不见的,用户只能使用flash上面用户程序存储部分),当bootrom程序出现缺陷时,芯片厂商可以进行修改,但这种方式将bootrom程序和用户程序存储于同一片flash存储区域,用户程序在用户开发调试时会进行多次擦写,这有可能会导致处在同一片flash物理介质上的bootrom程序被误修改,且由于多次擦写及flash本身的设计特点,flash有被损坏的风险,一旦flash损坏,bootrom程序也无法运行,芯片无法正常启动;综上所示,该两种方案具有以下缺陷:

5、一、当bootrom程序存放在rom区时

6、a.芯片厂商设计芯片时,在量产之前,需要生产功能样片(主要用于芯片量产前的验证测试),一旦rom程序出现问题,将造成芯片部分功能无法验证或芯片无法正常使用,严重时样片有直接报废的风险。

7、b.芯片量产定型后,芯片设计厂商及用户均无法修改其内容,因此要求芯片厂商在设计芯片时需进行充分的debug调试,排除各种bug,并且要尽可能地把rom功能设计全面,因为一旦烧录,将无法修改,只能通过二级bootrom程序进行引导,这将增加芯片的启动时间,如果二级bootrom放在外部flash里面,也会存在代码保密问题。

8、c.即使bootrom程序没有任何缺陷和功能缺失,如果用户需要根据自己的方案,量身裁剪设计自己的专有bootrom程序,由于rom区无法修改,这是无法实现的,缺乏灵活性。

9、二、当bootrom程序存放在内部flash区时

10、d.存储在同一片flash上的用户程序会被多次擦写,有导致存储于flash里面的bootrom程序数据损坏的风险,导致芯片启动。

11、e.虽然内部flash可以多次擦写,但flash存储bootrom程序的区域,对用户是不可见的,用户不可以根据自己的设计,灵活的裁剪设计自己的最优bootrom程序,因为一旦裁剪更新失败,芯片将无法启动,不可使用,同样缺乏灵活性。


技术实现思路

1、针对现有技术存在的不足,本专利技术的目的在于提供一种解决上述技术问题的mcu双bootrom程序启动方法。

2、为实现上述目的,本专利技术提供了如下技术方案:

3、mcu双bootrom程序启动方法中,双bootrom程序包括两个启动程序bootrom1和bootrom2,两个启动程序bootrom1和bootrom2分别存储于rom存储区以及内部flash存储区,且两个启动程序可独立完成芯片启动工作,两个启动程序并行存在并均为一级引导程序,

4、芯片启动时根据外部pin或者非易失性存储器值,选择某一个bootrom程序进行芯片启动流程,两套程序对用户均不可见,同时用户可通过rom区的bootrom1程序来更新flash区bootrom2程序。

5、进一步的,芯片根据外部pin选择和存储器值,选择bootrom1或者bootrom2其中一个程序进行启动,默认选择rom区的程序启动,因为rom区运行速度快于内部flash,所以,优先选择rom区的bootrom1程序启动。当选择某一个bootrom程序启动失败时,会置位非易失性存储器值或切换外部pin,然后复位芯片,芯片重新启动读取pin选择或存储器值,选择另外一个bootrom程序来启动芯片,增加了冗余设计,确保芯片启动成功。

6、进一步的,bootrom1和bootrom2的程序可以相同也可以不同,在芯片设计阶段,芯片厂商根据测试的项目选择bootrom1或bootrom2启动,bootrom1和bootrom2设计成不同的模式及不同的功能,芯片启动动处于不同的场景,这样便于完成不同的验证和测试,增加了bootrom程序的灵活性,用户在开发阶段也可以选择不同的模式,快速切换到不同的应用场景,传统的方式是通过读取外部拨码开关来选择,需要反复切换拨码开关的状态。

7、进一步的,启动程序默认从rom区的bootrom1启动,芯片厂商和用户可以通过rom区bootrom1程序,对flash区的bootrom2程序进行更新,这可以解决当rom区的bootrom1程序固化后,程序出现debug和缺陷可以更新flash区bootrom2程序,然后选本文档来自技高网...

【技术保护点】

1.MCU双BootROM程序启动方法,其特征在于,所述双BootROM程序包括两个启动程序BootROM1和BootROM2,两个启动程序BootROM1和BootROM2分别存储于ROM存储区以及内部flash存储区,且两个启动程序可独立完成芯片启动工作,两个启动程序并行存在并均为一级引导程序,

2.根据权利要求1所述的MCU双BootROM程序启动方法,其特征在于,所述芯片可根据外部pin选择和存储器值,选择BootROM1或者BootROM2其中一个程序进行启动;

3.根据权利要求2所述的MCU双BootROM程序启动方法,其特征在于,所述启动程序默认从ROM区的BootROM1启动,芯片厂商和用户可以通过ROM区BootROM1程序,对flash区的BootROM2程序进行更新,使得当ROM区的BootROM1程序固化后,程序出现Debug和缺陷可以更新flash区BootROM2程序,然后选择从BootROM2启动。

4.根据权利要求3所述的MCU双BootROM程序启动方法,其特征在于,当用户根据自己的应用对BootROM进行裁剪时,可通过修改并更新位于flash存储区的BootROM2启动程序,可以选择直接从flash存储区的用户定制化的BootROM2程序启动,以达到快速启动和性能最优化设计要求;

5.根据权利要求1或4所述的MCU双BootROM程序启动方法,其特征在于,所述BootROM1和BootROM2的程序可以相同也可以不同。

6.根据权利要求4所述的MCU双BootROM程序启动方法,其特征在于,所述两个启动程序BootROM1和BootROM2对用户均不可见。

...

【技术特征摘要】

1.mcu双bootrom程序启动方法,其特征在于,所述双bootrom程序包括两个启动程序bootrom1和bootrom2,两个启动程序bootrom1和bootrom2分别存储于rom存储区以及内部flash存储区,且两个启动程序可独立完成芯片启动工作,两个启动程序并行存在并均为一级引导程序,

2.根据权利要求1所述的mcu双bootrom程序启动方法,其特征在于,所述芯片可根据外部pin选择和存储器值,选择bootrom1或者bootrom2其中一个程序进行启动;

3.根据权利要求2所述的mcu双bootrom程序启动方法,其特征在于,所述启动程序默认从rom区的bootrom1启动,芯片厂商和用户可以通过rom区bootrom1程序,对flash区的bootrom2程序进行更新,使得当rom区的...

【专利技术属性】
技术研发人员:厉政张晓冬
申请(专利权)人:浙江智行微电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1