Files

32 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: petalinux-pl
description: Convert a current Vivado PL .bit into a Zynq FPGA-manager-loadable .bin, deliver it to a PetaLinux board, optionally program PL at runtime, and verify or recover the result. Use for PR26 PL bit-to-bin and hardware deployment, not for QSPI BOOT.BIN or Linux application deployment.
---
# Petalinux-pl:PL bit→bin 与板端发布
目标是把**当前 Vivado 交付**的 PL bit 转成板端可用的 bin、放到实际消费者的位置,并按请求完成运行时 FPGA 加载与硬件验收。PR26 的两个路径代表不同接口:`/aw/fpgabin/fpga_atsc3` 是历史应用管理的文件位置;`/lib/firmware/<name>` 加 `/sys/class/fpga_manager/fpga0/firmware` 是 Linux FPGA manager 加载路径。**复制成功不等于 PL 已配置。**本 skill 不重打包 QSPI `BOOT.BIN`,不部署 PS/Linux 应用;若用户明确要求上电时由 BootROM/FSBL 加载 bit,先审阅 `petalinux-qspi`/`petalinux-emmc` 的 BOOT 组成与回退,而不是悄悄改启动链。
## 输入与板卡门禁
从用户请求、项目 bmem/PR26 和现场枚举确定板卡/PCB 版本;未指明时先取得板卡身份。HJX9009、emv9.3、ipots、其他板不能共用器件号、bit/HDF 或加载接口。取得本轮 `.bit`、相配 HDF/XSA、Vivado/Bootgen 版本、目标 Linux/kernel/DT、当前 PL 与 FPGA manager 状态、已知良好 bit/bin 和恢复路径。记录 SHA-256、大小、构建标识,确认 bit 的器件/接口与目标板匹配;当前 bit 不应只凭文件名或 mtime 推定。若 PL 新增/移动了 PS 可见 IP、时钟或中断,还要审阅目标 Linux 设备树/驱动兼容性;bin 可加载不等于系统能正确使用新 PL。
HJX9009 的 `Petalinux/delivery/pr26_tf_20260915/MANIFEST.md` 仅证明 FPGA manager 节点存在,**没有**证明 PL bit 发布或 DPD 应用运行通过。`E:\tmp\bit2bin_fpga` 的 BIF/批处理以及 `E:\tmp\qspi-emmc\tftp_dir_emmc` 只作语法/资产参考:它们对应历史 bit,脚本写死旧路径并删除输出/日志,不得直接拿它们当当前交付执行。PR26/Notion 中的 IP、bit 名称和 `/aw` 路径也需现场验证。
## 转换与复用
在隔离的工作目录复制**唯一当前 bit**并核对副本哈希,为副本生成只含该 bit 的 BIF(`all: { <current-bit-copy> }`),确保 Bootgen 不会在源码/历史交付目录旁意外覆盖同名输出。使用与目标硬件版本匹配的 Bootgen。Zynq-7000 的历史/官方接口是 `bootgen -image <BIF> -arch zynq -process_bitstream bin`;`-arch` 必须按板卡实际 SoC 选择,不能把 HJX9009 命令套到 ZynqMP/其他器件。保存 BIF、完整 stdout/stderr、退出码、工具版本、输入 bit/HDF SHA-256、输出 `.bit.bin` 的实际名称/大小/SHA-256;命令失败或输出为空立即停止。`.bin` 是处理过的配置数据,大小/哈希不要求与带头部的 `.bit` 相同。不要用旧批处理的 `del *.log`、`del fpga` 或静默重命名覆盖结果。
若已有 bin,只有 bit/HDF、板卡 profile、转换选项/工具版本和输出 SHA-256 均与冻结 manifest 一致时可跳过转换;仍要重做本轮目标板传输、加载和验收。输出可在 TFTP 根目录以 `name.bit.bin` 发布,应用管理要求的最终名称另行确定,不用历史 `fpga_atsc3` 名称冒充最新设计。
## 板端交付、加载与验收
1. 现场确认 Windows/VM/TFTP 绑定、板端 IP 与根文件系统来源。若根是 QSPI initramfs,复制到 `/lib/firmware` 或 `/aw` 只存在于 RAM,不能报告“断电后持久”;需要持久部署时先走正式 TF/eMMC 根文件系统。用实际 TFTP 下载到**独立暂存文件**,检查返回值、字节数和两端 SHA-256;任何传输失败停止,不允许用旧同名文件继续。
2. 按已验证消费者选择目标。应用管理模式先查 `/aw/fpgabin` 的挂载、启动脚本和实际文件读取合同;保存旧文件,在同一文件系统内校验暂存 bin、原子替换、按最低必要权限(数据文件通常 `0644`)设置并 `sync`,再证明消费者读取新哈希。直接 FPGA manager 模式先确认 `/sys/class/fpga_manager/fpga0`、`/lib/firmware` 和固件文件查找规则;以同样的备份/校验/替换发布到已确认的 firmware 目录,然后执行 `echo <actual-basename> > /sys/class/fpga_manager/fpga0/firmware`,逐条检查写入结果、`state`/内核日志以及板上 PL 标识寄存器或功能探针。不要因为历史示例 `chmod 777` 或 `sync` 两次就省略这些验证。
3. 运行时重配置前辨认依赖 PL 的 Linux 服务/驱动,按目标应用的已知停止/恢复合同协调;需要停止应用时可用 `petalinux-ps`,但不得顺带终止无关服务。若新 bin 加载/功能探针失败,保留日志并用已知良好 bin、JTAG/冷启动路径恢复;只恢复磁盘文件不会自动恢复当前 FPGA 内容。
4. 若要求上电自动加载,另核对启动脚本/设备树与 bin 名称,至少两次完整断电启动证明实际加载和功能,不以一次 sysfs 写入代替持久启动验收。仅请求“发布文件”时状态记为 `FILE_DEPLOYED`,不能记 `PL_ACTIVE_PASS`。
在项目 `Notes/auto/` 保存自动日志/manifest:bit/HDF/bin 哈希、Bootgen/BIF、板号、实际网络、目标路径、加载方式、旧版备份、FPGA manager/寄存器/功能证据和回退结果。按项目 bmem 协议沉淀会话与持久结论并同步;不得把账号口令写进 skill、TFTP 文件或日志。
依据:项目 `Notes/PR26.md`、[Notion 历史两步法](https://app.notion.com/p/a16f43e721f08223a8b4811f36b10ac1);AMD [Bootgen `-process_bitstream`](https://docs.amd.com/r/2022.1-English/ug1283-bootgen-user-guide/process_bitstream) 和 [FPGA Manager 用法](https://docs.amd.com/r/2020.2-English/ug1144-petalinux-tools-reference-guide/FPGA-Manager-Configuration-and-Usage-for-Zynq-7000-Devices-and-Zynq-UltraScale-MPSoC)。文档版本仅作语义依据,目标工具/内核仍以实测版本为准。