作者:Stephen MacMahon,来源:<span id="profileBt"><a href="https://forums.xilinx.com/t5/Xilinx-%E4%BA%A7%E5%93%81%E8%AE%BE%E8%AE%A…; 赛灵思中文社区论坛</a></span>
注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途
这是《创建 Vitis 加速平台》系列的第 3 篇博文。在前文中,我们讲解了如何创建硬件和软件工程。在本文中,我们将讲解如何在 Vitis™ 中将所有这些工程封装在一起。
您可通过下列链接查看其它各部分:<br />
第 1 部分:<a href="http://xilinx.eetrend.com/content/2020/100052412.html" target="_self">在 Vivado 中为加速平台创建硬件工程</a><br />
第 2 部分:<a href="http://xilinx.eetrend.com/content/2020/100054912.html" target="_self">在 PetaLinux 中为加速平台创建软件工程</a> <br />
第 4 部分:在 Vitis 中测试定制加速平台
在 Vitis 中加速软件功能(创建内核)即表示创建硬件 IP 核,并使用由此产生的基础架构将此功能连接到现有平台。
为此,Vitis 需要重构平台。Vitis 使用 XSA 来重构 Vivado 工程。随后,它将追加经过更新的硬件,并重新创建 Vivado 工程。
其它所有一切都保持不变,当然比特流和生成的内核应用除外。因此,启动镜像不能保持不变。而是由我们提供 BIF 文件,并在其中包含镜像占位符用于在 Vitis 中创建这些镜像。
此外,为了能够执行内核,我们需要为目标硬件执行交叉编译。此处使用的是 PetaLinux 中创建的 sysroot。
<strong>准备镜像:</strong>
为了便于使用,我在此对平台文件进行了组织,但这并非必要步骤。重要的是,请牢记创建 BIF 文件时的启动镜像位置,因为我们使用的是占位符。
<pre>mkdir -p sw_comp/src/a53/xrt/image
mkdir sw_comp/src/boot</pre>
<li>将 image.ub、boot.scr 和 rootfs.cpio.gz 从 PetaLinux image/linux 文件夹复制到 sw_comp/src/a53/xrt/image </li>
<li>将 bl31.elf、uboot.elf、zynqmp_fsbl(已重命名为 fsbl.elf)和 pmufw.elf 从 PetaLinux image/linux 文件夹复制到 sw_comp/src/boot</li>
<strong>创建 BIF:</strong>
BIF 文件在 bootgen 中用于创建 SD 启动镜像。
其中包括 BOOT.BIN 文件中所有分区的位置。以下提供了一个模板。
此处请务必注意,我们只提供占位符文件名,而不提供实际文件名。工具将添加指向这些文件的路径。因此,我建议将所有这些文件保存在相同启动文件夹内。zcu104_base 将用作为平台名称。
<pre>the_ROM_image:
{
[fsbl_config] a53_x64
[bootloader] <zcu104_base/boot/fsbl.elf>
[pmufw_image] <zcu104_base/boot/pmufw.elf>
[destination_device=pl] <bitstream>
[destination_cpu=a53-0, exception_level=el-3, trustzone] <zcu104_base/boot/bl31.elf>
[destination_cpu=a53-0, exception_level=el-2] <zcu104_base/boot/u-boot.elf>
}</pre>
<li>将 linux.bif 复制到 sw_comp/src/boot</li>
<strong>创建 init.sh 脚本:</strong>
启动时将运行此脚本以进行 XRT 设置,并将平台名称传递到 ZOCL。
<pre>cp ./platform_desc.txt /etc/xocl.txt
export XILINX_XRT=/usr</pre>
<li>将 init.sh 复制到 sw_comp/src/a53/xrt/image </li>
<strong>创建 platform_desc.txt</strong>
这样即可将平台名称传递到 XRT。此处名称应与 Vivado 中提供的平台名称匹配:
<pre>zcu104_base</pre>
<li>将 platform_desc.txt 复制到 sw_comp/src/a53/xrt/image </li>
<strong>创建 QEMU 文件:</strong>
Vitis IDE 支持软件仿真和硬件仿真。QEMU 即可用于执行此操作。但我们需要传递 QEMU 机器详细信息。
针对 PMU,需使用 pmu_args.txt 执行此操作
<pre>-M
microblaze-fdt
-device
loader,file=<pmufw.elf>
-machine-path
.
-display
none</pre>
<li>将 pmu_args.txt 复制到 sw_comp/src/boot</li>
此外还需要通过 qemu_args.txt 传递 PSU 机器详细信息:
<pre>-M
arm-generic-fdt
-serial
mon:stdio
-global
xlnx,zynqmp-boot.cpu-num=0
-global
xlnx,zynqmp-boot.use-pmufw=true
-net
nic
-net
nic
-net
nic
-net
nic
-net
user
-m
4G
-device
loader,file=<bl31.elf>,cpu-num=0
-device
loader,file=<u-boot.elf>
-boot
mode=5</pre>
<li>将 qemu_args.txt 复制到 sw_comp/src/boot</li>
<strong>在 Vitis 中封装平台:</strong>
启动 Vitis 并选择“创建平台工程 (Create Platform Project)”:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110199-1.p…; alt=""></center>
使用 BIF 中所提供的名称:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110200-2.p…; alt=""></center>
选择“根据硬件规范 (XSA) 创建 (Create from hardware specification (XSA))”:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110201-3.p…; alt=""></center>
针对操作系统选择 Linux,然后取消勾选“生成启动组件 (generate boot components)”,因为在 PetaLinux 中已创建这些组件:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110202-4.p…; alt=""></center>
注:此处警告信息仅用于声明需添加 sysroot。
填入上一篇博文中创建的软件镜像:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110203-5.p…; alt=""></center>
然后执行构建:
<center><img src="http://xilinx.eetrend.com/files/2020-10/wen_zhang_/100056548-110204-6.p…; alt=""></center>
完成此操作后,平台将置于 export\zcu104_base.... 至此大功告成。
如需查看本指南的下一部分,请参阅第 4 部分:<a href="https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Testing-C…; target="_self">在 Vitis 中测试定制加速平台</a>