伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Zynq UltraScale+ MPSoC平臺上通過JTAG啟動嵌入式Linux鏡像

FPGA技術江湖 ? 來源:OpenFPGA ? 2026-01-13 11:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

以下文章來源于OpenFPGA,作者碎碎思

在之前文章中,我們介紹了如何使用 XSCT 工具通過 JTAG 在 Zynq SoC 上啟動嵌入式 Linux 鏡像(從 JTAG 啟動 Zynq-7000 嵌入式 Linux:使用 XSCT 全流程教程)。本文則進一步講解如何在 Zynq UltraScale+ MPSoC 平臺上通過 JTAG 逐步啟動 Linux,并提供了完整的過程與關鍵命令。只要按步驟操作,即使是復雜的 Linux 鏡像也能成功通過 JTAG 啟動。

所需條件與工具

要完成 JTAG 啟動,你需要準備以下內容:

支持 JTAG 調試的 Zynq UltraScale+ MPSoC 板

與目標板連接的 JTAG 線纜(例如 SmartLynq / Platform Cable)

安裝了 Xilinx 工具(如 Vitis / SDK)的開發主機

可用的 Linux 鏡像、設備樹、ATF、U-Boot 等組件

操作概要(步驟不可改變)

整體流程分為 8 個步驟,每一步都對最終啟動至關重要:

啟動 XSCT 命令行

配置 FPGA(下載 bitstream)

下載并運行 PMU Firmware

配置處理系統

下載并執行第一階段引導加載器(FSBL)

下載第二階段引導加載器(U-Boot)

下載 ARM Trusted Firmware

下載并啟動 Linux 鏡像

1、如何啟動 XSCT

XSCT(Xilinx Software Commandline Tool)用于通過 JTAG 與設備通信

/Xilinx/Vitis/2021.1/bin/xsct

或者開始菜單里尋找。

啟動后,會進入交互式命令行,等待你輸入各種引導命令。

1124 ~ > /opt/Xilinx/Vitis/2021.1/bin/xsct
****** Xilinx Software Commandline Tool (XSCT) v2021.1
 **** SW Build 3246112 on 2021-06-09-1456
  ** Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.
xsct%help
Available Help Categories
breakpoints  - Target Breakpoints/Watchpoints.
connections  - Target Connection Management.
device    - Device Configuration System.
download   - Target Download FPGA/BINARY.
hsi      - HSI commands.
ipi      - IPI commands to Versal PMC.
jtag     - JTAG Access.
memory    - Target Memory.
miscellaneous - Miscellaneous.
petalinux   - Petalinux commands.
projects   - Vitis Projects.
registers   - Target Registers.
reset     - Target Reset.
running    - Program Execution.
streams    - Jtag UART.
svf      - SVF Operations.
tfile     - Target File System.
Type"help"followed by above"category"formore details or
help" followed by the keyword "commands" to list all the commands
xsct%

2、連接目標設備

在 XSCT 中使用 connect 命令建立 JTAG 連接,例如:

connect -url tcp::3121

不同 JTAG 線纜的 IP 地址不同:

SmartLynq:通過板上顯示的 IP

SmartLynq(USB 直連):通常是 10.0.0.2

Platform Cable(國內常用JTAG):通常是 127.0.0.1

默認端口是 3121。

3、列出連到 JTAG 鏈的設備

連接成功后,可以查看 JTAG 鏈上所有目標:

xsct% targets                                              
 1 PS TAP
  2 PMU
  3 PL
 4 PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Running)
   10 Cortex-A53#1(Running)
   11 Cortex-A53#2(Running)
   12 Cortex-A53#3(Running)

執行命令后看到的列表targets代表連接到 JTAG 鏈的每個設備。設備可以是單元、CPU 內核、FPGA 等。可以對每個設備進行管理。有時可能無法在目標設備和 JTAG 電纜之間建立可靠的連接。在這種情況下,應該檢查錯誤消息并根據消息采取相應措施。例如,當沒有 JTAG 連接或電路板斷電時,將顯示如下所示的錯誤提示。

xsct% targets
 1 whole scan chain (board power off)

最常遇到的問題與使用的 JTAG 頻率有關。JTAG 鏈路的硬件結構對其最佳頻率有顯著影響。某些物理特性,例如電纜長度、目標數量等,都可能影響合適的 JTAG 頻率。在這種情況下,XSCT 工具會生成一些錯誤消息,指示與目標的連接不穩定。可以在下方看到一些示例。

