赞
踩
MPU(Micro Processing Unit,微处理器)和MCU(Micro ControlUnit,微控制器)芯片的启动可以分为冷启动和热启动。
冷启动也称上电启动,一般是接通电源后芯片的第一次启动。冷启动时,系统的易失存储(片上RAM、片上寄存器,片外DDR,片外RAM等等)处于不确定状态。启动需要完成加电、自检、硬件初始化等操作。
热启动是指处理器芯片在运行过程中重新启动系统,可以是一次有准备的软件复位,也有可能是系统保护机制触发的预料外的热启动操作)。如果是有准备的软件复位,关键的易失性存储可能已经完成初始化。
本文档主要关注MPU/MCU类芯片的冷启动方式。
MCU/MPU类产品由于应用场景多样化,因此通常需要提供多种启动方式供用户选择。不同产品供用户选择启动方式的方法是不同的,本文档将启动选择方式分为三类:类型I是硬件冷启动,硬件通过启动管脚的配置,从不同的启动区域/介质开始执行程序,开始启动过程;类型II是软件冷启动,芯片固定从内部存储rom区域启动,软件通过管脚选择,执行不同的启动分支程序,由启动分支区分启动介质等;类型III是混合型冷启动,这是以上两类的混合型,即硬件通过启动管脚配置从内部存储rom区域启动,然后再通过相关管脚配置,软件执行不同的启动分支程序。
以上启动类型对于特定产品可以是变化的。例如出于代码安全因素或者方便应用内编程等因素,通常支持类型III启动的产品,可以通过OTP的配置,转化为固定介质启动或类型I或类型II的启动方式。
FT-2000A/2是飞腾公司的双核高性能嵌入式微处理器产品,兼容64位ARM V8指令系统,主频达到1GHz,片上存储包括32K字节的一级指令Cache,32K字节的一级数据Cache,1M字节的二级Cache。
由于没有合适的片上存储存放启动代码,FT-2000A/2采用类型I启动选择,支持SPI和LBC两种启动方式,通过spi_lbc_select管脚进行选择。
LS2K1000是龙芯中科公司的双核高性能嵌入式微处理器产品,采用40nm工艺,片内集成2个GS264核,与MIPS64体系结构兼容,主频1GHz,64位DDR3控制器。,片上存储包括32K字节的一级指令Cache,32K字节的一级数据Cache,共享1M字节的二级Cache。
LS2K1000采用类型I启动选择,支持LIO/SPI/SDIO/NAND四种启动方式,通过SYS_BOOTSEL[1:0]管脚进行选择。
LS2H是龙芯中科公司的单核安全适用领域微处理器产品,采用65nm工艺,片内集成1个GS464核,主频1GHz,64位DDR2/3控制器。,片上存储包括64K字节的一级指令Cache,64K字节的一级数据Cache,共享512K字节的二级Cache。
LS2H采用类型I启动选择,支持LPC/SPI/NAND三种启动方式,通过NAND_WR/SPI_SCK/SPI_CSn管脚进行选择。
S5PC110是三星公司的2010年左右的32位微处理器,针对移动电话和通用领域,内建Cortex-A8处理器,支持ARM V7-A结构,32/32K字节I/D 一级cache,512K字节二级cache,主频1GHz。内建64K字节iROM,96K字节iRAM。芯片启动时,会从片内ROM区域的irom代码开始执行,然后irom会从如下设备中选择启动
S5PC110的iROM程序通过内部熔丝(efuse)决定采用安全启动或者正常启动。
下图为S5PC110的bootloader和OS的启动过程示意
下图为S5PC110的boot code的流程图。
ST产品主要以MCU为主,最近几年开始推出MPU产品。现在MPU全系列产品包括的STM32MP151x/153x/157x若干产品。均采用类型II的启动选择方式。以STM32MP157A为例,该产品内建双核32bit的ARM Cortex-A7处理器,32K/32K字节的I/D一级cache,共享256K字节的二级cache。内部集成128K字节安全启动ROM,708K字节内部RAM。芯片启动时,会从片内ROM区域的代码开始执行,然后结合OTP、内部寄存器和外部管脚状态等因素,从如下设备中选择启动:
从内部的ROM开始,ROM的代码启动过程
TI公司的AM437X微处理器采用32位Cortex-A9处理器核,主频1GHz。MPU子系统集成32K字节数据cache和指令cache;256K字节二级cache(也可配置成三级RAM);256K字节片上Boot ROM;64K字节片上RAM。
启动模式在上电reset期间,锁存住启动管脚的值,作为配置信号。启动管脚SYSBOOT[17:0]中包括8位的BOOTMODE,用来选择启动介质和10位的MCU_BOOTMODE,用来选择启动的时钟频率和备选启动设备。
ST公司的STM32F373XX是一款MCU产品,使用Coretex-M4处理器核,主频72MHz,CoreMark分数245分,片上集成64KB~256KB的用户flash存储,16KB~32KB的SRAM,和一段系统存储(sytem memory)区域。
启动时,通过BOOT0管脚和BOOT1选择以下三种启动设备启动。
这种启动方式是ST公司中低端MCU中最常用的启动方式。常见的STM32F1xx,STM32F3XX均采用这种启动方式。
片上16K数据cache,16K指令cache,最大2MB的片上用户flash存储,512K字节的SRAM(包括128K字节DTCM+16K字节ITCM+4K字节低功耗备份RAM),灵活的外部存储(包括SRAM,PSRAM,SDRAM,NOR,NAND等)控制和一段系统存储(sytem memory)区域。
启动时,通过BOOT管脚和BOOT_ADDX寄存器选择,可以指定系统的入口地址。包括
F779的启动方式比较更灵活,只需一个boot引脚。但是一个引脚只能区分出两个状态,为了解决这个问题,专门配套了两个option bytes选项字节配置,如此以来就可以方便设置各种存储器地址了。
Boot模式选择 | BOOT区域 | |
Boot引脚 | Boot地址 | |
0 | BOOT_ADD0[15:0] | 启动地址由BOOT_ADDR0定义,默认值0x0800,对应flash首地址0x0800_0000 |
1 | BOOT_ADDR1[15:0] | 启动地址由BOOT_ADDR1定义,默认值0x1FF0,对应系统bootloader首地址0x1FF0_0000 |
BOOT_ADD0和BOOT_ADD1对应32位地址的高16位。设置了选项字节后,掉电不会丢失,下次上电或者复位后,会根据BOOT引脚状态从BOOT_ADD0,或BOOT_ADD1所设置的地址进行启动。
如果用户不慎,设置的地址范围不在有效的存储器地址,那么BOOT = 0时,会从Flash首地址0x0800 0000启动,BOOT = 1时,会从ITCM首地址0x0000 0000启动。
如果用户使能了Flash Level 2保护,那么只能从Flash地址空间进行启动。
类型I的启动是在片上没有固化的bootrom时采用的方式。该方式优点是比较灵活,可以将bootrom的引导程序放在片外存储上,方便用户修改;缺点是相对类型II和类型III,解决成本相对较高,安全性相对来说较弱,无法做到安全启动的目的。
类型II的启动一般是芯片应用非常确定的领域。
类型III的启动是最多MPU采用的方式。在三种方式中最灵活。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。