RZT2H CR52双核BOOT流程和例程代码分析

2025-05-01

RZT2H是多核处理器,启动时,需要一个“主核”先启动,然后主核根据规则,加载和启动其他内核。本文以T2H内部的CR52双核为例,说明T2H多核启动流程。

RZ T2H 简介

https://www.ramcu.cn/product/rz/t/t2h/

RZ/T2H具有工业机器人、运动控制器和可编程逻辑控制器 (PLC) 等控制器所需的处理能力和外设功能。

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的结构如下:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第1张

除了上述信息,其中DSET_ADDR_NML是跟多核启动相关的关键参数;该参数决定Loader Program的加载地址,而BOOTROM根据这个地址决定接下来在哪个核上,从哪个地址开始执行LOADER程序。

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

T2H平台,烧录到External Flash上的内容逻辑上分成3部分:

  1. 上述的Parameter for Loader;
  2. Loader program;
  3. 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:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第2张

如果BOOTROM判断到加载地址是在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 CP-U,以下步骤是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)

的步骤如下图:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第3张

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

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

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第4张

对应到代码中,上面的7个步骤在函数SystemInit()文件startup.c中都能找到对应的实现;

重点说明函数bsp_cpu_reset_release()该函数实现上述步骤的2,3,4,6,7;

重点分析步骤6:

代码段如下:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第5张

这段代码完成的动作:

把1st分支指令[inst]经AXIS接口复制到CR52_1 ATCM的起始地址(dst_cpu1:0x2100_000);

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

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

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第6张

最后步骤7:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第7张

CR52_1跳转到入口函数system_init,开始执行:

RZT2H CR52双核BOOT流程和例程代码分析 (https://ic.work/) 技术资料 第8张

以上,以双CR52 Core为例,说明了T2H多核系统的BOOT流程。






文章推荐

相关推荐

  • 小安派BW21 UNO从机

    作为一款本地AI图象识别开发板,BW21-CBV-Kit它能够独自运行目标识别模型。2.4GHz+5GHz的双频Wi-Fi,提供高性能的无线传输能 ...

    2025-05-21
  • IGBT模块吸收回路分析模型

    IGBT模块吸收回路分析模型 一、IGBT模块吸收电路的模型 尽管开关器件内部工作机理不同,但对于吸收电路的分析而 ...

    2025-05-21
  • BLDC电机的基本结构和控制方式

    来源:攻城狮原创之设计分享 直流无刷电机(Brushless DC Motor,BLDC)是一种基于电子换向技术的高效电机,具有长寿命 ...

    2025-05-21
  • 联通智家通通:聚四方守护之力,筑万家AI通途

    “神兽镇宅”,是深植于中国人心中的居家智慧。朱雀、玄武等神兽,站立在紫禁城之巅,也悬于普通百姓门上,寄托着镇守四方风雨 ...

    2025-05-21
  • FinFET与GAA结构的差异及其影响

    文章来源:老虎说芯 原文作者:老虎说芯 本文介绍了当半导体技术从FinFET转向GAA(Gate-All-Around)时工艺面临 ...

    2025-05-21
  • 一文详解球栅阵列封装技术

    文章来源:学习那些事 原文作者:前路漫漫 本文介绍了球栅阵列封装的结构、分类、应用和发展趋势。 概述 ...

    2025-05-21
  • 智能车电磁组——基本控制篇

    智能车电磁组——基本控制篇 前言 电磁车的控制比较简单,可以分为信号采集,舵机控制和电机控制三部分, ...

    2025-05-21
  • 低成本电源排序器解决方案

    绝大多数负载点DC-DC转换器可以将上一个转换器的电源就绪输出连接至下一个转换器的使能输入,实现上电排序。这种方法只适合 ...

    2025-05-21
  • 注入增强型IGBT学习笔记

    来源:星际浮尘 注入增强型IGBT 1、结构特点与典型工艺 1.1结构提出与发展 为了协调 ...

    2025-05-21
  • 解析RZ/N2L CANFD模块的缓冲区机制(3)

    在工业自动化、智能交通、机器人等领域,CANFD(CAN with Flexible Data-Rate)技术正逐步取代传统CAN,以适应更高的数据速 ...

    2025-05-21