【Xilinx】MPSOC启动流程(一)- 芯片上电启动

此系列博客,仅对Xilinx平台PS端(ARM部分)开发做介绍,不对PL(FPGA)做过多介绍。

目录

一. MPSoc启动单元

1.1 Platform Managerment Unit

1.2 Configuration Security Unit

 二. 详细启动流程

 ​​​​​​​2.1 预配置阶段

​​​​​​​2.2 配置阶段

​​​​​​​2.3 后配置阶段


一. MPSoc启动单元

1.1 Platform Managerment Unit

PMU 处理单元主要完成电源管理,系统启动初始化,复位和唤醒等

 

       PMU Processor是一个Microblaze(FPGA的软核)

​​​​​​​1.2 Configuration Security Unit

CSU由两个Block组成,分别是Security Processor Block负责启动等操作,和Cryto Interface Block负责加密等操作。

 ​​​​​​​二. 详细启动流程

Xilinx MPSoc的启动流程分为三个阶段,预配置阶段,配置阶段和后配置阶段。

注:FSBL可在APU或RPU运行

 ​​​​​​​2.1 预配置阶段

预配置阶段CSU尚未启动,由PMU完全控制,但是执行的是PUM ROM里面代码,ROM里面的代码是固化的,用户无法修改,所以我们无法干预这一阶段的任何行为。

PMU处理所有复位和唤醒过程。上电复位用于复位CSU和PMU,因为它们负责调试,系统和软件复位。

初次启动期间将执行下列步骤:

• 通过上电复位 (POR) 将 PMU 从复位状态唤醒。

• PMU 执行来自 PMU ROM 的代码。

• PMU 初始化 SYSMON 和启动所需的 PLL、清空低功耗域和全功耗域, 并释放 CSU 复位。

这阶段结束的标志是CSU复位的释放。

注:MBIST: 存储器内建自测试

       MicroBlaze: 软核处理器,FPGA中的一个软核

​​​​​​​2.2 配置阶段

在配置阶段CSU开始工作,BootROM(CSU ROM代码的一部分)解释boot header以配置系统,初始化OCM,并将PS的FSBL(first-stage boot loader)代码加载到256KB片内RAM(on-chip RAM, OCM)中(无论是在安全还是非安全启动模式)。

系统根据BOOT Header的内容选择在CPU(Cortex-A53)还是RPU(Cortex-R5)上执行。负责初始化必要的时钟、内存和外设,加载Bit文件和用户代码等。

读取Mode Pin引脚,选择不同的启动方式。

在boot过程中,CSU还将PMU用户固件(PMU Firmware)加载到PMU RAM中,以与PMU ROM一起提供平台管理服务。PMU的Firmware不是必须的,但是大多数基于Xilinx的FSBL和系统软件的系统都存在PMU Firmware。

这个阶段FBSL可以通过PCAP接口从PS配置PL,但是这只是一个可选的操作。因为其实我们也可以在PS端的操作系统启动之后再动态配置PL端。有时,可能只需要 FSBL 在启动过程中加载部分 PL。随后,有必要在系统生命周期里继续对 PL 进行部分重配置。

在 PMU 释放 CSU 后, CSU 将执行以下操作:

• 检查并判定 FSBL 或用户应用是否需要进行身份验证。

• 执行身份验证检查, 并且只有在身份验证检查通过以后才继续执行。然后, 检查镜像是否包含任何已加密的分区。

• 如果 CSU 检测到分区已加密, 那么 CSU 会执行解密并初始化 OCM、判定启动模式设置、执行 FSBL 加载和可选PMU 固件加载操作。

• 执行 CSU ROM 代码后, 它会将控制权交给 FSBL。 FSBL 使用 PCAP 接口来对含比特流的 PL 进行编程。

随后,在后配置阶段 FSBL 会负责对系统进行操作。

​​​​​​​2.3 后配置阶段

开始执行FSBL之后,CSU ROM代码进入后配置阶段,该阶段负责系统干预响应。 CSU硬件提供持续的硬件支持,以验证文件,通过PCAP配置PL,存储和管理安全密钥以及解密文件。

FSBL主要会完成初始化系统,处理器,DDR,启动设备的初始化,固件加载,分区头文件验证,固件拷贝等工作。

这个阶段会启动SSBL,就是Linux的bootloader,开始引导启动Linux系统,或者直接进入RPU的应用程序。

注意:FSBL大小最好在170KB以下

猜你喜欢

转载自blog.csdn.net/qq_37755518/article/details/130087928