问题标签 [microblaze]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
749 浏览

vhdl - 如何使用 VHDL/Block 设计将 BRAM 重置为初始内容

我刚刚将一个 .bit 文件闪存到我的 Nexys4 DDR (Artix7) 板的 spi flash ram 中。

位文件包含一个 Microblaze,包括 BRAM 中的引导加载程序。Microblaze 通过 DLMB/ILMB 连接到“本地内存块”,并通过“axi smart connect”连接到外部 DDR ram。

如果我断开电源然后连接电源,我会看到电路板重新启动并且引导加载程序正确地从 DDR ram 加载固件。

但是,如果我使用重置按钮,我会看到开发板重置但 Microblaze 中的引导加载程序没有重新启动。重置按钮连接到(除其他外)用于重置 microblaze 的“处理器系统重置”IP 块。

我得出结论,Microblaze 的本地内存块/BRAM 没有重置为初始值。

  1. 初始引导加载程序 BRAM 位于何处?那是通过 DLMB/ILMB 连接的“本地内存块”吗?
  2. 如何将 BRAM 重置为初始引导加载程序/位文件值?
0 投票
1 回答
309 浏览

vhdl - Microblaze 的 bmm 文件中出现意外符号

我正在尝试掌握一个简单的 Microblaze 项目,并按照我找到的教程进行操作。我可以在 ISE 中成功合成设计,但是当我尝试实现该设计时,出现以下错误:

错误::11 - 应为意外符号“MICROBLAZE”、“ADDRESS_MAP 名称”。第 1 行,文件“ipcore_dir/microblaze.bmm”。错误:NgdBuild:989 - 无法处理 BMM 信息 ipcore_dir/microblaze.bmm

文件 microblaze.bmm 是由 microblaze 核心生成器生成的,所以我没有编辑内容。

使用 microblaze 内核生成的 .bmm 文件是:

microblaze 是用这个 vhdl 代码实例化的:

我已在 TCL 控制台中运行此命令以将 microblaze 包含在合成中。

源 ipcore_dir/microblaze_mcs_setup.tcl

我花了很长时间搜索各种教程,但我无法理解问题所在。有人可以给我一个提示,说明出了什么问题。

我似乎无法找到联系教程作者的方法。

我正在使用在虚拟设备中运行的 ISE14.7。

(编辑 - 添加了以下附加信息)

与错误选项卡相比,我查看了控制台选项卡,该选项卡似乎提供了更多信息:

ERROR::37 - 非法文件或路径名符号“MICROBLAZE”。第 5 行,文件“ipcore_dir/microblaze.bmm”。mcs_0/U0/lmb_bram_I/RAM_Inst/Using_B16_S9.The_BRAMs[0].RAMB16_S9_1 [31:24] INPUT = microblaze.lmb_bram_0.mem;

仔细观察 ISE 对microblaze.lmb_bram_0.mem不满意;我不清楚为什么。

下面是项目层次结构的快照:

项目层次结构

这是 MicroBlaze 设置

MicroBlaze 设置

0 投票
1 回答
905 浏览

terminal - MicroBlaze:应用程序烧录后如何通过 JTAG 链接查看应用程序消息

我使用基于 Eclipse 的 Xilinx 软件开发套件 (SDK) 14.7 为 MicroBlaze 微处理器创建、运行和调试应用程序。当我加载我的应用程序(SDK/运行)时,我通过 JTAG-UART USB 连接在 SDK 控制台上看到应用程序的 printf 消息。

我使用 Xilinx 平台电缆 USB II(型号 DLC10)。

:我用 FPGA+MicroBlaze 代码烧录 Xilinx FPGA 后如何查看应用程序消息。SDK 控制台不显示它们。

换句话说,如果使用 Altera Nios 术语,我会为 MicroBlaze 寻找“nios2-terminal”。

0 投票
1 回答
791 浏览

fpga - Zynq + Microblaze 通过智能互连共享 DDR 内存

我在 Xilinx Zed 板上有一个带有 Zynq 和 Microblaze 的块设计。

我希望 microblaze 能够访问与 PS 中的 arm corer 共享的 DDR 内存。我的 microblaze 使用缓存。microblaze M_AXI_DC、M_AXI_IC 上有两个 AXI 端口需要连接,以便它们可以访问 PS DDR 存储器。

  1. microblaze 端口是 AXI4,Zynq 使用 AXI3。M_AXI_DC、M_AXI_IC如何连接?

2.1。I2C 和 DC 端口的共享智能互连?

或者

