Versal? 是由多個高度耦合的可配置塊組成的自適應(yīng)計算加速平臺(ACAP)。這些塊包括NoC、AIE、PL和CIPS(CIPS本身包含不同的域:LPD和FPD)等,啟動這些塊時,需使用Vivado中的配置集進行配置。
本篇博文是Versal“從零開始”調(diào)試系列的首篇。
這么多互連塊乍看之下似乎很復(fù)雜...但實際不盡然。在本篇博文中,我們將探討這些啟動文件及其使用方式。
這就切入正題...希望您不介意我用首字母縮寫詞。
以下我準備的一個基礎(chǔ)設(shè)計,其中只有CIPS和NoC:

Control, Interfaces, and Processing Subsystem (CIPS)是所有Versal設(shè)計的通用IP,包含所有Versal器件通用的硬化IP。
其中主要包含兩個域:LDP和FDP。低功耗域(LPD)包含可配置啟動器件和I2C。全功耗域(FPD)則包含所有其它可配置IP,如GEM和USB等。此外還有AXI和調(diào)試接口,連接到PL、可配置NoC接口、時鐘、中斷和處理器子系統(tǒng),全都可在Vivado IP integrator內(nèi)根據(jù)您的設(shè)計需求進行配置。
片上網(wǎng)絡(luò)(NoC)經(jīng)高度耦合,可連接到PL IP和/或AIE以及DDR存儲器控制器。
所有這些配置二進制文件(CDO)都封裝到單一容器文件內(nèi),此文件稱為PDI文件,PDI表示可編程定義文件(Programmable Definition File)。
PDI:
如上所述,PDI包含所有可配置二進制文件。其中還包含用于執(zhí)行這些二進制文件的可執(zhí)行文件。
并且,如果PL包含帶有存儲器映射存儲器控制器的MicroBlaze,那么PDI中還包含存儲器映射接口(MMI)文件。
此 PDI 文件將在實現(xiàn)期間創(chuàng)建,并且可包含在 XSA 文件內(nèi)交付至 Vitis。來看看 impl_1 文件夾:

此處值得注意的兩個文件是PDI文件和BIF文件。
啟動鏡像格式:
啟動鏡像格式(BIF)文件包含所有啟動分區(qū)。
讓我們來一探究竟:
new_bif:
{
id_code=0x04ca8093
extended_id_code=0x01
id=0x2
image
{
name=WDI_FLAT
id=0x1c000000
partition
{
id=0x01
type=bootloader
file=gen_files/executable.elf
}
partition
{
id=0x09
type=pmcdata,load=0xf2000000
file=gen_files/pmc_data.cdo
}
partition
{
id=0x0C
type=cdo
file=gen_files/lpd_data.cdo
}
partition
{
id=0x0B
core=psm
file=static_files/psm_fw.elf
}
partition
{
id=0x03
type=cdo
file=design_1_wrapper.rcdo
}
partition
{
id=0x05
type=cdo
file=design_1_wrapper.rnpi
}
partition
{
id=0x08
type=cdo
file=gen_files/fpd_data.cdo
}
partition
{
id=0x0D
type=cdo
file=gen_files/subsystem.cdo
}
}
}
下表提取自《Versal 系統(tǒng)軟件開發(fā)指南》,可用于描述其中每個分區(qū):
| PDI 組件 | 描述 |
|
PLM elf (executable.elf) |
Platform Loader and Manager。 |
|
PLM CDO (pmc_data.cdo) |
器件拓撲 - 固定配置 PMC 配置 - 寄存器寫入/讀取 |
|
LPD CDO (lpd_data.cdo) |
PS LPD PM 初始化節(jié)點命令(SC、LBIST、BISR 和 MBIST) LPD 配置 - 寄存器寫入/讀取 |
|
PSM elf (psm_fw.elf) |
PSM ELF |
|
CFI 數(shù)據(jù) (.rcdo) |
PM 初始化節(jié)點命令(清理 PL、HB SC 和 GT MBIST) 寄存器寫入 CFU 適用于 CFI 數(shù)據(jù)的 DMA 鎖眼傳輸命令 寄存器寫入/讀取 CFU 如無 NPI: 全局信號 GMC_B、GRESTORE 和 GHIGH_B。- 寄存器寫入/讀取 全局信號 - GWE、EOS、EN_GLOb - 寄存器寫入/讀取 |
|
() [此文件與以上 .rcdo 文件合并] |
|
|
NPI CDO (.rnpi) |
PM 初始化節(jié)點命令(SC、BISR 和 MBIST) NPI 數(shù)據(jù)加載 - DMA 寫入/寄存器寫入 如果 CFI 存在: 全局信號 GMC_B、GRESTORE 和 GHIGH_B。- 寄存器寫入/讀取 NPI 序列 - 寄存器寫入/讀取 如果 CFI 存在 全局信號 - GWE、EOS、EN_GLOb - 寄存器寫入/讀取 隔離和 PL 復(fù)位命令 |
|
CPM CDO (cpm_data.cdo) |
PM 初始化節(jié)點命令(BISR 和 MBIST) 適用于 CPM 和 CPM PCSR 的寄存器寫入 |
|
AIE NPI CDO (ai_engine_data.cdo) |
AIE scan clear,BISR - PM 命令 AIE PLL 配置 - 寄存器寫入/PM 命令 AIE mem clear - PM 命令 |
|
FPD CDO (fpd_data.cdo) |
FPD 配置 - PM 初始化節(jié)點命令(SC、BISR 和 MBIST) 寄存器寫入 |
|
子系統(tǒng) CDO (subsystem.cdo) |
子系統(tǒng) CDO |
| DONE 位由 PLM 斷言有效 |
轉(zhuǎn)儲PDI:
用戶可以在Vitis中使用Bootgen實用工具來轉(zhuǎn)儲和查看PDI中的內(nèi)容:
bootgen-archversal-dump.pdi
用戶可以使用以下Bootgen命令從BIF創(chuàng)建PDI:
bootgen-archversal-image.bif-w-o.pdi
Platform Loader and Manager:
PLM負責(zé)加載分區(qū)(如上所示)和執(zhí)行平臺管理。所有CDO都加載到RAM中,然后執(zhí)行。ELF文件直接加載到目標存儲器中,然后執(zhí)行。不支持就地執(zhí)行。
要調(diào)試潛在的PLM故障,可在此處的表 14 中找到錯誤代碼。
在某些情況下,用戶可能需要修改Vitis生成的PDI,下面提供了兩個常見用例。
調(diào)試PLM:
用戶可以覆蓋PDI中的PLM,如UG1283中的第 129 頁所述,也可以重新生成PDI并導(dǎo)出硬件以將修改后的PDI添加到XSA中。
BIF文件如下所示:
new_bif:
{
image
{
{type=bootimage,file=base.pdi}
{type=bootloader,file=plm_debug.elf}
}
}
隨后,重新生成PDI。請務(wù)必保留PDI文件名(與Vivado生成的文件名相同):
bootgen-archversal-image{filename.bif}-w-o{design_1_wrapper.pdi}
如果用戶隨后在Vivado中導(dǎo)出硬件,那么,修改后的PDI將被添加到XSA中。
瀏覽CDO/RNPI文件:
用戶可以使用XSCT中的cdoutil將二進制文件轉(zhuǎn)換為可讀文本文件。以RNPI為例:
cdoutil-annotate-output-filedump.txt.rnpi
從上表中可以看到,rnpi文件包含PL復(fù)位命令。
我們可以在轉(zhuǎn)儲后的文本文件中查看這些命令:

