ZYNQ 7020启明星开发板实战:用Vitis把OV5640摄像头项目永久烧进QSPI Flash

张开发
2026/4/19 16:14:23 15 分钟阅读

分享文章

ZYNQ 7020启明星开发板实战:用Vitis把OV5640摄像头项目永久烧进QSPI Flash
ZYNQ 7020启明星开发板QSPI固化实战从Vivado到Vitis的完整工程落地指南当你的ZYNQ项目在调试阶段运行稳定后下一步自然要考虑如何将成果固化到硬件中。不同于简单的临时烧录QSPI Flash固化能让你的设计在断电重启后依然保持运行状态——这正是产品化开发的关键一步。本文将基于正点原子启明星开发板和OV5640摄像头项目带你完成从Vivado工程处理到Vitis最终烧录的全流程实战。1. 工程前期准备与环境配置在开始固化操作前确保你的开发环境处于最佳状态。我使用的是Vivado 2019.2和配套的Vitis环境这个组合相比早期版本在固化流程上做了显著优化。硬件方面需要准备正点原子启明星ZYNQ 7020开发板核心板底板OV5640摄像头模块HDMI显示设备USB-JTAG编程器如Digilent HS2提示建议在工程目录下新建vitis子目录专门存放后续生成的固化文件保持项目结构清晰。工程目录过长可能导致编译异常这里分享一个实用技巧使用Windows的subst命令将工程路径映射为虚拟驱动器。例如subst P: D:\Projects\ZYNQ_OV5640_HDMI执行后P盘就是你的工程根目录能有效避免路径超长问题。完成所有操作后用subst P: /d解除映射。2. Vivado工程升级与关键配置打开现有Vivado工程时2019.2版本会提示升级选择自动升级选项即可。但需要特别注意IP核的同步升级在IP Status报告中选中所有需要升级的IP点击Upgrade Selected按钮等待升级完成后验证Block Design完整性QSPI使能配置是固化成功的关键。在ZYNQ Processing System IP核配置中进入PS-PL Configuration → Peripheral I/O Pins勾选Quad SPI Flash选项根据启明星开发板原理图确认使用MIO[1:6]引脚// 典型QSPI引脚分配参考 qspi0_ss0 MIO1 qspi0_io0 MIO2 qspi0_io1 MIO3 qspi0_sclk MIO0 qspi0_ss_b MIO6完成配置后生成比特流这个过程可能需要15-30分钟。建议在等待期间检查以下内容确认DDR控制器配置与开发板型号匹配验证时钟设置是否正确启明星使用33.333MHz参考时钟检查所有约束文件中的引脚分配3. 硬件平台导出与Vitis工程创建Vivado中的最后一步是导出硬件平台选择File → Export → Export Hardware勾选Include bitstream选项指定导出路径到之前创建的vitis目录生成.xsa硬件描述文件切换到Vitis环境后首先需要建立平台项目1. 创建Platform Project - 命名建议加plat_前缀如plat_ov5640_hdmi - 选择刚导出的.xsa文件 - 处理器类型保持默认ps7_cortexa9_0 2. 创建Application Project - 命名建议加app_前缀如app_ov5640_hdmi - 选择新建的平台项目 - 模板选Empty Application项目结构建立后需要正确处理代码迁移将原有SDK工程中的src目录内容复制到新项目的src下特别注意头文件路径的配置右键项目 → Properties → C/C Build → Settings添加路径plat_ov5640_hdmi/ps7_cortexa9_0/standalone_domain/bsp/include4. Boot镜像生成与QSPI烧录编译应用工程后Vitis简化了boot镜像生成流程右键应用项目 → Create Boot Image系统自动生成.bif引导文件确认包含以下组件FSBLFirst Stage Bootloader比特流文件应用可执行文件烧录前的硬件准备拨码开关状态功能说明BOOT0ONJTAG模式BOOT1ON调试启动BOOT2ON保留设置执行Flash编程# 典型烧录命令流程 program_flash -f BOOT.bin -offset 0 -flash_type qspi-x4-single \ -cable type xilinx_tcf url TCP:127.0.0.1:3121烧录完成后将BOOT1拨码开关切换到OFF位置使系统从QSPI启动。重新上电后你的OV5640摄像头项目应该能自动加载运行。5. 常见问题排查与优化建议在实际操作中可能会遇到以下典型问题QSPI识别失败检查硬件连接是否牢固验证Flash型号是否匹配通常使用Winbond 25Q系列重新确认Vivado中的QSPI引脚配置启动卡在FSBL阶段检查boot.bin文件组成是否正确确认比特流是否包含在镜像中尝试降低QSPI时钟频率在ZYNQ配置中修改性能优化技巧在Vitis中启用-O2优化选项调整DDR控制器参数匹配你的内存芯片使用Xilinx的memtest工具验证内存稳定性对于需要批量生产的场景可以考虑制作Golden Image备份开发自动化烧录脚本使用Xilinx的工具生成量产用镜像整个固化过程最耗时的部分通常是比特流生成和Flash烧录。在我的实测中16MB QSPI Flash的完整擦除和编程大约需要3-5分钟建议在批量操作时做好时间规划。

更多文章