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

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

3天内不再提示

在Vitis中通过PSU DDR执行MicroBlaze应用

XILINX开发者社区 来源:XILINX开发者社区 2023-06-21 09:39 次阅读

MicroBlaze CPU 是可修改的拖入式预设 32 位/64 位 RISC 微处理器配置系列。

MicroBlaze 处理器能满足众多多样化的应用程序的不同需求,惠及工业、医疗、汽车、消费品和通信市场。MicroBlaze 使用哈佛 (Harvard) 架构,此架构的 PL 内通常包含双 LMB BRAM。但在本篇博文中,我们将探讨如何在 Zynq UltraScale ZCU104 开发板上通过 PSU DDR 执行 MicroBlaze 应用。

退出复位时,MicroBlaze 将从 MicroBlaze 配置中的 C_BASE_VECTORS 参数内指定的存储器地址提取其指令。在本例中,此 C_BASE_VECTORS 将设置为 PSU DDR 内的某个区域。

但根据采用的启动流程,这样可能导致潜在问题,即 PSU DDR 可能无法先于 PL 完成配置。这可能导致 MicroBlaze 挂起。为避免此现象,我们可以使用 MicroBlaze 上的“Reset Mode”(复位模式)信号

1412a14e-0f63-11ee-962d-dac502259ad0.png

在上表中,可以看到各种 reset_mode 配置。最适合我们的用例的配置为“01”,其中 MicroBlaze 将保持处于复位状态,直至我们准备就绪为止。我们将在 PSU 上通过 EMIO 来使用 GPIO 对 MicroBlaze 进行解复位。

创建硬件

Vivado IP integrator 块设计如下所示:

145174fa-0f63-11ee-962d-dac502259ad0.png

用户可以根据自己认为合适的方式来自定义设计。

关键组件配置如下所述。

MicroBlaze 配置:

在 Vivado IP integrator 中使用“Block Automation”(块自动化设置)工具来对 MicroBlaze 进行初始配置,如下所示。此处移除了本地存储器,改为使用 64K 高速缓存:

1478265e-0f63-11ee-962d-dac502259ad0.png

要启用 reset_mode 和 wakeup 管脚,用户需在 MicroBlaze 配置中选中“Enable Discrete Ports”以启用离散端口

14a24de4-0f63-11ee-962d-dac502259ad0.png

在 Zynq UltraScale PS 配置中,启用两个从端口;一个用于存储器,另一个用于外设:

14c8d8c4-0f63-11ee-962d-dac502259ad0.png

通过 EMIO 启用 GPIO,这样就可以控制 MicroBlaze 的 wakeup 管脚:

14f8d74a-0f63-11ee-962d-dac502259ad0.png

我们还可访问已从 MicroBlaze 启用的所有 Zynq UltraScale IP。为此,请启用“Address Fragmentation”(地址分段):

152aa040-0f63-11ee-962d-dac502259ad0.png

在上文中我们讨论了复位模式。接下来,MicroBlaze 将保持复位状态,直至我们准备就绪为止。

要使 MicroBlaze 保持复位,可以使用 IP 目录中的“Constant IP”:

1543be90-0f63-11ee-962d-dac502259ad0.png

最后,连接 GPIO 和 Constant IP:

156681fa-0f63-11ee-962d-dac502259ad0.png

MicroBlaze 地址映射如下所示:

159a5a5c-0f63-11ee-962d-dac502259ad0.png

用户可以右键单击地址段,在地址映射中添加或排除地址段。

此操作适用于硬件配置。我们可以使用“Generate the Output Products”(生成输出文件)、“Create the HDL wrapper”(创建 HDL 封装文件)和“Generate the Bitstream”(生成比特流),然后导出硬件。

这将生成 XSA 以供在 Vitis 中用于生成我们的软件。

创建软件:

Vitis IDE 可用于生成 MicroBlaze 应用。Vitis 还将自动创建启动镜像,包括 FSBL 和 PMUFW。

但由于我们想要从 FSBL 控制 GPIO EMIO,因此我们选择不使用工具来生成启动镜像。

