Zynq笔记(二)——PS端(ARM)的设计流程(用SDK创建和编写逻辑应用程序)

前言

  1. 在Zynq笔记(一)中,我们已经了解了PL端的设计流程,且最终生成了比特流文件,并进行了上板验证与调试。

  2. 接下来就用一个简单的例子来介绍PS端的设计流程。(使用GPIO来点亮LED)

  3. PS端的设计主要包括两个部分:

    • 基于ARM的裸机程序设计与开发
    • 用SDK创建和编写裸机应用程序

1 基于ARM的裸机程序设计与开发

1.1 用Vivado创建工程

  • 和普通的工程创建相同,这里的重点在于PS端设计开发,因此主要进行器件的选择,不进行v文件的编写,创建完成后即可。
    在这里插入图片描述

1.2 Zynq IP核的设置

  • 首先用IP 集成环境来进行块设计
    在这里插入图片描述

  • 为设计设置名称——ok——自动跳转生成界面
    在这里插入图片描述

  • 点击界面加号即可跳转到搜索框,我们就可以在里面输入Zynq,即可添加该IP核
    在这里插入图片描述
    在这里插入图片描述

  • 双击添加之后的IP核,就能看到Zynq的接口界面,从而能对齐进行参数的设置
    在这里插入图片描述
    在这里插入图片描述

  • 由于我们采用GPIO点亮LED,因此我们需要进行IO的配置。

  • 点击接口界面中的ENET1,并下滑找到GPIO,进行相应的勾选
    在这里插入图片描述
    在这里插入图片描述

  • 进行DDR的参数配置(主要进行型号的选择,根据开发板上DDR的型号来找)
    在这里插入图片描述

  • 目前所需要的配置已经完成,点击run Block,ok后相应的IO被导出
    在这里插入图片描述
    在这里插入图片描述

  • 因为我们这里没有用到时钟引脚,如果直接生成配置文件会出错,因此可以直接进行如下的连线,或者将时钟接口取消掉
    在这里插入图片描述
    在这里插入图片描述
    修改完成后进行校验,成功即可。
    在这里插入图片描述

  • 块创建完成后,都是以符号的形式呈现的,因此我们将其生成输出的配置文件
    在这里插入图片描述

  • 创建HDL Wrapper,且能在资源处看到创建好的wrapper文件,因此配置文件也ok了
    在这里插入图片描述
    在这里插入图片描述

  • 比特流文件的生成(等待)在这里插入图片描述

  • 将我们创建的PS系统导出(秒完)【这里导出的时候包含我们的比特流文件】
    在这里插入图片描述
    在这里插入图片描述
    以上就是创建包含zynq PS硬核的系统 的流程,接下来我们就可以进行C程序的编写来实现控制。


2 用SDK创建和编写裸机应用程序

  • 打开Launch SDK
    在这里插入图片描述

  • ok后,软件就会自动打开elipse,出现如下界面,我们可以看到自动生成了system_wrapper_hw_platform_0
    在这里插入图片描述

创建应用工程

在这里插入图片描述

  • 命名和之前工程名称相同即可,Next,后空工程创建完成
    在这里插入图片描述
    在这里插入图片描述
    能看到 除了空工程,也可建立hello word 等

  • 创建source file(创建c文件),注意加 .c —— finish

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

编写C代码

#include "xparameters.h"
#include "xil_io.h"
#include "xgpiops.h"
#include "sleep.h"
int main (void)
{
u32 reg_val = 0;
u32 Data = 0;
//设置IO方向,bit7的方向为输出
reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET);
Data = reg_val | (1<<7);
Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DIRM_OFFSET,Data);
//设置输出使能,bit7输出使能
reg_val = Xil_In32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET);
Data = reg_val | (1<<7);
Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_OUTEN_OFFSET,Data);

while(1)
 {//设置bit7输出1
	Data =((~(1<<7))<<16)|(1<<7);
	Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,Data);
	usleep(1000000);
	//设置bit7输出0
	Data =((~(1<<7))<<16)& (~(1<<7));
	Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,Data);
	usleep(1000000);

 }
}
  1. ctrl+B(或者project——Build All)对已有工程进行编译即可。编译完后,要想在开发板上点亮LED,首先必须保证开发板正确连接,然后运行,点击run——run configurations,出现如下界面,双击GDB即可进入运行的调试界面(主要添加比特流文件和tcl脚本),另外勾选0核,相当于对于双核里面的0核进行调试
    在这里插入图片描述
    在这里插入图片描述
    进行Run,所连接的开发板就能看到LED的点亮效果。如果对C程序又进行了修改,那么同样的修改后保存,Ctrl+B进行编译,然后Run查看效果。

3 zynq SOC开发的总结(PL+PS)

1、创建Vivado工程
2、创建包含PS硬核的系统
3、导出包含包含PS系统的hdf文件(包含比特流文件)
4、在SDK中基于hdf文件创建板级信息文件
5、创建应用工程,然后创建c文件
6、编写c程序,编译运行

参考:
小梅哥Zynq SOC 嵌入式设计课程

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting_FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值