(1)当设备上电复位后,执行RBL,会进入"_restVec" 汇编函数地址处。完成一些基本操作后,会跳转到函数"_bootMain"。如下图所示。

(2)_bootMain对应C文件(rmain.c)中定义的bootMain函数。如下图所示,中间会调用汇编文件中的函数“romtBootReentry”。最终会调用C文件(rmain.c)中的“boot_main_chaining”函数。
该过程会读取设备状态寄存器,得到启动模式等参数。并根据启动模式,对其他参数进行初始化。

关于EMIF25初始化函数 “bootInitBootParamsEmif25”,如下图所示。初始化得到分支跳转地址0x70000000,以及其他参数。

(3)“boot_main_chaining”函数主要功能是:重置堆栈,然后继续引导链接过程。如下图所示。最终会根据不同的模式,选择不同的启动方式。

(4)接上文,除了EMIF启动之外的,启动,会涉及到 启动参数表,启动配置表,启动表的读取。如下图所示。
首先是初始化启动表相关的函数。使用了函数指针数组和状态机。

然后是具体的使用启动表的状态机。如下图所示。

(5)EMIF启动,定位到函数“bootMainEmif25”。最终进行分支跳转到0x70000000地址。

(1)当设备上电复位后,执行RBL,会进入"_restVec" 汇编函数地址处。完成一些基本操作后,会跳转到函数"_bootMain"。如下图所示。

(2)_bootMain对应C文件(rmain.c)中定义的bootMain函数。如下图所示,中间会调用汇编文件中的函数“romtBootReentry”。最终会调用C文件(rmain.c)中的“boot_main_chaining”函数。
该过程会读取设备状态寄存器,得到启动模式等参数。并根据启动模式,对其他参数进行初始化。

关于EMIF25初始化函数 “bootInitBootParamsEmif25”,如下图所示。初始化得到分支跳转地址0x70000000,以及其他参数。

(3)“boot_main_chaining”函数主要功能是:重置堆栈,然后继续引导链接过程。如下图所示。最终会根据不同的模式,选择不同的启动方式。

关于Emif25的启动处理过程,如下图所示。主要是初始化EMIF外设,以及将Nor入口地址传到下一级函数bootDataProcess,进行处理。

(4)接上文,启动会涉及到 启动参数表,启动配置表,启动表的读取。如下图所示。
首先是初始化启动表相关的函数。使用了函数指针数组和状态机。

然后是具体的使用启动表的状态机。如下图所示。Emif25启动,RBL调用bootDataProcess函数,调用状态机对0x70000000处的数据进行处理。
即,支持boot启动参数表的识别与搬运,启动配置表的识别与搬运,启动表的识别与搬运。

魔法地址,非零的地址 表示引导完成。
(1)启动异常时 chipBootException ,跳转地址。
(2)获取该地址变量,使用 chipGetMagicAddr函数。
(3)辅助核心只需清除其引导地址寄存器 和 进入空闲。一旦被唤醒,它们就会转移到启动地址寄存器中的地址
辅核最终执行到 gauss_sec_core_boot 函数。将IPC中断 路由到核心,并执行空闲。
被唤醒后,如果得到非零 magicAddr地址,则 解锁kick,置位一个核的完成位。再跳转到该地址处。

(4)在完成休眠恢复的过程中,chipCleanupHibernation函数 使用了magicAddr地址。
只有核心0才能真正调用此函数,因为其他核心在检测到休眠恢复后将旋转。
(5)通过 p_boot_entry_addr 指针操作 magicAddr变量。
bootDataProcess函数的参数 modes = = emifBootDataTypes = = BOOTCONFIG_EMIF25_IMAGE_TYPES = = { BOOT_IMAGE_TYPE_BLOB_TBL, 0 } 。
这里的BOOT_IMAGE_TYPE_BLOB_TBL 决定了 EMIF启动模式下的处理方式。由下图可知,直接获取入口地址并跳转。并没有状态机搬运的过!!!
可以知道,某一种启动方式的处理方式,可以有多种并存,只需要在上述的花括号结构中添加索引宏定义。

RBL的源代码:http://software-dl.ti.com/sdoemb/sdoemb_public_sw/rbl/1_0_C6657/index_FDS.html
RBL的源代码:http://software-dl.ti.com/sdoemb/sdoemb_public_sw/rbl/1_0_C6670/index_FDS.html
RBL的源代码:http://software-dl.ti.com/sdoemb/sdoemb_public_sw/rbl/1_0_C6678/index_FDS.html