030 BOOT ROM
1.Boot简介
GCSOC030包含了16KB boot ROM. CPU 在上电或reset之后,通过boot ROM启动整个系统。系统支持如下三种boot方式:
(1)SPI boot;
(2)SD boot,使用SDIO1接口;
(3)USB boot;
其中SPI/SD boot,可以通过bootstrap的OM1(sd_spi_sel)来进行控制,具体的配置启动方式如表-1所示:
sd_spi_sel(om1) |
启动方式 |
0 |
SPI boot 使用spimCtrl读取SPI NOR数据 |
1 |
SD boot 使用SDIO1作为sd boot接口 |
表-1
USB boot通过GPIO/ADC按键,选择是否通过这种方式启动系统。当boot ROM检测到AGPIO7被选择,或是ADC Chanel1采样到的数据满足要求,两者中有一个满足条件时,进入USB boot相关的启动流程。
2.Boot 步骤
在SOC上电/复位后,boot ROM中的boot程序主要步骤,按如下顺序开始执行:
(1) 检测AGPIO7是否有选择信号,如果检测到(1->0),进入USB boot启动方式;boot ROM接着对USB Phy&Controller进行初始化并检查USB数据线是否接入,如果接入,初始化USB设备驱动并等待执行注意发送的stage2程序。
(2) 检测ADC Chanel1中采样到的数据,如果满足条件,同样进入USB boot启动,如果不满足条件,进入SD/SPI启动模式检测。
(3) 检查sd_spi_sel寄存器,选择启动方式。
(4) 如果是SPI启动方式,跳转到SPI NOR FLASH起始位置,检查magic num并获取第二阶段代码长度,选择是否拷贝到SRAM中执行第二阶段代码。
(5) 若果是SD启动方式,boot ROM 代码会尝试初始化SDIO1,并从SD卡的第6个block读取第二阶段代码,并放在SRAM中执