0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx Vivado创建MicroBlaze工程运行Hello World C语言程序

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读

阅读本文前,请先阅读:

(1)【教程】Xilinx Vivado/Vitis 2020.1创建最简单的MicroBlaze工程运行Hello World C语言程序(不使用外部DDR3内存),并固化到SPI Flash

https://blog.csdn.net/ZLK1214/article/details/111824576

(2)Xilinx 2020.1 MIG核读写DDR3内存,新建工程时配置MIG核的完整步骤

https://blog.csdn.net/ZLK1214/article/details/111349678

添加了DDR3内存以后,程序既可以运行在BRAM里面,也可以运行在DDR3内存里面。但如果运行在DDR3内存里面,固化起来会比较麻烦,需要借助SREC SPI Bootloader。

建立带DDR3内存的MicroBlaze工程的方法很简单:以不带DDR3的工程(1)为基础,只需要在Clocking Wizard和Processor System Reset之间插入一个MIG IP核就可以了。

poYBAGIMpkCARqygAAKR15cvwcw769.png

原本,Clocking Wizard输出的时钟是100MHz,是直接接到Processor System Reset上的。
修改后,两者中间插入了一个MIG。Clocking Wizard的时钟输出变成了200MHz,给MIG提供时钟。在MIG的内部由PLL倍频到400MHz驱动外部DDR3内存,然后再分频到100MHz从ui_clk引脚输出出来,给Processor System Reset提供时钟。
修改后,MicroBlaze的运行频率没有变,仍然是100MHz。

建立工程的时候一定要小心使用Vivado的自动连线的功能,操作不当的话很容易产生两个Processor System Reset。

下面详细说明一下工程的建立步骤。

首先在空白Block Design里面添加Clocking Wizard和MIG IP核:

poYBAGIMpkGAR328AABGZ1HHdO0264.png

修改Clocking Wizard的配置:

pYYBAGIMpkOAU62sAAEQHRPvHsY680.png

MIG的详细配置请参考上面的文章(2),关键配置单独挑出来说明一下:

poYBAGIMpkWACjr5AAIa-A20Ydk009.png

pYYBAGIMpkaAc_EBAACgta7GR24335.png

现在可以添加MicroBlaze核了,添加后点击Run Block Automation,请注意时钟的选择:

pYYBAGIMpkiAe9bNAAINzfM07EA633.png

poYBAGIMpkqAFY2JAAFqNTj8Z-Y373.png

点击Run Connection Automation,通过一个新建的AXI SmartConnect将MIG的S_AXI和MicroBlaze连接起来:

pYYBAGIMpk2AQK7LAAFIsfmJ1No020.png

自动连接剩余的接口

poYBAGIMplGAcAI9AAFbT5hAWDU717.png

pYYBAGIMplSAGFXkAAGkJ3l4nd4042.png

添加AXI Uartlite串口,用于printf打印:

pYYBAGIMplWAJaSOAAG6n8o5fIc509.png

Run Connection Automation,将Uartlite与MicroBlaze连在一起:

poYBAGIMpleAL18mAAD-3WnCWCA451.png

最终连线结果:

pYYBAGIMplqAAR57AAHvKU1DdII940.png

地址分配:

poYBAGIMplyAXOkKAAEWpxuS6kQ525.png

引脚配置:

pYYBAGIMpl2AYcRsAAEADikOE14680.png

综合时会提示BANKBONE错误:

poYBAGIMpl-AUdDVAAFdeUMQX44786.png

[Place 30-575] Sub-optimal placement for a clock-capable IO pin and MMCM pair. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.

design_1_i/clk_wiz_0/inst/clkin1_ibufg (IBUF.O) is locked to IOB_X1Y26
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKIN1) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1

The above error could possibly be related to other connected instances. Following is a list of
all the related clock rules and their respective instances.

