Add shared PetaLinux PL bit and PS app deployment skills

This commit is contained in:
bowei
2026-09-16 03:00:50 +08:00
parent f04667c924
commit c173d987db
2 changed files with 58 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
---
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)。文档版本仅作语义依据,目标工具/内核仍以实测版本为准。