【Xilinx】MPSOC启动流程(二)- 第一段bootloader(FSBL)

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

目录

一. FSBL

二. 初始启动

2.1 asm_vector.S

2.2 boot.S

2.3 xil-crt0.S

三. Initalization

3.1 ​​​获取复位原因

3.2 系统初始化

3.3 处理器初始化

​​​​​​​3.4​​​​​​​ 其他初始化


一. FSBL

FSBL包含以下几个部分:

       1.Initalization:初始化系统,处理器,DDR等。

       2.Boot Device Initalization: 启动设备的初始化,第二段启动设备的初始化等。

       3.Partition Loading: 固件加载,分区头文件验证,固件拷贝等。

       4.Handoff: 启动,PM初始化等

       注:FSBL和PMU交互通过 PMU 的全局寄存器 PMU_GLOBAL_BASEADDR

二. 初始启动

2.1 asm_vector.S

1.在此文件为PS的RPU/APU执行的初始位置, .org 0程序从地址0开始执行

2.跳转到 _boot

      

2.2 boot.S

1.执行CPU初始化相关准备工作

2.跳转到 _startup

2.3 xil-crt0.S

跳转到C代码main主函数

​​​​​​​三. Initalization

此部分主要做一下工作:

  1. 获取复位的原因
  2. 系统初始化
  3. 处理器初始化
  4. DDR初始化
  5. 板级外设初始化

3.1 ​​​获取复位原因

1.通过读取RESET_CTRL(CRL_APB)寄存器值获取复位原因

2.不同的复位原因做不同的工作

​​​​​​​3.2 系统初始化

  1. MIO初始化:初始化相关IO口,设置其复用功能
  2. 外设预初始化:复位SYSMON CLOCK,复位QSPI
  3. 初始化PLL

               (1)初始化RPLL,输出时钟到RPU_FPD

                (2)初始化IOPLL,输出时钟到IO_FPD

                (3)初始化APLL,输出时钟到APU_LPD

                (4)初始化DDR_PLL,输出时钟到DDR_LPD

                (5)初始化VPLL,输出时钟到VPLL_LPD

4.时钟初始化

       配置GEM3(千兆以太网控制器),USB0,USB3,IIC,CAN,DP,DDR等时钟。

5.DDR数据初始化

       配置相应寄存器,复位,使用何种类型DDR等等

6.DDR 控制器初始化

       PYH初始化,DRAM初始化,数据传输

7.外设初始化

       配置,复位,GPIO使能,输入输出,SDIO,USB0,USB3,IIC,CAN,DP,GEM等

8.SerDes()初始化

       使用SerDes通信技术的接口进行初始化,USB,GEM,PCIE,DP等

       注:SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种主流的时分多路复用(TDM)、点对点(P2P)的串行通信技术。即在发送端多路低速并行信号被转换成高速串行信号

9.初始化SMMU,以至于可以获取SMMU消息

10.配置AFI(AXI FIFO Interface)

11.配置DDR QOS

​​​​​​​3.3 处理器初始化

  1. 读取CPU ClusterID,运行于那个CPU,从协处理器CP15中读取,并存储
  2. 读取设备名等
  3. 更新PMU GLOBAL_GEN_STORAGE5 (PMU_GLOBAL)寄存器值,存储的是处理器的值
  4. 注册异常中断

​​​​​​​3.4​​​​​​​ 其他初始化

  1. 如果DDR支持ECC,进行ECC初始化

  1. 底板自定义的相关初始化,可根据不同板子进行相应初始化工作XFsbl_BoardInit

本书是使用Zynq MPSoC的开发人员的实用指南,同样也是希望熟悉器件及其相关设计方法的技术人员的有效参考。 Zynq MPSoC(多处理器片上系统)是Xilinx公司推出的第代SoC系列产品,集成了复杂的处理系统,包括ARM Cortex-A53应用程序处理器和ARM Cortex-R5实时处理器,以及FPGA可编程逻辑。 来自苏格兰斯特拉斯克莱德大学(University of Strathclyde)的Louise Crockett团队基于这一平台的软件和硬件结构,撰写了Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications,综合且全面地介绍了软件堆栈、多处理器处理系统以及可编程硬件阵列等问题。 程序员可以学会如何使用简单的软件界面和框架来快速实现他们的机器学习算法,系统设计师可以利用它来获取系统的最高性能。 内容导读 器件的架构 与Zynq7000相比,Zynq MPSoC 进一步整合了处理器系统中可选择的处理器数量和性能,最多可配备四个ARM Cortex-A53处理器内核和两个ARM Cortex-R5实时处理器内核。此外,该架构进一步拓展了可编程逻辑门阵列中的DSP切片和分布式存储器的规模。在开发当今新兴的AI应用程序时,全新的MPSoC架构将实现繁琐的算术计算和数据移动的过程变得十分轻松有趣。 设计工具和方法 SoC系统将包括硬件设计和软件设计两个方面。硬件设计会映射到SoC设备上的FPGA逻辑资源,而软件则运行在一个或多个系统内部署的处理器上。在此设计流程中,硬件和软件开发可以在很大程度上独立进行,然后整合。工程师使用他们选择的工具生成硬件系统的元素,并使用Xilinx Vivado开发环境实现系统集成和实现目标设备。软件开发人员可以使用Xilinx软件开发工具包(SDK)进行开发。这是传统的软硬件协同设计方法。 Xilinx的SDx开发环境则是一种更高级的开发方式。在Xilinx SDx工具中可以完全使用软件代码对整个系统进行描述,然后对各种计算进行资源分配(在用户指导下)。这使得面向软件的软硬件协同设计已经发生了相当大的转变。本书的第4章中更详细地讨论了关于SDx设计方法。 更先进的应用实现 本书还讨论了Zynq上许多应用程序的实现,包括FINN-R开源框架的有效性神经网络的实现、基于Python的Zynq设备框架和机器学习应用程序。我们可以预见到一些基于Zynq的更为优秀的产品,包括高级驾驶员辅助系统(ADAS),计算机视觉,“大数据”分析等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有意思科技

给与不给,我都会更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值