文章目录
- 前言
- 1 基于ARM的裸机程序设计与开发
- 1.1 用Vivado创建工程
- 1.2 Zynq IP核的设置
- 2 用SDK创建和编写裸机应用程序
- 创建应用工程
- 编写C代码
- 3 zynq SOC开发的总结(PL+PS)
前言
- 在Zynq笔记(一)中,我们已经了解了PL端的设计流程,且最终生成了比特流文件,并进行了上板验证与调试。
- 接下来就用一个简单的例子来介绍PS端的设计流程。(使用GPIO来点亮LED)
- PS端的设计主要包括两个部分:
1 基于ARM的裸机程序设计与开发
1.1 用Vivado创建工程
- 和普通的工程创建相同,这里的重点在于PS端设计开发,因此主要进行器件的选择,不进行v文件的编写,创建完成后即可。
1.2 Zynq IP核的设置
- 首先用IP 集成环境来进行块设计
- 为设计设置名称——ok——自动跳转生成界面
- 点击界面加号即可跳转到搜索框,我们就可以在里面输入Zynq,即可添加该IP核
- 双击添加之后的IP核,就能看到Zynq的接口界面,从而能对齐进行参数的设置
- 点击接口界面中的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);
}
}
- 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程序,编译运行