xsct% targets
 1 whole scan chain (Unknown device configuration)
xsct% targets
 1 whole scan chain (Unknown IR length)
xsct% targets
 1 whole scan chain (too many devices)

當出現此類輸出時,應該重新調整 JTAG 頻率,以建立可靠穩定的連接。可以通過調用jtag frequency -list以下方法查找 JTAG 電纜支持的頻率。然后,可以從列表中選擇合適的頻率。也可以選擇任意頻率,該實用程序會自動處理舍入誤差。

xsct% jtag targets 1
xsct% jtag frequency -list
125000 250000 500000 1000000 2000000 3000000 4000000 6000000 7500000 10000000 12000000 13000000
15000000 20000000 30000000 40000000 50000000 60000000 70000000 80000000 90000000 100000000
xsct% jtag frequency 7500000
7500000
xsct% jtag frequency 7000000
7017543

4、中斷系統

在開始操作之前,CPU必須中斷并重置為初始狀態。沒有此步驟,將無法管理處理系統。Zynq SoC 中的此步驟有所不同。要重置系統:

xsct% targets -set-nocase -filter {name =~"*PSU*"}
xsct% rst
xsct% Info: Cortex-A53#0(target 9) Stopped at 0xffff0000 (Reset Catch)
xsct% targets
 1 PS TAP
  2 PMU
  3 PL
 4* PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   10 Cortex-A53#1(Reset)
   11 Cortex-A53#2(Reset)
   12 Cortex-A53#3(Reset)

5、配置FPGA

由于 Zynq UltraScale+ SoC 實際上是一款 FPGA 芯片,因此需要硬件鏡像才能訪問其底層組件,例如 DDR以太網、串行接口等。通過 JTAG 下載完整的 FPGA 鏡像非常簡單,只需使用fpga以下命令即可。

xsct% targets
 1 PS TAP
  2 PMU
  3 PL
 4* PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   10 Cortex-A53#1(Reset)
   11 Cortex-A53#2(Reset)
   12 Cortex-A53#3(Reset)
xsct% targets -set-nocase -filter {name =~"*PS TAP*"}
xsct% fpga"system.bit"                                  
100%  25MB  1.2MB/s 00:21

下載 FPGA 鏡像會清除現有的 PL 鏡像并將其替換為新鏡像。還可以通過向同一命令提供選項來管理可編程邏輯。按 Enter 鍵help fpga可查看更多信息。目前,將 FPGA 鏡像下載到硬件就足夠了,其余內容超出了本教程的范圍。

6、PMU固件

Zynq UltraScale+ SoC 包含一個專用的 MicroBlaze 處理器,用于執行平臺管理。PMU 代表平臺管理單元。其主要職責是在啟動前初始化部分系統組件、管理分配給各個電源島的電源以及處理系統錯誤。固件能夠與運行在處理系統單元 (Processing System Unit) 上的用戶應用程序通信。用戶可以創建請求來根據需要管理平臺。此外,還可以使用 Vitis IDE 修改 PMU 固件。可以參考 Zynq UltraScale+ 的技術參考手冊(即 UG1085 )來進一步了解 PMU 固件的詳細信息和使用場景。

如果不禁用處理系統單元 (PSU) 上的某些安全門,就無法訪問位于平臺管理單元 (PMU) 內的 MicroBlaze 處理器。因此,我們的第一步是禁用這些安全門。然后,我們將 PMU 固件下載到目標處理器并運行它。為了確保安全,我們將重新啟用這些安全門。

xsct% targets -set-nocase -filter {name =~"*PSU*"}                           
xsct% targets                                              
 1 PS TAP
  2 PMU
  3 PL
 4* PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   10 Cortex-A53#1(Reset)
   11 Cortex-A53#2(Reset)
   12 Cortex-A53#3(Reset)
xsct% mask_write 0xFFCA0038 0x1C0 0x1C0
xsct% targets                                              
 1 PS TAP
  2 PMU
   13 MicroBlaze PMU (Sleeping. No clock)
  3 PL
 4* PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   10 Cortex-A53#1(Reset)
   11 Cortex-A53#2(Reset)
   12 Cortex-A53#3(Reset)