2.2. 两个独立的端口智能互连?

或者可能

2.3. 一个连接到 HP0 和 HP1 的智能互连:

2.3. 方法 2.1、2.2 或 2.3 的性能是否不同?

0 投票
0 回答
708 浏览

c++ - 如何在给定自定义 C/C++ 代码的情况下生成 ELF 文件以覆盖现有项目中默认提供的 .elf 文件?

我一直在尝试确定是否可以使用 Xilinx Vivado 2018.3 中的 SDK 工具生成 ELF(可执行链接格式)以生成指令存储器内容。我在任何地方都看不到生成此类文件的简单过程(更新以匹配在使用 Microblaze 和 HDL 代码获取项目后修改的 cpp 源以及 CPP 源文件。

在上述工具集中生成 ELF 文件的任何帮助将不胜感激。

0 投票
0 回答
129 浏览

c++ - 尝试写入文件末尾,但改写

我在 Basys3 开发板上使用 microblaze 软处理器。我可以将文本文件写入 SD 卡,但我正在尝试写入文件末尾。目前它会覆盖文件中的任何内容。我使用 DFATFS 函数进行写作。Basys3 附有一个 PMOD uSD 读卡器。

我尝试使用 DFATFS 中的 fslseek 函数将文件指针移动到文件末尾,但它仍然写入开头。

我希望代码将文件指针移动到文件末尾并在前一行之后打印一个新行。当单步执行程序时(多次通过打印子例程),但它总是覆盖。

0 投票
1 回答
73 浏览

lwip - WolfSSL 在 Microblaze 速度上?

嗨,我有一个带有 ARTY-35T 的小型 ARTY 开发板,我有一个带有 lwip 和网络服务器的示例项目在板上运行。我想知道 WolfSSL 在没有浮点单元的情况下运行在 50MHz 的 Microblaze 上是否足够快。涉及所有数学问题,我想知道连接是否会在开发板上完成之前超时?有没有人有这方面的经验?

提前致谢。

0 投票
1 回答
35 浏览

c - 试图遍历整个内存空间,过早重置地址变量

我有一个 C 程序需要扫描从 0xC0000000 到 0xC0001FFF 的内存。在扫描器循环开始之前,有一个子程序用 0xFFFFFFFF 填充内存,这成功地通过了整个内存空间。然而,当主循环开始时,addr 变量在 0xC00003e0 而不是 0xC0001FFF 处重置。任何想法为什么会发生这种情况?让我知道是否需要包含其他内容。该程序使用 Microblaze 软处理器在 Basys3 FPGA 上运行。

目前主要的子程序存在于一个 while 循环中,while(addr <= MEM_TOP_ADDR)[检查 addr 是否小于或等于地址空间的末尾]。我以前的方法是if(addr >= MEM_TOP_ADDR),这两种方法都会导致相同的行为。

在程序当前空间中,最多可以数到0xC00003e0,然后退出while循环。在退出 while 循环之前,它应该计数到 0xC0001FFF

0 投票
0 回答
1956 浏览

c - 如何使用 GCC 强制枚举大小?

为了确保与我正在开发的产品的二进制兼容性,我需要强制我的一些枚举由单个字节表示。

由于 C90 允许编译器选择适当的类型(6.7.2.2 Enumeration specifiers),我想强制编译器选择 8 位。

我确实希望 GCC 属性允许这样做,但我在这里找不到任何东西。还有另一种方法来处理这个吗?(或我错过的一个属性)

我正在为 Microblaze 和 C90 使用 GCC 4.6.4(我在这里也没有看到相关选项)。

0 投票
0 回答
56 浏览

fpga - 如何减少使用 Microblaze 设计的寄存器读/写时间消耗?

我在许多项目中使用 Microblaze 软核处理器。我试图测量写入寄存器和读取寄存器操作的时间消耗。以下是一些结果:

  • 读取两个定时器值并将它们相减:48 个周期
  • 读取定时器,读取任何寄存器,再次读取定时器并减去定时器值:76 个周期
  • 读取定时器,写入任何寄存器,再次读取定时器并减去定时器值:83 个周期
  • 读取定时器,从任何寄存器读取,写入任何寄存器,再次读取定时器并减去值:111 个周期

我知道一次读取操作需要将近 28 个周期,而一次写入操作需要将近 35 个周期。我怎样才能减少这个周期?

顺便说一下,Microblaze 的配置是默认的。没有改变。不使用缓存或移位器。设计中没有增强的硬件。使用 AXI-Lite 总线。