新闻中心
新闻中心

10

2025

-

04

瑞萨机器人处理器RZT2H CR52双核BOOT流程和例程代码分析

浏览:455  

发布:2025-04-10 23:01:49


【导语】本文深入探讨了瑞萨电子的RZ/T2H多核处理器的启动流程。RZ/T2H集成了高性能的Arm Cortex-A55和Cortex-R52内核,专为工业设备如机器人等设计。文章以CR52双核为例,详细阐述了从BOOTROM启动到主核加载并启动其他内核的整个过程,包括关键参数设置、Loader程序的作用及多核间的协同启动机制。通过本文,读者将深入了解RZ/T2H多核系统的启动细节及其技术优势。

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的(de)结(jié)构(gòu)如(rú)下(xià):

wKgZO2fsk0qAZr5UAAFMtnI_9vk404.png

除(chú)了(le)上(shàng)述(shù)信(xìn)息(xi),其(qí)中(zhōng)DSET_ADDR_NML是(shì)跟(gēn)多(duō)核(hé)启(qǐ)动(dòng)相(xiāng)关的(de)关键参数;该参数决定Loader Program的加载地址,而BOOTROM根据这个地址决定接下来在哪个核上,从哪个地址开始执行LOADER程序。

这里补充一下T2H程序结构和基本加载启动流程:

T2H平台(tái),烧(shāo)录(lù)到(dào)External Flash上(shàng)的(de)内(nèi)容(róng)逻(luó)辑(ji)上(shàng)分(fēn)成(chéng)3部(bù)分(fēn):

上(shàng)述(shù)的(de)Parameter for Loader;

Loader program;

Application program;

启(qǐ)动(dòng)时(shí),BOOTROM根(gēn)据(jù)Parameter for Loader从(cóng)Flash加(jiā)载(zài)Loader program到(dào)指(zhǐ)定(dìng)位(wèi)置(zhì)开(kāi)始(shǐ)执(zhí)行(xíng),然(rán)后(hòu)Loader program再(zài)加(jiā)载(zài)Application program并(bìng)跳(tiào)转(zhuǎn)执(zhí)行(xíng)。

在(zài)T2H多(duō)核(hé)架(jià)构(gòu)下(xià)(4xCA55+2xCR52)Loader parameter中(zhōng)的(de):DEST_ADDR_NML有(yǒu)2个(gè)可(kě)能(néng)的(de)地(de)址(zhǐ)范(fàn)围(wéi),即(jí)BTCM7或(huò)者(zhě)7System SRAM:

wKgZPGfsk0qAdzn6AAEPsQBTjY4802.png

如(rú)果(guǒ)BOOTROM判(pàn)断(duàn)到(dào)加(jiā)载(zài)地(de)址(zhǐ)是(shì)在BTCM中,那CR52_0继续执行(second boot CPU仍然是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,以下步(bù)骤(zhòu)是(shì)CR52_0的(de)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)

的步骤如下图:

wKgZPGfsk0uAfiIzAAK8JTsGLJs484.png

上述步骤中需要特别强调的地方:

启动过(guò)程(chéng),需要从CR52_0访问CR52_1的ATCM空间(jiān)。根(gēn)据(jù)T2H的(de)架(jià)构(gòu),这(zhè)个(gè)访(fǎng)问(wèn)只(zhǐ)能(néng)通(tōng)过(guò)AXI总(zǒng)线(xiàn),且(qiě)必(bì)须(xū)把(bǎ)CR52_1的(de)ATCM region通(tōng)过(guò)MPU配(pèi)置(zhì)为(wèi)Device属(shǔ)性(xìng),并(bìng)且(qiě)只(zhǐ)能(néng)使(shǐ)用(yòng)LD和(hé)ST指(zhǐ)令(lìng);

wKgZO2fsk0uASJqXAAIz3ixvGPk055.png

对(duì)应(yīng)到(dào)代(dài)码(mǎ)中(zhōng),上(shàng)面(miàn)的(de)7个(gè)步(bù)骤(zhòu)在(zài)函(hán)数(shù)SystemInit()文件(jiàn)startup.c中(zhōng)都(dōu)能(néng)找(zhǎo)到(dào)对(duì)应(yīng)的(de)实(shí)现(xiàn);

重(zhòng)点(diǎn)说(shuō)明(míng)函(hán)数(shù)bsp_cpu_reset_release()该(gāi)函(hán)数(shù)实(shí)现(xiàn)上(shàng)述(shù)步(bù)骤(zhòu)的(de)2,3,4,6,7;

重(zhòng)点(diǎn)分(fēn)析(xī)步(bù)骤(zhòu)6:

代(dài)码(mǎ)段(duàn)如(rú)下(xià):

wKgZO2fsk0uAOftCAAGxVYrykPU559.png

这(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ē)口复制到CR52_1 ATCM的(de)起(qǐ)始地址(dst_cpu1:0x2100_000);

复制跳转指令要用到的目标地址(addr);

操作到的存储地址如图示:

wKgZO2fsk0yATkjgAAE1as_PNXY961.png

最后步骤7:

wKgZPGfsk0yANoXSAAAkM9n_lG4759.png

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

wKgZPGfsk0yAbBpvAAFA_7le4Ms386.png

以(yǐ)上(shàng),以(yǐ)双(shuāng)CR52 Core为(wèi)例(lì),说明了T2H多核系统的BOOT流程。

延伸阅读:

日本瑞萨电子此前量产面向工业设备的 MPU(微处理器单元)RZ / T2H,预计用于机器人等,号称 CPU 软件处理性能比以前提高了 20~30%。一个芯片可以同时控制最多 9 轴的电机

RZ / T2H 的 CPU 采用四个 Arm Cortex-A55 内核,最高主频为 1.2GHz,支持 LPDDR4-3200 32bit 内存;实时 CPU 包括两个 Cortex-R52,最高主频 1GHz。