ZYNQMP Linux下快速更新FPGA程序的方法

版权申诉
5星 · 超过95%的资源 14 下载量 186 浏览量 更新于2024-08-15 2 收藏 736KB PDF 举报
"这篇文章主要介绍了如何在Linux系统中对ZYNQMP的PL程序进行在线更新,无需断电重启板卡。ZYNQMP的BIT镜像文件较大,通过仿真器下载到QSPI Flash的时间较长,因此在线更新方法对于项目研发和功能调试更为便捷。更新过程涉及到对UBoot、内核以及根文件系统的脚本文件的修改,并且讲解了如何在Vivado不同版本下生成BIN格式的PL程序文件。" 在基于ZYNQMP的嵌入式系统中,PL(Programmable Logic)部分的更新通常需要重新编程整个BOOT.bin文件,这会消耗大量时间。然而,通过Linux系统内部的在线更新机制,我们可以直接修改PL部分的bit文件,从而减少更新时间和提高效率。这个方法的关键在于理解ZYNQMP的存储介质镜像文件空间分配,如表1所示: 1. QSPI NorFlash:存放FSBL(FPGA System Boot Loader)、PMU固件、BL31(TrustZone相关固件)和U-Boot固件。 2. EMMC(SD0): - mmcblk0p1:内核Image、设备树devicetree.dtb以及用于PL在线更新的pl_system.bit.bin。 - mmcblk0p2:根文件系统rootfs.ext4。 - mmcblk0p3:其他应用参数,可按需挂载。 在更新过程中,我们只需关注emmc的mmcblk0p1分区,即pl_system.bit.bin文件。一旦生成新的PL配置,可以直接在Linux环境中挂载emmc分区并替换旧的bin文件,从而实现PL程序的即时更新。 为了生成适应在线更新的bin格式PL文件,Vivado 2018.3之前需要使用bootgen工具进行转换,而从Vivado 2018.3版本开始,可以直接在Vivado中生成bin文件。 更新流程包括以下几个步骤: 1. UBoot源码修改:在UBoot的arm架构目录下,可能需要修改源码以支持新的PL更新机制。这可能涉及到添加或调整与PL更新相关的命令或函数。 2. 内核修改:可能需要更新内核驱动以识别和处理新的PL程序,确保在加载时能正确读取和应用更新的bin文件。 3. 根文件系统脚本修改:创建或修改启动脚本来执行PL更新过程,包括卸载和安装新的PL程序,以及处理可能的权限和校验问题。 基于ZYNQMP的Linux系统通过这种方式实现了PL程序的灵活更新,大大提高了开发和调试的效率。理解并掌握这一方法,对于从事ZYNQMP平台的开发人员来说,能够有效提升工作效率并简化系统维护。