禁用安全門后,MicroBlaze 內核立即出現在 JTAG 目標鏈上。通過獲取處理器的訪問權限,我們現在可以下載并運行 PMU 固件。

xsct% targets -set-nocase -filter {name =~"*MicroBlaze PMU*"}
xsct% dow"pmufw.elf"                                   
Downloading Program -- pmufw.elf
section, .vectors.reset: 0xffdc0000 - 0xffdc0007
section, .vectors.sw_exception: 0xffdc0008 - 0xffdc000f
section, .vectors.interrupt: 0xffdc0010 - 0xffdc0017
section, .vectors.hw_exception: 0xffdc0020 - 0xffdc0027
section, .text: 0xffdc0050 - 0xffdd1057
section, .rodata: 0xffdd1058 - 0xffdd2287
section, .data: 0xffdd2288 - 0xffdd639b
section, .sdata2: 0xffdd639c - 0xffdd639f
section, .sdata: 0xffdd63a0 - 0xffdd639f
section, .sbss: 0xffdd63a0 - 0xffdd639f
section, .bss: 0xffdd63a0 - 0xffdda0db
section, .srdata: 0xffdda0dc - 0xffdda9f7
section, .stack: 0xffdda9f8 - 0xffddb9f7
section, .xpbr_serv_ext_tbl: 0xffddf6e0 - 0xffddfadf
100%  0MB  0.2MB/s 00:00                                       
Setting PC to Program Start Address 0xffdd0a04
Successfully downloaded pmufw.elf
xsct% Info: MicroBlaze PMU (target 13) Stopped at 0xffdc8534 (Stop)
xsct% con                                                
Info: MicroBlaze PMU (target 13) Running

如果一切順利,我們可以重新啟用安全門,以防止訪問 MicroBlaze PMU,并繼續進行 PSU 初始化。

xsct% targets -set-nocase -filter {name =~"*PSU*"}
xsct% mask_write 0xFFCA0038 0x1C0 0x0
xsct% targets                                              
 1 PS TAP
  2 PMU
  3 PL
 4* PSU
  5 RPU (Reset)
    6 Cortex-R5#0(No Power)
    7 Cortex-R5#1(No Power)
  8 APU
    9 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   10 Cortex-A53#1(Reset)
   11 Cortex-A53#2(Reset)
   12 Cortex-A53#3(Reset)

7、APU和PSU初始化

在將第一階段引導加載程序下載到應用處理器單元 (APU) 之前,必須移除復位。此外,必須根據硬件映像(HDF/XSA 文件)初始化處理系統單元。從 Vivado 設計工具導出的硬件映像中包含一個名為“psu_init.tcl”的 TCL 腳本。以下是執行這些步驟的命令。

xsct% targets -set-nocase -filter {name =~"*APU*"}
xsct% targets
 1 PS TAP
  2 PMU
  3 PL
 5 PSU
  6 RPU (Reset)
    7 Cortex-R5#0(No Power)
    8 Cortex-R5#1(No Power)
  9* APU
   10 Cortex-A53#0(Reset Catch, EL3(S)/A64)
   11 Cortex-A53#1(Reset)
   12 Cortex-A53#2(Reset)
   13 Cortex-A53#3(Reset)
xsct% mwr 0xffff0000 0x14000000
xsct% mask_write 0xFD1A0104 0x501 0x0
xsct%sourcepsu_init.tcl
xsct% psu_init

如果電源單元初始化成功,屏幕上將不會顯示任何輸出。完成此步驟后,我們便獲得了對電源單元資源的訪問權限。

8、第一階段引導加載程序(FSBL)

FSBL 是Zynq UltraScale+ 啟動時在應用處理器上運行的第一個程序(實際上是第二個,BootROM 首先運行) 。它負責在調用 SSBL (第二階段引導加載程序)或所需的裸機應用程序之前配置硬件并初始化一些組件。可以使用自動生成的 FSBL,也可以編寫自己的 FSBL。要下載并運行 FSBL,請調用以下命令。請注意,FSBL 必須在應用處理單元的第一個 Cortex-A53 內核上運行。因此,我們需要相應地選擇目標內核。

