FQML_AXI_GPIO工程构建调试记录

2023-12-27 23:53:51

FQML_AXI_GPIO工程构建调试记录

一、概述

此记录JFMQL15T开发板,实现ps通过axi接口控制pl 的EMIO接口led闪烁,添加EMIO PJTAG用于PS端调试,先创建vivado工程,最终生成bitstream,procise从vivado中导入工程,procise下载bitstream,启动IAR,编译下载调试即可。
proccise工程由vivado中导入。

二、新建vivado工程vivado_axi_emio

芯片类型选择zynq-7000, xc7z015clg485-2
在这里插入图片描述

三、vivado工程构建配置

3.1 添加BD

点击Create Block Design,命名为system
在这里插入图片描述

3.2 添加ZYNQ system IP

在这里插入图片描述

3.3 配置ZYNQ IP

双击zynq 打开配置页面
在这里插入图片描述
失能ddr,此例不用ddr
在这里插入图片描述

3.4 添加并配置AXI GPIO IP

在这里插入图片描述
双击AXI GPIO,选择All Outputs,设置GPIO Width为4(本例中控制四个PL_LED),其他保持不变。
在这里插入图片描述

3.5 引出管脚

点击Run Block Automation
在这里插入图片描述

3.6 自动连线

点击Run connection Automain
在这里插入图片描述
在这里插入图片描述

3.7 Generate Output Products

在这里插入图片描述
在这里插入图片描述

3.8 添加顶层文件,Create HDL Wrapper

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可看到顶层文件中已包含了axi gpio pl_led
在这里插入图片描述

3.9 添加EMIO PJTAG(此过程正常应该在3.5引出管脚之前完成,此处忘记了因此在此添加)

点击Open Block Degin 打开BD配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.10 引出管脚,连线,重新加载生成顶层文件

在这里插入图片描述
选择Make External
在这里插入图片描述
在这里插入图片描述
连线
在这里插入图片描述
重新生成顶层文件流程,参考3.7和3.8
Generate Output Products
在这里插入图片描述
在这里插入图片描述
重新加载顶层文件

在这里插入图片描述
Reload完成后Ctrl+S保存,同时可以看到EMIO PJTAG的引脚包含在了顶层文件中
在这里插入图片描述

3.11 新建管脚约束文件

在这里插入图片描述
在这里插入图片描述
编写引脚约束文件(由于AXI GPIO配置时All Outputs 所以引脚约束文件中为pl_led_tri_o)
set_property IOSTANDARD LVCMOS25 [get_ports {pl_led_tri_o[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tck]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tdi]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tdo]
set_property IOSTANDARD LVCMOS33 [get_ports PJTAG_0_tms]

set_property PACKAGE_PIN E2 [get_ports {pl_led_tri_o[0]}]
set_property PACKAGE_PIN D6 [get_ports {pl_led_tri_o[1]}]
set_property PACKAGE_PIN F5 [get_ports {pl_led_tri_o[2]}]
set_property PACKAGE_PIN E3 [get_ports {pl_led_tri_o[3]}]
set_property PACKAGE_PIN AB11 [get_ports PJTAG_0_tck]
set_property PACKAGE_PIN V11 [get_ports PJTAG_0_tdi]
set_property PACKAGE_PIN W11 [get_ports PJTAG_0_tdo]
set_property PACKAGE_PIN AA11 [get_ports PJTAG_0_tms]
在这里插入图片描述

3.12 生成bitstream文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.13 vivado打开sdk创建工程

3.13.1 Export Hardware

vivado 菜单栏中File—> Export—>Export Hardware,选中Include bitstream,点击ok
在这里插入图片描述

3.13.2 启动SDK

vivado 菜单栏中File—> Launch SDK,点击OK
在这里插入图片描述
在这里插入图片描述
创建工程
在这里插入图片描述

在这里插入图片描述
新生成的bsp中的部分驱动文件后续会用到,完成此操作新建SDK工程后(bsp包必须以_bsp结尾,procise只识别此格式)即可关闭vivado和sdk ,用procis导入vivado工程。

四、procise工程构建

4.1 新建procise空白工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 导入vivado工程

PSOC—> FROM VIVADO
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 启动IAR

在这里插入图片描述
在这里插入图片描述
将vivado sdk的程序文件夹放到procise工程下的SDK/system_platform_FM_QL_bsp/pl下
在这里插入图片描述

4.4 IAR中添加vivado sdk生成的bsp驱动文件

将vivado sdk的程序文件夹放到procise工程下的SDK/system_platform_FM_QL_bsp/pl下
在这里插入图片描述
vivado SDK bsp下的include 文件夹下的“xil_assert.h”、“xil_types.h”、“xparameters.h”、“xstatus.h”,libsrc\standalone_v6_1\src 目录下的“xil_assert.c”, libsrc\gpio_v4_3\src 下所有的 c 和 h 文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对应添加完成后的效果如下:
在这里插入图片描述

4.5 解决兼容性问题

xparameters.h文件中注释掉#include “xparameters_ps.h”
在这里插入图片描述
xgpio_l.h中注释掉#include “xil_io.h”,添加#include “fmsh_common.h”
在这里插入图片描述
更改读写接口宏定义
#define XGpio_In32(addr) FMSH_ReadReg(addr,0x0)
#define XGpio_Out32(addr,data) FMSH_WriteReg(addr,0x0,data)

在这里插入图片描述

4.6 编写主程序

#include <stdio.h>
#include “platform.h”
#include “fmsh_common.h”
#include “xgpio.h”
#include “fmsh_ps_parameters.h”

int FGpioOutputExample(void);

int main()
{
//init_platform();
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x008, 0xDF0D767BU);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x838, 0xf);
FMSH_WriteReg(FPS_SLCR_BASEADDR, 0x004, 0xDF0D767BU);
//printf(“1\r\n”);
while (1)
{
FGpioOutputExample();
}
//cleanup_platform();
return 0;
}

int FGpioOutputExample(void)
{
XGpio led_out;
u32 led_channel = 1;
int status;
u32 maxloop = 3;
u32 led_bit;
u32 led_width = 4;
u32 i;
status = XGpio_Initialize(&led_out, 0);
if(status != XST_SUCCESS)
{
return XST_FAILURE;
}
//set all output
XGpio_SetDataDirection(&led_out, led_channel, 0x0);
//set GPIO outputs to high
XGpio_DiscreteWrite(&led_out, led_channel, 0x0F);
for(i = 0; i < maxloop; i++)
{
for(led_bit = 0; led_bit < led_width; led_bit++)
{
XGpio_DiscreteWrite(&led_out, led_channel, ~(1<<led_bit));
delay_ms(200);
}
}
return 0;
}

4.7 编译下载调试

在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_42315062/article/details/135256543
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。