15a6f41a-0f63-11ee-962d-dac502259ad0.png

生成 MicroBlaze Hello World 应用:

15cc5bb0-0f63-11ee-962d-dac502259ad0.png

15fc27c8-0f63-11ee-962d-dac502259ad0.png

我们可以添加新工程应用,如下所示。例如,对于 Zynq FSBL:

16135362-0f63-11ee-962d-dac502259ad0.png

163bfede-0f63-11ee-962d-dac502259ad0.png

注释:FSBL 不支持 64 位到 32 位交接。因此,由于 MicroBlaze 为 32 位,我们也应将 FSBL 设置为 32 位。

16842ff6-0f63-11ee-962d-dac502259ad0.png

16971b5c-0f63-11ee-962d-dac502259ad0.png

针对 PMUFW 重复上述操作:

16c6ba4c-0f63-11ee-962d-dac502259ad0.png

16eabad2-0f63-11ee-962d-dac502259ad0.png

可看到所有应用工程如下所示:

16fde09e-0f63-11ee-962d-dac502259ad0.png

由于我们已将 PS UART 添加到 MicroBlaze 地址映射中,因此可在 BSP 中将其用于 STDIN/OUT。

1729e64e-0f63-11ee-962d-dac502259ad0.png

1766d3a6-0f63-11ee-962d-dac502259ad0.png

此处可以看到 MicroBlaze Hello World 连接器

177cc01c-0f63-11ee-962d-dac502259ad0.png

其布局位置为 DDR 基址 (0x00000000) 处。用户创建启动镜像时,需牢记此地址,以免应用程序发生重叠。

通过 SD 卡进行编程

首先,更新 FSBL。

我们可以使用 Xil_Out32 API 来切换 GPIO。

将 xil_io 头文件添加到 xfsbl_handoff.c 文件:

17a22474-0f63-11ee-962d-dac502259ad0.png

将此添加到 XFsbl_HandoffExit 函数

17c41b42-0f63-11ee-962d-dac502259ad0.png

同时启用 FSBL 调试信息

17df4e26-0f63-11ee-962d-dac502259ad0.png

创建启动镜像:

180f8ea6-0f63-11ee-962d-dac502259ad0.png

移除 FSBL 和 PMUFW,并使用正确的镜像类型重新添加。

请确保分区镜像顺序正确(使用上下控件来调整其顺序)。

18417a74-0f63-11ee-962d-dac502259ad0.png

185667d6-0f63-11ee-962d-dac502259ad0.png

注释:由于此处共享相同 UART,用户可以在 Hello World 应用中布局延迟。

通过 JTAG 进行编程:

188467e4-0f63-11ee-962d-dac502259ad0.png

18af2024-0f63-11ee-962d-dac502259ad0.png

这样可看到如下输出:

18cba316-0f63-11ee-962d-dac502259ad0.png

审核编辑:汤梓红

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

    关注

    68

    文章

    10824

    浏览量

    211088
  • Xilinx
    +关注

    关注

    71

    文章

    2163

    浏览量

    120971
  • 微处理器
    +关注

    关注

    11

    文章

    2247

    浏览量

    82306
  • RISC
    +关注

    关注

    6

    文章

    461

    浏览量

    83651
  • Vitis
    +关注

    关注

    0

    文章

    145

    浏览量

    7400