xsct% targets -set-nocase -filter {name =~"*A53#0*"}
xsct% targets
 1 PS TAP
  2 PMU
  3 PL
 5 PSU
  6 RPU (Reset)
    7 Cortex-R5#0(No Power)
    8 Cortex-R5#1(No Power)
  9 APU
   10* Cortex-A53#0(Reset Catch, EL3(S)/A64)
   11 Cortex-A53#1(Reset)
   12 Cortex-A53#2(Reset)
   13 Cortex-A53#3(Reset)
xsct% dow"zynqmp_fsbl.elf"
Downloading Program -- zynqmp_fsbl.elf
  section, .text: 0xfffc0000 - 0xfffcf88b
  section, .note.gnu.build-id: 0xfffcf88c - 0xfffcf8af
  section, .init: 0xfffcf8c0 - 0xfffcf8f3
  section, .fini: 0xfffcf900 - 0xfffcf933
  section, .rodata: 0xfffcf940 - 0xfffcfe6f
  section, .sys_cfg_data: 0xfffcfe80 - 0xfffd0657
  section, .mmu_tbl0: 0xfffd1000 - 0xfffd100f
  section, .mmu_tbl1: 0xfffd2000 - 0xfffd3fff
  section, .mmu_tbl2: 0xfffd4000 - 0xfffd7fff
  section, .data: 0xfffd8000 - 0xfffd932f
  section, .sbss: 0xfffd9330 - 0xfffd933f
  section, .bss: 0xfffd9340 - 0xfffdb87f
  section, .heap: 0xfffdb880 - 0xfffdbc7f
  section, .stack: 0xfffdbc80 - 0xfffddc7f
  section, .dup_data: 0xfffddc80 - 0xfffdefaf
  section, .handoff_params: 0xfffe9e00 - 0xfffe9e87
  section, .bitstream_buffer: 0xffff0040 - 0xfffffc3f
100%  0MB  0.3MB/s 00:00
Setting PC to Program Start Address 0xfffc0000
Successfully downloaded zynqmp_fsbl.elf
xsct% con
Info: Cortex-A53#0(target 10) Running
xsct% after 4000; stop
Info: Cortex-A53#0(target 10) Stopped at 0xfffce2f0 (External Debug Request)

啟動 FSBL 后,我們讓它運行一段時間完成操作。然后,我們在交接點手動停止它。由于我使用的是定制板,其啟動引腳被硬配置為 QSPI 啟動模式,所以我修改了 FSBL 代碼,強制其使用 JTAG 啟動模式。以下是我的 UART 輸出:

Xilinx Zynq MP First Stage Boot Loader (Modified)
Release 2021.1  Jun 20 2022 - 1015
This FSBL has been modifiedinorder to boot from the JTAG only!
Forcing the Boot Mode as JTAG! Check the xfsbl_initialization.c file.

9、第二階段引導加載程序(U-Boot)

與常規啟動流程類似,SSBL 遵循 FSBL。由于我們使用的是 PetaLinux 構建系統來生成鏡像,因此我們將使用常用的 U-Boot 作為 SSBL 程序。也可以使用不同的引導加載程序,但流程應該類似。

U-Boot 需要一個設備樹二進制文件,因此我們需要在啟動 U-Boot 之前將其加載到內存中。該設備必須下載到內存中預先設定的地址。在 PetaLinux 項目中,此配置位于名為CONFIG_SUBSYSTEM_UBOOT_DEVICETREE_OFFSET的參數下。可以在我之前的文章中找到一個簡單的單行 Bash 命令,可以更快地找到所需的配置。在我的示例中,該地址為0x100000 。請注意,由于該二進制文件不是可執行文件,因此我們使用-data選項來下載它。

xsct% targets -set-nocase -filter {name =~"*A53#0*"}
xsct% dow -data"system.dtb"0x100000
100%  0MB  0.2MB/s 00:00
Successfully downloaded system.dtb

U-Boot 現在可以下載到內存中了。

