Files

5.9 KiB
Raw Permalink Blame History

name, description
name description
petalinux-pl 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 历史两步法;AMD Bootgen -process_bitstream 和 FPGA Manager 用法。文档版本仅作语义依据,目标工具/内核仍以实测版本为准。