首页 首页 >  文章资讯

zynq开发系列1:vivado和sdk联合使用串口打印helloworld

发布时间:2023-08-12 09:56:43 浏览次数:74次

  • zynq开发流程如下所示,其中在SDK属于软件层面开发
    在这里插入图片描述

  • zynq开发最小系统,ps指zynq里的ps部分,核心为ARM Cortex A9处理器。周围两个外设,DDR3内存控制器用于存储数据,UART用于与外界通信
    在这里插入图片描述

  • 打开vivado新建工程,工程名为英文,路径也为英文可包含下划线
    在这里插入图片描述

  • 一路next,有芯片的选芯片型号,有板子的直接选用板子然后finish
    在这里插入图片描述

  • 模块化设计点击Create block design
    在这里插入图片描述

  • Diagram下点击加号新建IP
    在这里插入图片描述

  • 输入zynq按下enter表示选中该模块,经过一段时间后vivado自动生成好了
    在这里插入图片描述

  • 双击IP核对它进行配置,打开页面如下图所示。方框里面是PS,方框外面是PL。
    在这里插入图片描述

  • 根据Zedboard原理图Bank501UART对应的MIO4849选择Peripherla I/O Pins勾选一个UART1对应4849
    在这里插入图片描述

  • 或者直接在MIO Configuration勾上UART1自动显示MIO4849,48对应tx,49对应rx这与原理图是一致的
    在这里插入图片描述

  • 配置UART波特率为115200
    在这里插入图片描述

  • 配置完UART原理图没有任何变化,因为UART属于FIXED_IO,展开FIXED_IO,UART属于MIO[53:0]
    在这里插入图片描述

  • 删除M_AX_GP0接口,这属于PS和PL间接口,点击PS-PLConfiguration点击第二个,展开把 M AXI GP0 interface前的勾去掉
    在这里插入图片描述

  • 顺便也删了M_AX_GP0_ACLK接口,这是M_AX_GP0附带的时钟信号
    在这里插入图片描述

  • FCLK_CLK0是PS提供给PL的时钟信号,在时钟端点击Clock Configuration展开PL Fabric Clocks把FCLK_CLK0前的勾取消掉
    在这里插入图片描述

  • 时钟取消掉的原理图如下图所示
    在这里插入图片描述

  • FCLK_RESET0_N是PS提供给PL的复位接口,在PS-PL Configuration点击General,展开Enable Clock Resets,把FCLK_RESET0_N前的勾取消掉
    在这里插入图片描述

  • zynq上不用的接口完全被移除掉了
    在这里插入图片描述

  • 点击接口右键make external(run block automation也可以帮忙完成端口创建)
    在这里插入图片描述

  • 扩展出来的端口可以连接到器件引脚上
    在这里插入图片描述

  • 可以点击validate design来验证结果有没有问题
    在这里插入图片描述

  • 在sources下右击bd文件Generate Output Products可勾选global或直接点击Generate
    在这里插入图片描述

  • 生成结果可以点击IP Sources查看,可以看出生成了管脚约束,ps端不需要另外管脚约束在这就已经自动生成了
    在这里插入图片描述

  • 返回Hierarchy,右键点击Create HDL Wrapper生成顶层文件。保持默认让vivado管理自动更新,点击OK
    在这里插入图片描述

  • 可以看到多了一个_wrapper.v的顶层文件,文件里有DDR和FIXED_IO的端口声明


  • 导出硬件到SDK,没有设计到PL部分的开发所以不需要include bitstream,勾不需要勾,不然弹出黄色警告
    在这里插入图片描述

  • 导出硬件后可以看出多了一个sdk文件夹,里面只有一个hdf文件,这是一个压缩文件可以直接打开来看,导入sdk后加载的文件
    在这里插入图片描述

  • 然后点击下一个选项,launch sdk点击OK可以看见SDK在加载中
    在这里插入图片描述

  • 新建一个application project,Processor下拉有两个说明这是一个双核处理器,保持默认即可,选择模板Hello world后Finish,也可以直接从空模板开始敲
    在这里插入图片描述

  • 可以看出生成了一个helloworld工程,helloworld_bsp是板级支持包,展开src,里的helloworld.c是主文件
    在这里插入图片描述

  • 打开SDK Terminal点击加号新建串口,Port选择com 7(根据设备管理器确定)后OK
    在这里插入图片描述

  • 没有对PL部分进行编程故直接点绿色三角开始运行即可,将elf文件下载进板子(elf是arm上的可执行文件),可以看见SDK的串口打印出Hello World,这是可执行文件输出的字符串通过串口发送给电脑
    在这里插入图片描述


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至 lnkj@3173.top ,我们将及时沟通与处理。 本站内容除了3117站长服务平台( www.3117.cn )原创外,其它均为网友转载内容,涉及言论、版权与本站无关。