xsct% targets -set-nocase -filter {name =~"*A53#0*"}
xsct% dow "u-boot.elf"
Downloading Program -- u-boot.elf
section, .text: 0x08000000 - 0x080001af
section, .efi_runtime: 0x080001b0 - 0x080011bf
section, .text_rest: 0x08001800 - 0x080c8c23
section, .rodata: 0x080c8c28 - 0x080fa111
section, .hash: 0x080fa118 - 0x080fa12f
section, .data: 0x080fa130 - 0x0810863f
section, .got: 0x08108640 - 0x08108647
section, .got.plt: 0x08108648 - 0x0810865f
section, .u_boot_list: 0x08108660 - 0x0810d3f7
section, .efi_runtime_rel: 0x0810d3f8 - 0x0810d5a7
section, .rela.dyn: 0x0810d5a8 - 0x08125877
section, .bss_start: 0x08125878 - 0x08125877
section, .bss: 0x08125880 - 0x0813e3c7
section, .bss_end: 0x0813e3c8 - 0x0813e3c7
100%  1MB  0.3MB/s 00:04
Setting PC to Program Start Address 0x08000000
Successfully downloaded u-boot.elf

PS1:

注意到了嗎?這一步其實有點棘手,而且一旦出錯就很難找出原因。與 FSBL 不同,我們并沒有在將 U-Boot 下載到內存后立即啟動它。這是因為 Zynq UltraScale+ 的架構與 Zynq SoC 相比,情況要復雜一些。Zynq UltraScale+ 的應用處理器基于 ARMv8 架構,而 Zynq 的應用處理器則基于 ARMv7 架構。

PS2:

為了符合 ARVv8 拓撲結構,Linux 內核啟動時運行在 ARM 異常級別 1/0。在該異常級別下,Linux 內核對系統或安全關鍵寄存器的訪問受到硬件限制。Linux 與這些受限設備的所有交互都通過運行在異常級別 3 的 ARM 可信固件 (ATF) 進行路由。如果沒有 ATF, Linux 鏡像可能根本無法啟動。

10、ARM 可信固件 (ATF)

如前所述,訪問特權區域需要 ARM 可信固件 (ATF)。ATF 作為代理,代表操作系統修改系統關鍵設置。為了使操作系統(在本例中為 Linux)能夠訪問這些資源,必須對其進行修改,以支持 ATF 導出到操作系統自身的安全監控調用。這些步驟超出了本教程的范圍。可以參考Zynq UltraScale+ 技術參考手冊 UG1085 的第 16 章“16-System Protection Units”。接下來,我們將 ATF 下載到內存中。

xsct% targets -set-nocase -filter {name =~"*A53#0*"}
xsct% targets
 1 PS TAP
  2 PMU
  3 PL
 5 PSU
  6 RPU
    7 Cortex-R5#0(No Power)
    8 Cortex-R5#1(No Power)
  9 APU
   10* Cortex-A53#0(External Debug Request, EL3(S)/A64)
   11 Cortex-A53#1(Reset)
   12 Cortex-A53#2(Reset)
   13 Cortex-A53#3(Reset)
xsct% dow "bl31.elf"
Downloading Program -- bl31.elf
section, .text: 0xfffea000 - 0xffff1fff
section, .rodata: 0xffff2000 - 0xffff2fff
section, .data: 0xffff3000 - 0xffff679d
section, stacks: 0xffff67c0 - 0xffff78bf
section, .bss: 0xffff78c0 - 0xffff863f
section, xlat_table: 0xffff9000 - 0xffffdfff
section, coherent_ram: 0xffffe000 - 0xffffefff
100%  0MB  0.3MB/s 00:00
Setting PC to Program Start Address 0xfffea000
Successfully downloaded bl31.elf

我們沒有重新啟動處理器,因為還缺少一樣東西,那就是 Linux 內核本身。

11、完整的 Linux 鏡像

本教程的最后一步是將 Linux 內核鏡像下載到 DDR 內存中,并通過 U-Boot 啟動它。用于下載鏡像的地址有限制。必須將鏡像放置在 DDR 內存的空段中,并且不能損壞內存中已有的任何其他鏡像。如果你已經創建了一個 PetaLinux 項目,可以在配置文件中通過帶有 CONFIG_SUBSYSTEM_UBOOT_FIT_IMAGE_OFFSET 標記的配置項找到對應的地址

請注意,Linux 內核需要設備樹二進制文件和可掛載的根文件系統才能完成啟動過程。為了快速演示,我準備了一個 INITRAMFS 鏡像,并使用 PetaLinux 工具將內核、根文件系統和設備樹二進制文件打包到一個鏡像文件中。也可以根據需要選擇其他方法。

