本文作者:AMD 工程師 Sowmya Ramakrishnan
本文鏈接上一篇文章開發(fā)者分享 | AMD Versal 自適應(yīng) SoC:eMMC 燒錄/啟動調(diào)試檢查表(上)
4.eMMC 器件燒錄
有多種受支持的方式可用于燒錄 eMMC 器件,包括使用 AMD Vivado IDE、使用 AMD Vitis GUI 或使用 U-Boot。
在通過 Vivado 或 Vitis 燒錄 eMMC 之前不需要進(jìn)行分區(qū),分區(qū)由該工具在后臺完成。
如果希望在燒錄之前手動對器件進(jìn)行分區(qū),可以通過 Linux 來完成。下方提供了一個示例:
https://adaptivesupport.amd.com/s/article/000035921?language=zh_CN#format
Vivado 和 Vitis 使用相同實(shí)用工具 (program_flash) 來燒錄 eMMC 器件。
a. Vivado IDE
燒錄前,建議在 JTAG 模式下從零開始重新上電啟動 (0000)。如果無法更改物理啟動模式,則可運(yùn)行《器件燒錄/啟動調(diào)試檢查表》中所談及的 versal_change_boot_mode.tcl 來通過軟件強(qiáng)制執(zhí)行 JTAG 啟動模式。在其他啟動模式下進(jìn)行燒錄可能導(dǎo)致意外失敗,AMD 對此不予支持。
器件燒錄/啟動調(diào)試檢查表:
https://adaptivesupport.amd.com/s/article/000033254?language=zh_CN#CheckDeviceStatus
如需了解在 Vivado 中燒錄閃存器件的詳細(xì)步驟,請參閱 UG908 中的“燒錄配置存儲器器件”部分。
UG908:
https://docs.amd.com/r/en-US/ug908-vivado-programming-debugging/Programming-Configuration-Memory-Devices
要觀察燒錄過程和詳細(xì)日志,請從 Shell 或命令提示符打開 Vivado(在 Windows 中 -> CMD -> 導(dǎo)航到 Vivado 安裝文件夾 -> 啟動二進(jìn)制文件)。Vivado 使用迷你 U-Boot 來燒錄閃存器件,U-Boot 日志會顯示在命令提示符窗口中。
Vivado 硬件管理器 GUI 用于添加和燒錄閃存器件,以及檢查啟動后目標(biāo)器件的狀態(tài)。
打開 Vivado 硬件管理器并連接到 AMD Versal 自適應(yīng) SoC 器件。
添加 eMMC 是對其進(jìn)行燒錄的第一步。通過右鍵單擊 Versal 器件并選擇“Add Configuration Memory Device”(添加配置存儲器器件)來完成此操作。

選中 eMMC 閃存,該配置存儲器器件現(xiàn)已添加到硬件目標(biāo)。要繼續(xù)操作,Vivado 器件管理器會發(fā)出如下提示,詢問您現(xiàn)在是否要對配置存儲器器件進(jìn)行燒錄:“Do you want to program the configuration memory device now?”。單擊“OK”(確定)以繼續(xù)。

“Files to load”(要加載的文件):此處添加啟動鏡像。這些啟動鏡像可以使用 Vivado 或 Bootgen/Vitis(如果添加軟件分區(qū))來創(chuàng)建。
如果文件名不是推薦的“boot.bin”,Vivado 會發(fā)出警告。
要配置系統(tǒng),就需要“Initialization PDI”(初始化 PDI),隨后該工具才能訪問并燒錄閃存。它等同于 AMD Zynq 7000 和 MPSoC 流程中的 FSBL.elf。建議使用小尺寸的簡單 PDI。用戶可以使用來自 Vivado 的 PDI(無需 Vitis 添加的額外組件)作為初始化 PDI。
“Erase”(擦除):擦除配置存儲器器件的內(nèi)容。
“Blank Check”(空白檢查):檢查配置存儲器器件,確保燒錄前器件中不含數(shù)據(jù)。
“Program”(燒錄):使用所選器件鏡像對配置存儲器器件進(jìn)行燒錄。
“Verify”(驗(yàn)證):驗(yàn)證配置存儲器器件內(nèi)容與所選器件鏡像是否匹配。
單擊“OK”即可在配置存儲器器件上啟動選擇操作。
使用 Vivado 燒錄閃存時(shí)如果遇到錯誤該怎么辦?
發(fā)生錯誤時(shí),有 3 種日志有助于調(diào)試。
(1)來自 Vivado Tcl 控制臺的 log 日志
以下是由于在 RAW Boot 分區(qū)中加載大于 2MB 的文件而導(dǎo)致燒錄失敗的示例。


