zynq学习记录之z7-Lite核心板—裸机helloword 与 freeRTOS helloword

本文详细记录了在ZynqZ7-Lite核心板上,从使用Vivado创建工程,配置块设计,设置UART通信,到生成HDLWrapper并导出到SDK的过程。接着在SDK中编写裸机HelloWord程序并进行调试。最后,介绍了如何新建FreeRTOS工程,修改定时器中断代码,实现定时任务的运行。
摘要由CSDN通过智能技术生成

zynq学习记录之z7-Lite核心板—裸机helloword 与 freeRTOS helloword

新建vivado工程

新建工程目录如下图所示:
在这里插入图片描述

1、点击“next>”

2、进入下图界面,勾选“Don not specify source at this time”

在这里插入图片描述

点击“next>”
根据官方文档,我们选择“xc7z010clg400-1”
在这里插入图片描述

在这里插入图片描述1、点击“next>”

2、点击“Finish”

在这里插入图片描述
工程创建完成

创建块设计

工程创建完成后点击创建块设计

在这里插入图片描述
1、命名为hello

2、点击OK

在这里插入图片描述

点击中间的“+”号添加块

在这里插入图片描述

在弹出的对话框中输入“zynq”,并双击

在这里插入图片描述

得到如下界面

在这里插入图片描述
块创建完成

配置块

双击添加的 ZYNQ7 Processing System块,进入配置界面
在这里插入图片描述

首先配置UART管脚,按照下图所指示的顺序进行配置

在这里插入图片描述

在MIO Configuration中检查我们的uart管脚信息和bank电压

在这里插入图片描述

在PS-PL Configuration界面配置uart的波特率为115200

在这里插入图片描述

在DDR Configuration界面选择DDR型号为“MT41J256M16 RE-125
(注意不要选错,否则导入SDK后,debug 和 RUN 会报错)

在这里插入图片描述

选择位宽为16Bit

在这里插入图片描述

在时钟配置界面,取消勾选“FCLK_CLK0”

在这里插入图片描述

在PS-PL Configuration中取消勾选“FCLK_REDET0_N”

在这里插入图片描述

在同样的界面下方的AXI NonSecure Enablement界面,取消勾选M AXI GP0 interface

在这里插入图片描述

配置完成,点击OK,退出配置界面

得到如下图所示的ZYNQ7 Processing System模块

在这里插入图片描述

点击下图所示的Run Block Automation

在这里插入图片描述

在弹出的如下对话框中,点击OK

在这里插入图片描述

配置完成的IP如下图所示

在这里插入图片描述
1、ctrl + s 保存当前工程,

2、右键点击空白处,在弹出的对话框中选择Validate Design来验证设计

如果有问题则需返回检查

在这里插入图片描述

1、选中Sources

2、右键点击hello.bd

3、在弹出的对话框中选择Generate Output Products

在这里插入图片描述

在这里插入图片描述

在弹出的对话框中点击OK

在这里插入图片描述

再次右键点击hello.bd

选择Create HDL Wrapper

在这里插入图片描述

勾选Let Vivado manage wrapper and auto-update

点击OK

在这里插入图片描述

导出至SDK

到此为止工程配置完成

根据官方手册,这个工程无需编译比特流,所以直接导出SDK

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

SDK新建工程

在这里插入图片描述

在这里插入图片描述

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

修改main文件如下

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "sleep.h"

int main()
{
    init_platform();

    while(1)
    {
    	print("Hello World\n\r");
    	
    	sleep(1);
    }
    
    cleanup_platform();
    return 0;
}

点击debug

在这里插入图片描述

进入调试界面

在这里插入图片描述

可以看到串口助手收到了板卡发送的“Hello World”

在这里插入图片描述

然后退出调试界面,点击RUN

在这里插入图片描述

在串口助手上可以观察到,几乎是间隔1s,收到一条来自板卡的数据。

在这里插入图片描述

新建freeRTOS工程

在这里插入图片描述

在这里插入图片描述

我们修改定时器中断的代码如下

static void vTimerCallback( TimerHandle_t pxTimer )
{
	long lTimerId;
	configASSERT( pxTimer );

	lTimerId = ( long ) pvTimerGetTimerID( pxTimer );

	if (lTimerId != TIMER_ID) {
		xil_printf("FreeRTOS Hello World Example FAILED");
	}

	/* If the RxtaskCntr is updated every time the Rx task is called. The
	 Rx task is called every time the Tx task sends a message. The Tx task
	 sends a message every 1 second.
	 The timer expires after 10 seconds. We expect the RxtaskCntr to at least
	 have a value of 9 (TIMER_CHECK_THRESHOLD) when the timer expires. */
	if (RxtaskCntr >= TIMER_CHECK_THRESHOLD) {
		xil_printf("FreeRTOS Hello World Example PASSED");
	} else {
		xil_printf("FreeRTOS Hello World Example FAILED");
	}

//	vTaskDelete( xRxTask );
//	vTaskDelete( xTxTask );
}

注释掉了 删除xRxTask 和xTxTask 线程的代码,
// vTaskDelete( xRxTask );
// vTaskDelete( xTxTask );

这样再点击RUN

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值