xsct% targets -set-nocase -filter {name =~"*A53#0*"}
xsct% dow -data "image.ub"0x10000000
100%  24MB  0.3MB/s 01:37
Successfully downloaded image.ub

下載 Linux 內核需要一些時間,因為它是整個過程中最大的鏡像文件。接下來,我們釋放 APU,然后通過檢查串口通道來觀察設備上的情況。

首先,運行 ARM 可信固件。其輸出如下所示。

NOTICE: ATF running on XCZU9EG/silicon v4/RTL5.1 at 0xfffea000
NOTICE: BL31: v2.4(release):v1.1-7609-g851523ea2
NOTICE: BL31: Built : 0807, Apr 28 2021

當 ATF 完成將安全監視器調用導出到操作系統后,就會發生 U-Boot 交接。

U-Boot 2021.01 (Jun 01 2021 - 1106 +0000)
Board: Xilinx ZynqMP
DRAM: 4 GiB
PMUFW: v1.1
EL Level:    EL2
Chip ID:    zu9eg
NAND: 0 MiB
MMC:  mmc@ff160000: 0, mmc@ff170000: 1
In:  serial
Out:  serial
Err:  serial
Bootmode: QSPI_MODE
Reset reason:  DEBUG
Net:
ZYNQ GEM: ff0b0000, mdio bus ff0b0000, phyaddr -1, interface rgmii-id
eth0: ethernet@ff0b0000
Hit any key to stop autoboot: 0
ZynqMP>

當終端出現 U-Boot 提示符后,可以輸入bootm 0x10000000來啟動下載的 Linux 內核鏡像。由于該鏡像完整(包含內核、根文件系統和設備樹),它將自動啟動。

## Loading kernel from FIT Image at 10000000 ...
 Using'conf-system-top.dtb'configuration
 Trying'kernel-1'kernel subimage
  Description: Linux kernel
  Created:   2021-06-04 1516 UTC
  Type:     Kernel Image
  Compression: gzip compressed
  Data Start:  0x100000f8
  Data Size:  9356113 Bytes = 8.9 MiB
  Architecture: AArch64
  OS:      Linux
  Load Address: 0x00200000
  Entry Point: 0x00200000
  Hash algo:  sha256
  Hash value:  b4f7073afddc350f3c14f3e9ac1bf6ef8604c602951d13bbe58548bd0d415241
 Verifying Hash Integrity ... sha256+ OK
## Loading ramdisk from FIT Image at 10000000 ...
 Using'conf-system-top.dtb'configuration
 Trying'ramdisk-1'ramdisk subimage
  Description: petalinux-image-minimal
  Created:   2021-06-04 1516 UTC
  Type:     RAMDisk Image
  Compression: uncompressed
  Data Start:  0x108fa12c
  Data Size:  16778258 Bytes = 16 MiB
  Architecture: AArch64
  OS:      Linux
  Load Address: unavailable
  Entry Point: unavailable
  Hash algo:  sha256
  Hash value:  6fcf87930415873cac0aa2232786dace5b65379e68e42b0a6c30f77b870807bc
 Verifying Hash Integrity ... sha256+ OK
## Loading fdt from FIT Image at 10000000 ...
 Using'conf-system-top.dtb'configuration
 Trying'fdt-system-top.dtb'fdt subimage
  Description: Flattened Device Tree blob
  Created:   2021-06-04 1516 UTC
  Type:     Flat Device Tree
  Compression: uncompressed
  Data Start:  0x108ec55c
  Data Size:  56061 Bytes = 54.7 KiB
  Architecture: AArch64
  Hash algo:  sha256
  Hash value:  9bf95db6c5106f1f1945af67bbb43f2269539e514acadf88c4615f4ae7d6b595
 Verifying Hash Integrity ... sha256+ OK
 Booting using the fdt blob at 0x108ec55c
 Uncompressing Kernel Image
 Loading Ramdisk to 7cd11000, end 7dd11412 ... OK
 Loading Device Tree to 000000007cd00000, end 000000007cd10afc ... OK
Starting kernel ...
[  0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[  0.000000] Linux version 5.10.0-xilinx-v2021.1 (oe-user@oe-host) (aarch64-xilinx-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1)#1SMP Fri Jun 4 15:57
:16 UTC 2021
[  0.000000] Machine model: xlnx,zynqmp
...............

...............
PetaLinux 2021.1 ZynqUS_Linux ttyPS0
root@ZynqUS_Linux:~ > uname -r
5.10.0-xilinx-v2021.1

現在,硬件上已經安裝了完整的 Linux 鏡像 :)

