ZYNQ_MP启动过程分析

网上看了很多关于zynq的相关文章,大多基于zynq-7000系列写的。本文参考相关文档尽量清楚的阐述zynq_mp的启动过程。

zynq_mp是由多核组成,与7000系列有所不同的是,增加了RPU(APU核数根据不同系列也有所不同,笔者使用2个APU和2个RPU)。

根据文档,启动过程分为前置配置,配置以及后置配置(Pre-configuration Stage,Configuration Stage,Post-Configuration):

Pre-configuration Stage:由PUM_ROM完成。ROM为只读存储区,故该部分开发者不能修改。主要工作为:1.锁定JTAG接口。2.清零PMU寄存器。(不只是写入0至寄存器,同时读回,以确保写入成功)。3.可选执行自检(默认不启动)。4.检测PMU ROM完整性。5.释放PMU复位并开始执行。接下来硬件状态机将控制权交给PMU ROM,将执行以下操作:1.可选地对LPD和/或FPD中的寄存器进行清零。2.清空PUM RAM。3.验证PLL。4.验证供电范围。5.清空CSU,LPD,FPD的内存。5.对CSU ROM完整性检测。6。释放CSU复位并执行

Configuration Stage:在配置阶段,CSU的目标是定位用户提供的引导映像,并将FSBL加载到指定的位置。如果在引导映像中指定,还可以加载可选的PMU固件。1.初始化OCM。2.决定启动方式。3.查找正确的boot image。4.加载FSBL分区,如果有PUM固件,同时加载。5.目标CPU执行。

Post-Configuration:执行FSBL(非必要,无需修改FSBL)。1.进一步初始化:启动PL并初始化DDR控制器。初始化了Cortex-A53s的缓存、MMU和栈指针,以及Cortex-R5s的缓存、MPU、栈指针和TCM。还执行板级初始化-包括I2C、USB和PCIe接口。2.分区加载。可能存在多个分区需要加载(包括PMU FW,FSBL,bitstream,app)。3.移交。image可由用户控制放在那个位置,程序计数器将到该位置执行。

FSBL是用户可以修改的部分,其可以加载裸核程序,U-BOOT(linux),PL部分。也就是说无论加载什么系统或程序,Pre-configuration Stage和Configuration Stage是完全相同的。用户仅仅需要(甚至不需要)修改FSBL。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值