在《Versal 寄存器參考資料》中可以交叉引用這些命令:

將定制CDO文件添加到PDI:
用戶還可以創(chuàng)建定制CDO文件,并將其添加到PDI中。
例如,我有一個IP,它在CIPS上受PS GPIO控制。
因此,我需要切換此PS GPIO:
首先創(chuàng)建一個txt文件,其中包含您希望在PDI內(nèi)執(zhí)行的寄存器寫入操作:
version2.0 mask_write0xff0b00180x10x1 mask_write0xff0b02c40x10x1 mask_write0xff0b02c80x10x1 mask_write0xff0b004c0x10x1
隨后,使用以下命令將此轉(zhuǎn)換為CDO文件:
cdoutil-output-binary-be-output-filecustom.cdocustom.txt
下一步,導(dǎo)航到Vivado工程目錄內(nèi)的 .runs_0/impl_1 文件夾,打開BIF文件,并追加以下內(nèi)容(在最后一個 } 內(nèi)):
image
{
name=custom_cdo
id=0x1234567
partition
{
id=0x12
type=cdo
file=custom.cdo
}
}
隨后,重新生成PDI并導(dǎo)出至硬件,更新后的PDI將添加到XSA:
bootgen-archversal-imagedesign_1_wrapper.bif-w-odesign_1_wrapper.pdi
依次單擊“File -> Export Hardware (Include Device Image)”(文件 > 導(dǎo)出硬件(包含器件鏡像))
運行Updatemem
如果Versal設(shè)計包含 MicroBlaze(含LMB存儲器),并且您要使用可執(zhí)行ELF來更新LMB BRAM,那么同樣可以使用以上方法。例如:
瀏覽至 .runs/impl_0 文件夾,并運行Updatemem。例如,這里我創(chuàng)建了更新后的RCDO。但您也可以保留名稱不變。否則,您需要更新BIF文件:

隨后,重新生成PDI并導(dǎo)出至硬件,更新后的PDI將被添加到XSA中:
bootgen-archversal-imagedesign_1_wrapper.bif-w-odesign_1_wrapper.pdi
依次單擊“File -> Export Hardware (Include Device Image)”(文件 > 導(dǎo)出硬件(包含器件鏡像))
總結(jié):
本篇博文并非Versal啟動文件的完整指南。
所有這些信息都能在TRM和SSDG中找到。我希望本文能夠向用戶簡要介紹 Versal 啟動文件,供用戶以此作為起點,按需進一步深入調(diào)研。
后續(xù)內(nèi)容
如何在 Vitis 中調(diào)試 Versal PLM
在這篇博文中,我們將探討如何在Vitis? 中調(diào)試Platform Loader Manager (PLM)。
審核編輯:湯梓紅
-
NoC
+關(guān)注
關(guān)注
0文章
42瀏覽量
12073 -
Vivado
+關(guān)注
關(guān)注
19文章
844瀏覽量
70342 -
啟動文件
+關(guān)注
關(guān)注
0文章
15瀏覽量
2424 -
Versal
+關(guān)注
關(guān)注
1文章
172瀏覽量
8319
發(fā)布評論請先 登錄
【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺之 Versal 介紹(2)
嵌入式系統(tǒng)與ARM啟動流程簡述
DXP導(dǎo)出SMT坐標文件的簡述步驟詳細說明
STM32啟動過程--啟動文件--分析
STM32啟動文件分析
使用QEMU啟動Versal VCK190
在Versal VCK190評估套件上使用器件固件升級(DFU)執(zhí)行USB輔助啟動模式測試
使用QEMU啟動Versal VCK190 ACAP
AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動流程介紹

Versal啟動文件簡述
評論