提示與經驗總結

流程順序不可隨意更改 — 每一步都有依賴

JTAG 啟動非常強大 — 即使沒有 SD/USB/網絡也能引導系統

要注意 JTAG 鏈路穩定性 — 線纜長度、頻率設置會影響連接穩定性

ATF 必須支持 UltraScale+ 安全模式 — 否則內核可能不能正常訪問安全級別寄存器

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5204

    文章

    20560

    瀏覽量

    335889
  • Linux
    +關注

    關注

    88

    文章

    11787

    瀏覽量

    219335
  • JTAG
    +關注

    關注

    6

    文章

    415

    瀏覽量

    75155
  • UltraScale
    +關注

    關注

    0

    文章

    126

    瀏覽量

    32394

原文標題:從 JTAG 啟動 Zynq UltraScale+ 上的嵌入式 Linux 鏡像:詳細實戰教程

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    通過JTAG啟動Linux的方法和腳本

    在 AMD SoC 器件(AMD Zynq 7000 SoC,AMD Zynq UltraScale+ MPSoC,AMD Versal Adaptive SoC),常見的
    的頭像 發表于 12-22 10:27 ?3556次閱讀
    <b class='flag-5'>通過</b><b class='flag-5'>JTAG</b><b class='flag-5'>啟動</b><b class='flag-5'>Linux</b>的方法和腳本

    Zynq UltraScale + MPSoC USB 3.0 CDC器件類設計

    Zynq?UltraScale+?MPSoC USB 3.0控制器由兩個獨立的雙角設備(DRD)控制器組成。兩者都可以單獨配置為在任何給定時間用作主機或設備。USB 3.0 DRD控制器通過
    發表于 01-03 09:59

    如何利用ZYNQ MPSoC玩DOOM?

    賽靈思和 DornerWorks 的系統軟件團隊在賽靈思的 Zynq? Ultrascale+? MPSoC啟動 Xen Project 管理程序時,我們發現可
    發表于 10-09 06:21

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發表于 01-07 16:02

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發表于 02-02 07:53

    基于Zynq UltraScale+ MPSoC上運行 Xen 管理程序

    熟悉運行在賽靈思 Zynq UltraScale+ MPSoC 上的 Xen 管理程序。 賽靈思和 DornerWorks 的系統軟件團隊在賽靈思的 Zynq?
    發表于 11-16 20:17 ?3991次閱讀
    基于<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>上運行 Xen 管理程序

    Zynq UltraScale+ MPSoC的發售消息

    Zynq?UltraScale+?MPSoC,現已開始發售。視頻向您重點介紹了Xilinx UltraScale +產品組合的第一位成員
    的頭像 發表于 11-27 06:47 ?4474次閱讀

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發表于 02-23 06:00 ?15次下載
    如何調試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米爾電子zynq ultrascale+ mpsoc底板外設資源清單分享

    米爾電子推出的國內首款zynq ultrascale+ mpsoc平臺核心板(及開發板):MYC-CZU3EG吸引了人工智能、工業控制、嵌入式
    發表于 01-07 15:20 ?4次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設資源清單分享

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發燒友網站提供《Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費下載
    發表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設計示例

    電子發燒友網站提供《Zynq UltraScale+ MPSoC的隔離設計示例.pdf》資料免費下載
    發表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設計示例

    Zynq UltraScale+MPSoC嵌入式設計教程

    電子發燒友網站提供《Zynq UltraScale+MPSoC嵌入式設計教程.pdf》資料免費下載
    發表于 09-13 09:14 ?6次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+MPSoC</b><b class='flag-5'>嵌入式</b>設計教程

    Zynq UltraScale+ MPSoC驗證數據手冊

    電子發燒友網站提供《Zynq UltraScale+ MPSoC驗證數據手冊.pdf》資料免費下載
    發表于 09-15 10:13 ?0次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>驗證數據手冊

    Zynq UltraScale+ MPSoC數據手冊

    電子發燒友網站提供《Zynq UltraScale+ MPSoC數據手冊.pdf》資料免費下載
    發表于 12-30 14:37 ?3次下載