作者:Hello,Panda
Part 2 : Zynq UltraScale+ MPSoC启动
熊猫君在这里讨论启动(Boot),主要是想聊它的启动设备和启动方式。看看启动设备是否广泛支持,启动方式是否简洁高效。至于加密等安全性处理暂时不谈,先跑起来再说。
(1) 启动方式
和Zynq-7000类似,ZynqUltraScale+ MPSoC也是三级启动方式,只是Xilinx又给它们起了一个新名字,启动分为以下三级:
a) Pre-configuration:复位后执行PMU ROM代码,讲外部FSBL代码搬到内部的OCM。相当于Zynq 的Boot ROM执行。
b) Configuration:在内部的OCM代码,系统根据BOOTHeader的内容选择在CPU(Cortex-A53)还是RPU(Cortex-R5)上执行。负责初始化必要的时钟、内存和外设,加载Bit文件和用户代码等。
c) Post-configuration:执行用户代码。
(2) 启动设备
表1是ZynqUltraScale+支持启动设备的列表.
表1 支持启动设备的列表
从表1可以看出,相对于Zynq-7000,ZynqUltraScale+ 对启动设备支持上有了不小的改进:
a) 启动模式引脚采用专用的的模式选择引脚,不再和MIO复用;
b) QSPI Flash启动开始支持4字节地址模式,可以支持更大的寻址空间;
c) 任意的SD卡控制器都可用于启动,且支持SD3.0和MMC4.5标准,支持eMMC18电平;
d) SD卡文件系统支持FAT16/32,不仅支持BOOT.bin文件名,还支持BOOT0001~BOOT8192的任意文件名。
当然,PMU ROM启动的镜像搜索空间还是有一定限制的,至于FSBL起来以后从哪儿搬代码那就是你的事情了,爱哪儿都行咯,表2是PMU ROM搜索镜像的地址偏移范围。
表2 PMU ROM搜索镜像的地址偏移范围
启动模式 搜索偏移范围
QSPI-24bit Single 16MB
QSPI-24bit Dual 32MB
QSPI-32bit 256MB
QSPI-32bit Dual 512MB
对Xilinx UltraScale MPSoC感兴趣的同行可加入讨论群300148644进行进一步技术交流。