(2) U-Boot log 日志

(3)該日志來自于初始化 PDI 中的 PLM
閃存燒錄期間,首先運(yùn)行初始化 PDI。此 PDI 須正確執(zhí)行。如需了解如何收集此日志,請參閱《器件燒錄/啟動調(diào)試檢查表》中的描述。
器件燒錄/啟動調(diào)試檢查表:
https://adaptivesupport.amd.com/s/article/000033254?language=zh_CN#LoadingPDI
b. Vitis GUI
使用 Vitis GUI 燒錄 eMMC 閃存與上述 Vivado 方法十分相似。同樣建議使用 JTAG 模式執(zhí)行燒錄。同樣需要指定 2 個 PDI 文件,分別在“Image File”(圖像文件)和“Init File”(初始化文件)中指定這些文件,如下所示。如需了解更多詳細(xì)信息,請參閱 UG1400 的“閃存燒錄”部分。
UG1400 :
https://docs.amd.com/r/en-US/ug1400-vitis-embedded/Programming-Flash
打開 Vitis 工作空間
導(dǎo)航到“Vitis -> Program Flash”(Vitis > 閃存燒錄)

“Image File”(鏡像文件):這是啟動鏡像。
“Partition Type”(分區(qū)類型):選擇 fat32、raw-boot-1、raw-boot-2 或 raw-user。
“Init File”(初始化文件):提供初始化文件路徑。
“Blank check after erase”(擦除后執(zhí)行空白檢查):該選項(xiàng)將通過執(zhí)行空白檢查來驗(yàn)證是否已正確完成擦除操作。它會讀回內(nèi)容并檢查已擦除區(qū)域是否為空白。
“Verify after Flash”(燒錄后驗(yàn)證):驗(yàn)證操作會與閃存燒錄操作進(jìn)行交叉檢查。該選項(xiàng)會讀回閃存內(nèi)容,并與燒錄后的數(shù)據(jù)進(jìn)行交叉檢查。
單擊“Program”(燒錄)并在“Output”(輸出)部分中觀察日志。
以下是燒錄 eMMC 的 FAT32 分區(qū)的示例。

使用 Vitis 燒錄閃存期間如果遇到錯誤該怎么辦?
應(yīng)收集以下信息:
迷你 U-Boot log 日志 - Vitis 將自動在控制臺上顯示 U-Boot 日志。
PLM log 日志。如需了解如何收集此日志,請參閱《器件燒錄/啟動調(diào)試檢查表》中的描述。
重要:截至目前,2023.2 Vitis 僅支持將 eMMC 分區(qū) 0 燒錄為 FAT32 或 RAW-User。無法使用 Vitis 燒錄 RAW Boot 分區(qū) 1 和 2。(如果在 GUI 中選擇了 Boot 分區(qū) 1 或 Boot 分區(qū) 2,工具會自動切換到 RAW-User)。此問題正在調(diào)查中,因此建議使用 Vivado 或 U-Boot 來燒錄 eMMC RAW Boot 分區(qū) 1 和 2。
c. U-Boot
U-Boot 也可用于燒錄 eMMC。啟動進(jìn)入 U-Boot 后,用戶可以使用多條 U-Boot 命令來燒錄器件。這些命令包括 mmc part、mmc erase、mmc write、fatwrite 等。下方提供了一些常見示例。
https://adaptivesupport.amd.com/s/article/000035921?language=zh_CN#commands
啟動進(jìn)入 U-Boot。如果采用 AMD 參考板,那么您可使用下方針對您的工具版本提供的預(yù)構(gòu)建鏡像。如果采用定制開發(fā)板,那么您需要構(gòu)建鏡像。建議使用 PetaLinux 工具來生成鏡像。UG1144 包含有關(guān)如何生成此處使用的 BOOT.BIN 文件的詳細(xì)步驟。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842316/Linux+Prebuilt+Images
UG1144:
https://docs.amd.com/r/en-US/ug1144-petalinux-tools-reference-guide/Setting-Up-Your-Environment
請確保器件采用的是 JTAG 啟動模式。如果無法更改物理啟動模式,則可運(yùn)行《器件燒錄/啟動調(diào)試檢查表》中所談及的 versal_change_boot_mode.tcl 來通過軟件強(qiáng)制執(zhí)行 JTAG 啟動模式。
器件燒錄/啟動調(diào)試檢查表:
https://adaptivesupport.amd.com/s/article/000033254?language=zh_CN#CheckDeviceStatus
連接到終端中的器件 PS COM 端口。在 XSCT 中,導(dǎo)航到正確的目錄,并執(zhí)行以下命令:
xsct% device program BOOT.BIN
您應(yīng)可在 UART 控制臺終端中看到器件啟動進(jìn)入 U-Boot。

