1.1简介
zynq嵌入式系统开发流程
开发流程大体可以分为 6 步。其中 step1 至 step4 为硬件设计部分,在 Vivado 软件中实现; step5 为软件设计部分,在 SDK 软件中实现;step6 为功能的验证
1.2实验任务
1.3硬件设计
1.3.1创建Vivado工程
1.3.2使用IP Intergrator 创建Processing System
PS-PL Configuration页面能够配置PS-PL接口,包括AXI、HP和ACP总线接口。
Peripheral IO Pins 页面可以为不同的UO外设选择MIO/EMIO配置。
MIO Configuration页面可以为不同的IO外设具体配置MIO/EMIO。
Clock Configuration页面用来配置PS输入时钟、外设时钟,以及 DDR和CPU时钟等。DDR Configuration页面用于设置DDR控制器配置信息。
SMC Timing Calculation页面用于执行SMC 时序计算。Interrupts页面用于配置PS-PL中断端口。
PS 和外部设备之间的连接主要是通过复用的输入/输出(Multiplexed Input/Output,MIO)来实现的。 PS 的 54 个 MIO 引脚可以用于连接不同的外设接口
1.3.3生成顶层 HDL 模块
1.Generate Output Products
2.Generate Output Products
如果设计中使用了 PL 的资源,则需要添加引脚约束并对该设计进行综合、实现并生成 Bitstream 文件。
1.导出硬件。 在菜单栏选择 File > Export > Export hardware
2.硬件导出完成后,在菜单栏中选择 File > Launch SDK,启动 SDK 开发环境
1.4 软件设计
在硬件设计的最后,我们启动了软件开发环境(SDK,Software Development Kit),如下图所示:
SDK 打开后,主页面会显示硬件描述文件 system.hdf 的内容,system.hdf 标签页显示 了整个 PS 系统的地址映射信息。
在启动 SDK 之前,我们将硬件以一个 ZIP 压缩文件(system_wrapper.hdf)的形式导 出到软件的工作空间。在 SDK 启动时,该文件会自动解压,大家可以在图 1.4.1 的左侧看到解压后的所有 文件。其中,前四个文件(ps7_init_gpl.c、ps7_init_gpl.h、ps7_init.c 和 ps7_init.h)包含了 Zynq SOC 处理系 统的初始化代码,以及 DDR、时钟、pll 和 MIO 的初始化设置信息。在初始化过程中,SDK 使用这些信息 去配置相应的模块,使得应用程序能够在 PS 上运行。
1.5在 SDK 中创建应用工程
在菜单栏选择 File > New > Application Project, 新建一个 SDK 应用工程。
SDK 创建了一个 hello_world 应用工程和 hello_world_bsp 板级支持包(BSP)工程。同时工具会自 动对工程进行编译,并生成 ELF 文件“hello_world.elf”
#incldue<stdio.h>
#include"platform.h"
#include"xil_printf.h"
int main()
{
init_platform();
printf("hello world");
cleanup_platfor();
return 0;
}
init_platform 函数的作用是使能 caches 和初始化 uart;
cleanup_platform 函数的作用是取消使 能 caches