Zynq 开发中的工程文件管理

张开发
2026/4/16 5:02:16 15 分钟阅读

分享文章

Zynq 开发中的工程文件管理
Zynq 开发Vivado、PetaLinux、Linux、U-Boot、驱动等基本都会遇到的一个问题工程文件越来越多但真正需要长期保存的东西其实没那么多。如果不把边界划清楚Git 仓库很容易变成“源码 编译产物 工具缓存”的大杂烩体积越来越大存的都是垃圾。而且一旦换机器、或者硬盘坏了仍然要花费大量时间恢复工程。所以最关键的问题是Git 里到底应该放什么才能保证工程丢了也能快速重新搭起来。一、工程里的三类文件在 Zynq 工程里文件基本可以分三类1. 外部来的东西比如Linux KernelU-BootYocto / PetaLinux layer第三方驱动官方 BSP / IP特点很简单不是你写的能重新下载能换版本所以重点不是“存下来”而是记清楚版本 有需要能找回来2. 自己写的东西核心这一类是最重要的包括应用代码驱动代码Device Treedtskernel / uboot 配置Vivado HDLverilogblock design 的 tcl 脚本各种 build / 脚本工具3. 工具生成的东西最占空间这些东西丢了没事重新编一次就有了比如Vivado 的 .xpr / .runs / .cachePetaLinux 的 build / tmp / images编译出来的 Image / dtb / elf / bitnode_modules / venv各种 log / dump特点很大机器相关可以重新生成二、一个容易踩的坑很多“自己写的文件”其实已经不纯了比如在 dts 基础上改了一堆Vivado GUI 改完没导 tclkernel config 改来改去临时 patch 没整理生成文件上直接手改时间久了就变成“看起来是源码其实是半生成 半手改 半历史遗留”这种东西最危险因为你以为能复现实际上复现不了三、Git 在这里真正该干什么Git 不是用来备份整个工程的,在 Zynq 这种工程里Git 不是存结果的是存“怎么把系统搭起来的”。简单说就是 不管你换电脑还是硬盘坏了只要 Git 还在能重新把系统搭出来。四、“恢复现场”的意思这里要说清楚一点“恢复现场”不是指恢复 Vivado 界面恢复 build 目录恢复你当时的临时状态这些做不到也没必要。真正的“恢复现场”是Linux 能重新编出来dtb 能重新生成bitstream 能重新做出来应用能跑起来系统行为是对的五、类似现象Node.js靠 package.json 重装依赖Python靠 requirements.txt 重建环境Vivado靠 TCL / BD 重建工程Linux / U-Boot靠 defconfig .config patch 重建Yocto靠 layer recipe 重建整个系统共同点是不存结果只存规则六、工程实践在 ZynqVivado PetaLinux Linux U-Boot开发中Git 的核心不是“存文件”而是“存可重建系统所需的信息”。模块 / 类型应该纳入 Git不建议纳入 Git本质理解 / 恢复方式应用源码C / C / Python 业务代码编译产物.o / .elf / 可执行文件直接重新编译即可自定义驱动Linux driver 源码.ko 模块文件kernel 重新编译生成通信协议 / 业务逻辑协议实现代码runtime log / dump可通过源码复现Device Tree.dts / .dtsi.dtb二进制dtc 重新编译生成Linux Kernelpatch / defconfig / configImage / vmlinux / build目录kernel 源码 config 重建U-Bootpatch / defconfigu-boot.bin / build输出源码重新编译Vivado HDLVerilog / VHDL 源码synth / impl 输出文件重新综合生成Vivado Block Designbd.tcl.xpr / .runs / .cacheTCL 重建整个工程Vivado 工程文件—.xpr不能作为唯一来源必须可用脚本重建IP 配置TCL / 参数脚本GUI配置工程文件通过脚本恢复PetaLinux 工程project-spec / configbuild / tmp / imagespetalinux-build 重新生成Yocto layerrecipe / bb 文件sstate-cachebitbake 重建构建脚本build.sh / env.sh / Makefile / CMakeLists临时脚本 / 手动命令记录一键化重建流程工具链环境版本说明 / 安装脚本gcc / vivado 安装目录外部安装 版本锁定Node.js 依赖package.json / package-lock.jsonnode_modulesnpm install 重建Python 依赖requirements.txtvenv / site-packagespip install 重建调试相关调试脚本 / 测试用例log / dump / core 文件仅用于分析不进版本库临时数据小规模测试输入大规模输出 / 中间结果可删除或本地保留七、总结能写脚本的就不手点 GUI能生成的东西就不手改改动一定要留下规则patch / tclbuild 目录和源码分开维护一份恢复现场的md仓库尽量干净

更多文章