下面顯示了在 eMMC 器件的 RAW Boot 分區(qū) 1 中燒錄啟動鏡像的示例。
在 XSCT 終端上,使用以下命令將啟動鏡像寫入 DDR:
xsct% targets -set -nocase -filter {name =~ "Versal *"}xsct% dow -data -force BOOT.bin 0x70000000

在 U-Boot 提示符處,執(zhí)行以下命令:
mmc info - 顯示 eMMC 器件信息
part list mmc 0 - 列出 eMMC 器件 0 中的現(xiàn)有分區(qū)
mmc dev 0 0 - 選擇要切換到并對其進(jìn)行操作的 mmc 器件。在此例中,已選中 mmc 器件 0 和分區(qū) 0
mmc erase 0 0x4000 - 擦除 RAW user 分區(qū)中的扇區(qū)
mmc dev 0 1 - 已選中 mmc 器件 0 和分區(qū) 1
mmc erase 0 0x4000 - 擦除 RAW Boot 分區(qū) 1 中的扇區(qū)
mmc write 70000000 0 - 將指定扇區(qū)從 DRAM 寫入 mmc
mmc dev 0 2 - 已選中 mmc 器件 0 和分區(qū) 2
mmc erase 0 0x4000 - 擦除 RAW Boot 分區(qū) 2 中的扇區(qū)

將啟動模式切換至 eMMC 并通過給開發(fā)板掉電并重新上電或者發(fā)出 POR 來復(fù)位系統(tǒng)。以下提供了將啟動模式更改為 eMMC 的腳本。它對 versal_change_boot_mode.tcl 作了些許修改。

5.以 eMMC 模式啟動
此時(shí),閃存燒錄已經(jīng)過調(diào)試,您可以相信閃存已燒錄完成并且已準(zhǔn)備好啟動。
首先,將啟動模式切換至 eMMC (0110)。建議更改物理 MODE 管腳。您也可以使用以下腳本來將啟動模式強(qiáng)制更改為 eMMC。

隨后,您可給系統(tǒng)上電,這樣 Versal 器件將嘗試從 eMMC 啟動。
啟動期間如果遇到錯誤該怎么辦?
提交技術(shù)支持 case 時(shí),請?zhí)峁┮韵滦畔?,這些信息至關(guān)重要:
錯誤狀態(tài)日志??稍?Vivado 硬件管理器或 XSCT 中收集這些日志。
JTAG 狀態(tài)日志。可在 Vivado 硬件管理器或 XSCT 中收集這些日志。
PLM 日志。此日志可從 UART 控制臺或 XSCT 中收集,欲知詳情,請參閱《器件燒錄/啟動調(diào)試檢查表》中的描述。
請參閱《器件燒錄/啟動調(diào)試檢查表》以獲取錯誤狀態(tài)日志和 JTAG 狀態(tài)日志的兩種收集方法的示例。
器件燒錄/啟動調(diào)試檢查表:
https://adaptivesupport.amd.com/s/article/000033254?language=zh_CN#CheckDeviceStatus
如需了解有關(guān) JTAG_STATUS 寄存器和 ERROR_STATUS 寄存器的詳細(xì)信息,請參閱 AM011 的“測試和調(diào)試”章節(jié)。
AM011:
https://docs.amd.com/r/en-US/am011-versal-acap-trm/Test-and-Debug?tocId=S1ymOrXeGoLR023M1PAtYw
識別啟動失敗時(shí)所處的階段非常重要。是 BootROM 執(zhí)行失敗?還是 PLM 執(zhí)行失敗?
請參閱“啟動錯誤示例”部分,獲取 BootROM/PLM 錯誤示例和解碼策略。
https://adaptivesupport.amd.com/s/article/000035928?language=zh_CN#error
如果您當(dāng)前使用的是 AMD 參考板,運(yùn)行下方提供的預(yù)構(gòu)建鏡像可能會有所幫助。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842316/Linux+Prebuilt+Images
如果懷疑啟動鏡像中的任意分區(qū)損壞,那么對可疑分區(qū)添加校驗(yàn)和可能會有所幫助。
下方提供了 eMMC 啟動期間常見的 BootROM 和 PLM 錯誤的參考資料 。
https://adaptivesupport.amd.com/s/article/000035921?language=zh_CN#error
6.啟動錯誤示例
BootROM 和 PLM 錯誤的示例及其解碼方法:
BootROM 錯誤
請參閱 AM011 中的“BootROM 錯誤代碼表”參考資料來進(jìn)行錯誤解碼。
AM011:
https://docs.amd.com/r/en-US/am011-versal-acap-trm/BootROM-Error-Code-Table
場景 1:未連接 eMMC 啟動模塊,以 eMMC 模式啟動。
Vivado 硬件管理器寄存器列表:


