閒話Zynq UltraScale+ MPSoC (連載3)——啟動載入
作者: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