前言
-
在Zynq笔记(一)中,我们已经了解了PL端的设计流程,且最终生成了比特流文件,并进行了上板验证与调试。 -
接下来就用一个简单的例子来介绍PS端的设计流程。(使用GPIO来点亮LED) -
PS端的设计主要包括两个部分:
1 基于ARM的裸机程序设计与开发
1.1 用Vivado创建工程
1.2 Zynq IP核的设置
2 用SDK创建和编写裸机应用程序
创建应用工程
编写C代码
#include "xparameters.h"
#include "xil_io.h"
#include "xgpiops.h"
#include "sleep.h"
int main (void)
{
u32 reg_val = 0;
u32 Data = 0;
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);
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)
{
Data =((~(1<<7))<<16)|(1<<7);
Xil_Out32(XPAR_PS7_GPIO_0_BASEADDR + XGPIOPS_DATA_LSW_OFFSET,Data);
usleep(1000000);
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程序,编译运行
参考: 小梅哥Zynq SOC 嵌入式设计课程 https://www.cnblogs.com/xianyufpga/p/11181816.html https://article.itxueyuan.com/PgEAvk
|