文章目录
- 1 Vivado工程基本设计
- 2 Vivado工程位置不变
- 2.1 修改设计1 - 增加PS侧QSPI外设
- 2.2 修改设计2 - 增加PL侧AXI GPIO外设
- 2.3 总结
- 3 Vivado工程位置变动
- 3.1 先修改BD后打开SDK
- 3.2 先打开SDK后修改BD
- 3.3 总结
1 Vivado工程基本设计
Step 1:
- Vivado版本Vivado 2018.3
- 器件型号xc7z020clg400-2
- 创建Vivado工程(名为pl_axi_gpio)
- 搭建Block Design(名为system)
- PS核
- 勾选UART(查看打印信息)
- 勾选GPIO-MIO(连接PS侧LED)
- 选择DDR型号(运行应用程序)
- 使能PL-PS中断 (接收PL侧提交的中断)
- AXI GPIO核
- 配置位宽(1-bit,连接PL侧按键)
- 使能中断(检测按键中断并向PS提交中断)
Step 2:
- 验证BD设计
- 保存BD设计
- 右击BD设计,Generate Output Products
- 右击BD设计,Create HDL Wrapper
- Open Elaborated Design,为axi_gpio_key分配引脚
- 生成bit文件
- 导出hdf
Step 3:
- 打开SDK
- 新建空应用工程pl_axi_gpio,SDK首先会自动生成BSP文件(包括驱动、库函数等)
- 添加已编写好的源文件(main.c),SDK会自动编译应用工程,生成ELF文件
Step 4:
- 开发板上电
- 打开串口
- 下载程序
- Pl侧按键触发中断控制PS侧LED亮灭功能正常
- 关闭SDK和Vivado
2 Vivado工程位置不变
2.1 修改设计1 - 增加PS侧QSPI外设
Step 1:
- 打开Vivado
- 打开pl_axi_gpio工程
- 打开SDK
Step 2:
- 切换到Vivado
- 打开BD设计
- 双击PS核,打开PS配置界面
- 在Peripheral I/O Pins选项中勾选Quad SPI Flash
- 验证BD设计
- 保存BD设计
- 右击BD设计,Generate Output Products
- 生成bit文件
- 导出hdf
- 弹出如下图所示提示,点击Yes
Step 3:
- 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示
Step 4:
- 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程,如下图所示,system.hdf和system.mss中多了ps7_qspi_0和ps7_qspi_linear
Step 5:
- 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程
Step 6:
- 上板验证
- 关闭SDK
2.2 修改设计2 - 增加PL侧AXI GPIO外设
Step 1:
- 切换到Vivado
- 打开BD设计
- 复制axi_gpio_0核(自动命名为axi_gpio_1)
- 双击axi_gpio_1核,去掉中断
- 验证BD设计
- 保存BD设计
- 右击BD设计,Generate Output Products
- Open Elaborated Design,为axi_gpio_led分配引脚
- 生成bit文件
- 导出hdf
Step 2:
- 打开SDK(SDK在2.1小节的最后已关闭)
- SDK会自动检测到hw_platform_0使用的hardware specification发生变化,然后会自动
- 更新hw_platform_0
- 重新生成BSP文件
- 重新编译应用工程
- SDK如果仅更新hw_platform_0,并未重新生成BSP文件和重新编译应用工程,此时有两种方法:
- 关闭SDK重新打开试试
- Step 3
Step 3:
- 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程
Step 4:
- 上板验证
- 关闭Vivado和SDK
2.3 总结
在Vivado工程位置不变的情况下,只要对设计做了修改,然后重新导出了hdf文件,SDK无论在设计修改之前是否打开,SDK都能识别到hdf的变化,然后自动
- 更新hw_platform_0
- 重新生成BSP文件
- 重新编译应用工程
但是,注意有时候SDK也会失灵,仅更新hw_platform_0,不会重新生成BSP文件和重新编译应用工程。稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程。
3 Vivado工程位置变动
- 将2.2小节的Vivado工程复制到其他文件夹下
- 打开Vivado
- 打开pl_axi_gpio工程
3.1 先修改BD后打开SDK
Step 1:
- 从BD设计中删除axi_gpio_1核及其接口
- 重新编译Vivado工程
- 重新导出hdf文件
Step 2:
- 打开SDK,发现会多出一个hw_platform_1
- hw_platform_1基于最新的hdf文件
- hw_platform_0基于旧有的hdf文件
- pl_axi_gpio和pl_axi_gpio_bsp是和hw_platform_0绑定的
Step 3:按照正点原子SDK嵌入式开发教程的方法
- 彻底删除hw_platform_0
- 将hw_platform_1重命名为hw_platform_0
- 右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程
此时,打开system.hdf和system.mss文件,发现axi_gpio_1还在(在Vivado工程已删除),如下图所示:
Step 4:
- 关闭SDK重新打开
此时,system.hdf文件中axi_gpio_1已消失,system.mss出现异常,如下图所示:
Step 5:
- 只能删除Vivado工程目录下的SDK子文件夹,重新搭建SDK工程
3.2 先打开SDK后修改BD
Step 1:
- 打开SDK,发现会多出一个hw_platform_1(因为此时Vivado工程未做任何修改,所以hw_platform_1和hw_platform_0完全一致)
Step 2:按照正点原子SDK嵌入式开发教程的方法
- 彻底删除hw_platform_0
- 将hw_platform_1重命名为hw_platform_0
Step 3:
- 切换到Vivado,从BD设计中删除axi_gpio_1核及其接口
- 重新编译Vivado工程
- 重新导出hdf文件
Step 4:
- 切换到SDK(SDK先前已打开未关闭),弹出如下图所示提示
Step 5:
- 点击Yes,SDK会更新hw_platform_0,同时重新生成BSP文件和并重新编译应用工程(一切正常,哈哈)
Step 4:
- 稳妥起见,右键BSP,点击Re-generate BSP Sources,手动重新生成BSP文件的同时也会重新编译应用工程
Step 5:
- 上板验证
- 关闭Vivado和SDK
3.3 总结
在Vivado工程位置变化的情况下,在对设计做出任何修改前,首先打开SDK,然后彻底删除hw_platform_0
并将hw_platform_1重命名为hw_platform_0,最后再对设计进行修改。