在此 BootROM 故障示例中,BOOTROM FIRST ERROR 是十六進(jìn)制 0x22b。
請參閱該表格,發(fā)生的錯誤如下。

BootROM 錯誤可能與硬件問題(如電源)有關(guān)。請務(wù)必遵循上述步驟中的所有要求以及PDM 工具中的建議來進(jìn)行操作。
PDM 工具:
https://www.amd.com/zh-cn/products/software/adaptive-socs-and-fpgas/power-design-manager.html
場景 2:閃存燒錄操作中途中止,從 eMMC 啟動


PLM 錯誤
XXXX - 重大錯誤代碼 - xplmi_status.h 中定義的 PLM/LOADER/XPLMI 錯誤代碼。
場景 3:eMMC 閃存中未燒錄任何鏡像。
UART 控制臺:

在以上 PLM 錯誤示例中,PLM MAJOR ERROR 是十六進(jìn)制 0x31D。請參閱代碼,發(fā)生的錯誤如下。

如果遇到 PLM 錯誤,通常表示硬件正常。如果您使用 PetaLinux 來開發(fā)嵌入式操作系統(tǒng)組件,并且錯誤發(fā)生在 ATF、U-Boot 或 Linux 中,那么最好調(diào)查一下 PetaLinux 組件,可能會有所幫助。如需了解更多信息,請參閱 UG1144。
7.結(jié)論
本篇博文中提供的指導(dǎo)信息演示了一種全面的方法用于理解、配置 Versal 中的 eMMC 燒錄/啟動流程并對其進(jìn)行故障排除。
-
amd
+關(guān)注
關(guān)注
25文章
5686瀏覽量
140005 -
閃存
+關(guān)注
關(guān)注
16文章
1900瀏覽量
117299 -
emmc
+關(guān)注
關(guān)注
7文章
263瀏覽量
56032 -
燒錄
+關(guān)注
關(guān)注
8文章
317瀏覽量
37102 -
Versal
+關(guān)注
關(guān)注
1文章
175瀏覽量
8479
原文標(biāo)題:開發(fā)者分享 | AMD Versal? 自適應(yīng) SoC:eMMC 燒錄/啟動調(diào)試檢查表(下)
文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
在AMD Versal自適應(yīng)SoC上使用QEMU+協(xié)同仿真示例
使用Aurora 6466b協(xié)議實(shí)現(xiàn)AMD UltraScale+ FPGA與AMD Versal自適應(yīng)SoC的對接
【ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計(jì)算加速平臺之 Versal 介紹(2)
AMD Versal自適應(yīng)SoC內(nèi)置自校準(zhǔn)的工作原理
常規(guī)的PCB設(shè)計(jì)檢查表
Versal 自適應(yīng)SoC設(shè)計(jì)指南
Versal自適應(yīng)SoC系統(tǒng)集成和 確認(rèn)方法指南
AMD率先推出符合DisplayPort? 2.1 8K視頻標(biāo)準(zhǔn)的FPGA和自適應(yīng)SoC
AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動流程介紹
AMD Versal自適應(yīng)SoC器件Advanced Flow概覽(上)
AMD Versal自適應(yīng)SoC器件Advanced Flow概覽(下)
AMD Versal自適應(yīng)SoC中eMMC燒錄/啟動調(diào)試檢查表(下)
評論