16
2025
-
04
瑞萨机器人处理器RZT2H CR52双核BOOT流程和例程代码分析
浏览:449
发布:2025-04-16 16:30:51
【导语】日本瑞萨电子推出的RZ/T2H多核处理器,专为工业设备设计,如机器人等。该处理器采用四核Arm Cortex-A55与双核Cortex-R52架构,显著提升了CPU软件处理性能20~30%。本文将以RZ/T2H内部的CR52双核为例,深入解析其多核启动流程,包括主核的启动、Loader程序的加载、以及应用程序的执行,同时探讨其他内核的加载与启动过程。
RZT2H是多核处理器,启动时,需要一个“主核”先启动,然后主核根据规则,加载和启动其他内核。本文以T2H内部的CR52双核为例,说明T2H多核启动流程。
LSI reset release时,其内置的BOOTROM总是从CR52_0开始执行,即我们可以把CR52_0定义为主核。如果系统配置为程序从External XSPI_FLASH 启动,BOOTROM首先根据存放在external Flash起始位置的Parameter中的定义,从Flash中加载Loader程序。
Parameters for the Loader:
存放在External Memory区域的起始位置,存放着与程序加载相关的关键信息,如例如在各个启动模式下,启动期间的CPU缓存设置,用于与外部存储器通信的引导外设(xSPI或SDHI)的配置以及加载程序的size等等。
Parameters for Loader的结构如下:

除了上述信息,其中DSET_ADDR_NML是跟多核启动相关的关键参数;该参数决定Loader Program的加载地址,而BOOTROM根据这个地址决定接下来在哪个核上,从哪个地址开始执行LOADER程序。
这里补充一下T2H程序结构和基本加载启动流程:
T2H平台,烧录到External Flash上的内容逻辑上分成3部分:
上述的Parameter for Loader;
Loader program;
Application program;
启动时,BOOTROM根据Parameter for Loader从Flash加载Loader program到指定位置开始执行,然后Loader program再加载Application program并跳转执行。
在T2H多核架构下(4xCA55+2xCR52)Loader parameter中的:DEST_ADDR_NML有2个可能的地址范围,即BTCM7或者7System SRAM:

如果BOOTROM判断到加载地址是在BTCM中,那CR52_0继续执行(second boot CPU仍(réng)然(rán)是(shì)CR52_0),从加载地址开始执行LOADER PROGRAM,并完成整个启动流程。
如果BOOTROM判断到加载地址是SYSTEM,系统会认为second boot CPU是CA55_0,BOOTROM 就会Reset release CA55_0,并把CR52_0转换到WFI状态,然后让CA55_0执行Loader program。
以上介绍了在T2H多核系统中的主核First boot CPU和Second boot CPU的启动过程,但是其他的Core此时都还是在Reset 状态,等待 Second boot CPU为其加载程序和释放。
接下来以52双核为例,说明CR52_0如何完成自身程序加载和加载并启动CR52_1的过程;
在这个示例中,CR52_0用作Second boot CPU,以下步骤是CR52_0的Loader Program需要完成的工作:
根据FSP时钟树,配置LSI的各个Clock;
初始化Loader Program的Data段和BSS段;
配置ADDRESS_EXPANDER_INIT:
Address EXPANDER的作用是:通过映射的方法,使能32 bit Master访问4G area之外的地址空间,详见UM 13.4.5;
TrustedZone 400初始化;
COPY应用程序的PRG段/DATA段/BSS段,到相应的运行RAM空间。如果需要启动其他内核,则把其他内核的PRG/DATA,也COPY到对应RAM区域,然后Release目标内核;
核间通信用到的信号量初始化;
Master MPU初始化;
GIC初始化和系统定义的中断的初始化配置;
TFU初始化;
Main()跳转应用;
其中步骤5中启动目标CPU(CR52_1)
的步骤如下图:

上述步骤中需要特别强调的地方:
启动过程,需要从CR52_0访问CR52_1的ATCM空间。根据T2H的架构,这个访问只能通过AXI总线,且必须把CR52_1的ATCM region通过MPU配置为Device属性,并且只能使用LD和ST指令;

对应到代码中,上面的7个步骤在函数SystemInit()文件startup.c中都能找到对应的实现;
重点说明函数bsp_cpu_reset_release()该函数实现上述步骤的2,3,4,6,7;
重(zhòng)点(diǎn)分(fēn)析(xī)步(bù)骤(zhòu)6:
代(dài)码(mǎ)段(duàn)如(rú)下(xià):

这(zhè)段(duàn)代(dài)码(mǎ)完(wán)成(chéng)的(de)动(dòng)作(zuò):
把(bǎ)1st分(fēn)支(zhī)指(zhǐ)令(lìng)[inst]经(jīng)AXIS接(jiē)口(kǒu)复(fù)制(zhì)到(dào)CR52_1 ATCM的(de)起(qǐ)始(shǐ)地(de)址(zhǐ)(dst_cpu1:0x2100_000);
复(fù)制(zhì)跳(tiào)转(zhuǎn)指(zhǐ)令(lìng)要(yào)用(yòng)到(dào)的(de)目(mù)标(biāo)地(de)址(zhǐ)(addr);
操(cāo)作(zuò)到(dào)的(de)存(cún)储(chǔ)地(de)址(zhǐ)如(rú)图(tú)示(shì):

最(zuì)后(hòu)步(bù)骤(zhòu)7:

CR52_1跳(tiào)转(zhuǎn)到(dào)入(rù)口(kǒu)函(hán)数(shù)system_init,开(kāi)始(shǐ)执(zhí)行(xíng):

以(yǐ)上(shàng),以(yǐ)双(shuāng)CR52 Core为(wèi)例(lì),说(shuō)明(míng)了(le)T2H多(duō)核(hé)系(xì)统(tǒng)的(de)BOOT流(liú)程(chéng)。
延(yán)伸(shēn)阅(yuè)读(dú):
日(rì)本(běn)瑞(ruì)萨(sà)电(diàn)子(zi)此(cǐ)前(qián)量(liàng)产(chǎn)面(miàn)向(xiàng)工(gōng)业(yè)设(shè)备(bèi)的(de) MPU(微(wēi)处(chù)理(lǐ)器(qì)单(dān)元(yuán))RZ / T2H,预(yù)计(jì)用(yòng)于(yú)机(jī)器人等,号称 CPU 软件处理性能比以前提高了 20~30%。一个芯片可以同时控制最多 9 轴的电机。
RZ / T2H 的 CPU 采用四个 Arm Cortex-A55 内核,最高主频为 1.2GHz,支持 LPDDR4-3200 32bit 内存;实时 CPU 包括两个 Cortex-R52,最高主频 1GHz。

相关新闻