原文标题:开发者分享|在Vitis中通过 PSU DDR 执行 MicroBlaze 应用

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MicroBlaze串口设计

    本系统,Basys3的MicroBlaze模块调用基于AXI协议的UART IP核,通过AXI总线实现MicroBlaze-UART之间的通信,完成串口打印。
    发表于 08-02 09:32 1395次阅读
    <b class='flag-5'>MicroBlaze</b>串口设计

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    的工程。 首先在更新之前需要将旧版工程更新到vitis2023.2的classic Vitis IDE,否则在执行更新命令是会产生警告,这个警告也会导致后续更新失败。如下: 更新到vitis
    发表于 03-24 17:14

    vivado下外部逻辑和MicroBlaze交换数据

    的方式是外部逻辑通过AXI4将数据写到DDR3,然后microblaze将数据从DDR3读出
    发表于 03-21 14:01

    DDR3 SDRAM的简单代码如何编写

    使用microblaze处理器。我必须通过DDR3内存发送一些固定值,如8位数据(X'FF'),即我将该数据写入Genesys2 DDR3内存并从内存
    发表于 05-05 15:29

    使用Vitis EBAZ4205(ZYNQ)矿机上实现"Hello World!"

    ZYNQ 设置串口引脚为 24, 25 。另外一个就是需要设置 ZYNQ 的DDR3,EBAZ4205 上用的DDR3 芯片型号是 EM6GD16EWKG-12H ,
    发表于 03-06 22:59

    请问如何通过MicroBlaze访问BRAM?

    嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通过Microblaze读取存储BRAM(coe文件)的数据进行计算。我是微博阅读部分的新手。有人
    发表于 05-20 08:38

    【正点原子FPGA连载】第一章MicroBlaze简介--摘自【正点原子】达芬奇之Microblaze 开发指南

    使用Xilix提供的Vitis统一软件平台。Vivado我们可以Block Design搭建Mi
    发表于 10-16 16:28

    使用Vitis HLS创建属于自己的IP相关资料分享

    。HLS 采用 C 和 C++ 描述并将它们转换为自定义硬件 IP,完成后我们就可以 Vivado 项目中使用该IP。Vitis HLS创建一个新的 HLS 项目:通过从Linux 终端键入
    发表于 09-09 16:45

    PYNQMicroBlaze程序文件的加载过程

    PYNQ的base overlay 添加了MicroBlaze通过MicroBlaze 来配置PMOD 和ardonio 接口并驱动外
    发表于 03-16 09:15 2242次阅读

    怎么Vitis设定Kernel的频率?

    Vitis中选择平台时可以看到默认的时钟频率是300Mhz和500Mhz. Vitis Application Acceleration Development Flow 我们看到
    的头像 发表于 06-12 14:19 3.7w次阅读

    Xilinx Vitis 2020.1运行C程序时提示找不到microblaze_0

    Xilinx Vitis 2020.1里面运行C程序时提示找不到microblaze_0
    的头像 发表于 02-16 16:21 3429次阅读
    Xilinx <b class='flag-5'>Vitis</b> 2020.1运行C程序时提示找不到<b class='flag-5'>microblaze</b>_0

    Xilinx Vitis 2020.1里面MicroBlaze软核的sleep函数卡死的问题

    Vitis里面创建了一个LwIP工程,调试的时候发现,BRAM里面运行正常,但如果改到DDR3内存里面运行,启动时就会卡死sleep函
    的头像 发表于 02-16 16:21 2882次阅读
    Xilinx <b class='flag-5'>Vitis</b> 2020.1里面<b class='flag-5'>MicroBlaze</b>软核的sleep函数卡死的问题

    Vitis调试ARM可信固件和U-boot

    本篇博文中,我们将探讨如何在 Vitis 调试 Zynq UltraScale 器件启动镜像。这些启动镜像包括 ARM 可信固件 (ATF) 和 U-boot。
    的头像 发表于 08-02 10:14 3475次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Vitis</b><b class='flag-5'>中</b>调试ARM可信固件和U-boot

    Vitis通过PSU DDR执行MicroBlaze应用

    MicroBlaze™ CPU 是可修改的拖入式预设 32 位/64 位 RISC 微处理器配置系列。
    的头像 发表于 06-26 09:14 973次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Vitis</b><b class='flag-5'>中</b><b class='flag-5'>通过</b><b class='flag-5'>PSU</b> <b class='flag-5'>DDR</b><b class='flag-5'>执行</b><b class='flag-5'>MicroBlaze</b>应用

    UCC25640XLED照明PSU的优势

    电子发烧友网站提供《UCC25640XLED照明PSU的优势.pdf》资料免费下载
    发表于 08-27 10:21 0次下载
    UCC25640X<b class='flag-5'>在</b>LED照明<b class='flag-5'>PSU</b><b class='flag-5'>中</b>的优势