适用于 QEMU 的 Versal PS 和 PMC 实参 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

Versal® 器件中,PS(a72) 由 qemu-system-aarch64 进行仿真,PMC 由 qemu-system-microblazeel 进行仿真。在 qemu_args.txt 中捕获大部分常用的 PS 命令行开关,在 pmc_args.txt 中捕获 PMC 命令行开关。

表 1. 适用于 qemu_args.txt 的 Versal 选项
实参名称 描述 如何提取信息
-boot

mode=<boot-number>

例如,对于 sd1:-boot mode=5

指定平台上的启动模式:

  • qspi24 = 1
  • qspi32 = 2
  • sd0 = 3
  • sd1 = 5
  • emmc0 = 6
  • ospi = 8
v++ -p 在 CIPS 启用的启动模式与 v++ -p 选择之间需 DRC
-display none 默认情况下,QEMU 会为用户 I/O 创建 display。该选项用于禁用 display 静态 指定 none 即可禁用 display
-hw-dtb <ps-dtb-file> 描述 PS (a72) 的设备树文件。Vitis 编译器 --package 命令用于生成 dtb 文件,并将其追加到 qemu-args.txt v++ -p  
-M arm-generic-fdt

用于指定要创建的 QEMU 机器。arm-generic-fdt 机器选项可告知 QEMU 解析 dtb 用于机器生成,由 -hw-dtb user.dtb 进行传递。

与器件相关 针对 Versal 进行硬编码
-serial -serial null -serial null -serial mon:stdio

默认情况下,QEMU 会将调用终端连接到 UART0 以执行用户 I/O 操作。您可以通过指定该选项来改写此行为。Versal 平台使用定位实参指定了 4 个 UART:前 2 个用于调试,后 2 个分别为 UART0 和 UART1。

要将 UART0 连接到终端,请指定 -serial null -serial null -serial mon:stdio,这样即可忽略调试相关的 UART 并将 UART0 连接至终端。

同样,要仅将 UART1 连接到终端,请指定 -serial null -serial null -serial null -serial mon:stdio

基于 CIPS 配置上启用的 UART。

Versal 器件具有 4 个 UART。前 2 个为调试相关 UART。

启用 UART0 时:
CONFIG.PS_UART0_PERIPHERAL_ENABLE = 1
CONFIG.PS_UART1_PERIPHERAL_ENABLE =0 or 1

则指定 -serial null -serial null -serial mon:stdio

仅启用 UART1 时:
CONFIG.PS_UART0_PERIPHERAL_ENABLE = 0 
CONFIG.PS_UART1_PERIPHERAL_ENABLE = 1

则指定:-serial null -serial null -serial null -serial mon:stdio

-sync-quantum 时间(以毫秒为单位) 指定 QEMU 与 RTL 仿真器 (simulator) 同步的频率。对此项进行修改可能影响仿真 (simulation) 速度。 静态 针对 Versal 器件进行硬编码(需用户更改)

Versal CIPS 具有 2 个以太网接口。大部分赛灵思 Versal CIPS 开发板均已启用 eth0。如不指定 -net-netdev,那么默认情况下 QEMU 启用 eth0 并映射到用户模式后端。

表 2. 适用于 pmc_args.txt 的 Versal 选项
开关名称 描述 配置源 如何提取信息
-M microblaze-fdt 指定要创建的 QEMU 机器。QEMU 以来自 dtb 的节点创建 MicroBlaze 静态 针对 Versal 器件进行硬编码
-display none 默认情况下,QEMU 会为用户 I/O 创建 display。该选项指示 QEMU 无需显示 (display)。 静态 针对 Versal 器件进行硬编码
-device loader,file=<BOOT_bh.bin>,addr=0xf201e000,force-raw 指定启动头文件,其中加载地址指定为 0xF201E000BOOT_bh.bin 加载地址为 0xF201E000)。这是 pmc_args.txt 中的固定实参,由 v++ -p 进行处理并用作为最终实参,其中包含 BOOT_bh.bin 文件的绝对路径。BOOT_bh.bin 是由 v++ -p 从最终 PDI 生成的。BOOT_bh.bin 直接加载到 QEMU 上,因为 QEMU 不具有从 PDI 加载启动头文件的 BOOT ROM 访问权限。 v++ -pack v++ pack 可提取 BOOT_bh.bin 并生成此开关
-device loader,file=<pmc_cdo.bin>,addr=0xF2000000,force-raw 指定 pmc_cdo.bin,加载地址为 0xF2000000。这是 pmc_args.txt 中的固定实参。它由 v++ -p 进行处理并用作为最终实参,其中包含 pmc_cdo.bin 文件的绝对路径。 v++ -pack v++ pack 可提取 pmc_cdo.bin 并生成此开关
-device loader,file=<plm.bin>,addr=0xF0200000,force-raw 指定 plm 二进制文件固件,加载地址为 0xF0200000。这是 pmc_args.txt 中的固定实参,由 v++ -p 进行处理并用作为最终实参。其中包含 plm.bin 文件的绝对路径。此 plm 由 PPU1 在脱离复位状态后执行。 v++ -pack v++ pack 可提取 plm.bin 并生成此开关
-device loader,addr=0xf0000000,data=0xba020004,data-len=4 -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 指定 PPU0 进程进入启动循环。由于 QEMU 不具有 BOOTROM 访问权限,PPU0 将置于启动循环内,这样通常会将 BOOT 头文件从 PDI 加载到存储器中。 静态 针对 Versal 器件进行硬编码
-device loader,addr=0xF1110624,data=0x0,data-len=4 -device loader,addr=0xF1110620,data=0x1,data-len=4 使 PPU1 脱离复位状态并置于执行模式下。 静态 针对 Versal 器件进行硬编码
-hw-dtb <ps-dtb-file> 描述 aout PS(a72) 的 dtb 文件。v++ pack 会生成此 dtb 文件,并将其追加到 qemu-args.txt v++ pack v++ pack 会基于器件上的 DDR 配置来生成 dtb 文件