Clock Rule: rule_mmcm_bufg
Status: PASS
Rule Description: An MMCM driving a BUFG must be placed on the same half side (top/bottom) of the device
design_1_i/clk_wiz_0/inst/mmcm_adv_inst (MMCME2_ADV.CLKFBOUT) is provisionally placed by clockplacer on MMCME2_ADV_X1Y1
and design_1_i/clk_wiz_0/inst/clkf_buf (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y31

将错误信息中提示的代码加入xdc文件就可以屏蔽掉此错误:

pYYBAGIMpmCAfqu5AAFFEFvOfBo501.png

poYBAGIMpmKAQiV3AAKlWVadyVw422.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR3
    +关注

    关注

    2

    文章

    277

    浏览量

    42505
  • MicroBlaze
    +关注

    关注

    3

    文章

    68

    浏览量

    21633
收藏 人收藏

    评论

    相关推荐

    使用MCUXpresso for VS Code插件开发Zephyr的hello world

    本期来到Zephyr实战经验演练,小编带着大家一起使用MCUXpresso for VS Code插件来开发一个属于Zephyr的hello world
    的头像 发表于 01-03 09:21 696次阅读
    使用MCUXpresso for VS Code插件开发Zephyr的<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    Xilinx_Vivado_SDK的安装教程

    首先是去官网下载安装包:https://www.xilinx.com/support/download.html。 下载这个最大的、支持所有的 OS 如 Windows/Linux 的安装包。 下载
    的头像 发表于 11-16 09:53 2069次阅读
    <b class='flag-5'>Xilinx_Vivado</b>_SDK的安装教程

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,程序可以发送和接收数据,实现不同计算机之间的
    的头像 发表于 11-01 16:51 554次阅读

    使用Vivado通过AXI Quad SPI实现XIP功能

    本博客提供了基于2023.2 Vivado的参考工程,展示如何使用Microblaze 地执行(XIP)程序,并提供一个简单的bootloader。
    的头像 发表于 10-29 14:23 676次阅读
    使用<b class='flag-5'>Vivado</b>通过AXI Quad SPI实现XIP功能

    如何在i2c中将hello world发送到LCD屏幕?

    有谁知道如何在 i2c 中告诉这个以将 hello world 发送到 LCD 屏幕?当我查找我的 4BIT 引脚时,我可以很好地做到这一点,但是当使用 i2c 时,我似乎在任何地方都
    发表于 07-11 06:10

    esp32运行make flash烧写hello world遇到的疑问求解

    串口驱动安装正常,连接正常 在demo目录里hello world程序下,运行make all,编译正常, 然后运行 make flash
    发表于 06-26 06:25

    鸿蒙OpenHarmony【轻量系统 编写“Hello World程序】 (基于Hi3861开发板)

    下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。
    的头像 发表于 05-16 18:15 1093次阅读
    鸿蒙OpenHarmony【轻量系统 编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861开发板)

    鸿蒙OpenHarmony【小型系统 编写“Hello World程序】 (基于Hi3516开发板)

    展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello
    的头像 发表于 05-10 16:26 778次阅读
    鸿蒙OpenHarmony【小型系统 编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516开发板)

    鸿蒙OpenHarmony【标准系统 编写“Hello World程序】(基于RK3568开发板)

    下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello
    的头像 发表于 05-09 17:58 1004次阅读
    鸿蒙OpenHarmony【标准系统 编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】(基于RK3568开发板)

    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

    方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello
    的头像 发表于 05-07 17:34 1005次阅读
    鸿蒙OpenHarmony南向:【Hi3516标准系统入门(IDE方式)】

    鸿蒙OpenHarmony【标准系统编写“Hello World程序】 (基于RK3568开发板)

    编写“Hello World程序 下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序
    的头像 发表于 04-24 17:32 1019次阅读
    鸿蒙OpenHarmony【标准系统编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于RK3568开发板)

    鸿蒙OpenHarmony【小型系统编写“Hello World程序】 (基于Hi3516开发板)

    下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello
    的头像 发表于 04-22 21:55 458次阅读
    鸿蒙OpenHarmony【小型系统编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3516开发板)

    鸿蒙OpenHarmony【轻量系统编写“Hello World程序】 (基于Hi3861开发板)

    下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。
    的头像 发表于 04-21 21:44 454次阅读
    鸿蒙OpenHarmony【轻量系统编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”<b class='flag-5'>程序</b>】 (基于Hi3861开发板)

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用AWTK创建
    的头像 发表于 03-21 08:23 728次阅读
    【从0开始<b class='flag-5'>创建</b>AWTK应用<b class='flag-5'>程序</b>】编译应用到RTOS平台

    全志D1s开发板软件入门之Hello World演示

    开发者的应用工程放在package下,在package中创建test文件夹,在test文件夹中创建hello_word.c文件。 为了紧密结合嵌入式开发,此处提供使用Makefile
    发表于 03-06 11:30