问题标签 [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 回答
286 浏览

qemu - QEMU 上的 Microblaze 不产生串行输出

我正在尝试使用 QEMU 模拟裸机 Microblaze 代码,但没有从“打印”功能获得任何输出。microblaze 是从 xilinx 项目生成的,这会生成一个 .dts 文件,该文件用于制作一个用于 QEMU 的 .dtb。我正在使用Xilinx 的 QEMU 分支

我使用以下命令运行 QEMU

~/.local/bin/qemu-system-microblazeel -M microblaze-fdt -dtb system-top.dtb -m 256 -serial mon:stdio -display none -kernel ./workspace/app_0/Debug/app_0.elf -s -S -nographic

我可以连接 gdb,并逐步执行代码,它清楚地写入地址 0x40600004,这是 UART TX 数据 FIFO,但在 QEMU 终端上仍然没有看到任何内容。我什至在 QEMU xilinx UART 模型中添加了一些调试,它已注册但在代码运行时从未调用过。

这是 .dts 文件中的 UART 节点

QEMU 监视器显示以下内存空间

0 投票
0 回答
207 浏览

i2c - 为什么 `i2c_smbus_write_byte_data` 在 uClinux 2.4 上会返回“不允许操作”?

我正在编写一个 C 程序,目的是通过 Dante Brooklyn II 的 I2C 接口配置外围设备(CS5368 ADC),这是一个基于运行 uClinux 2.4 的 Microblaze 软核处理器的板。

我已经按照 Dante OEM 文档的指导实施了配置,但是在运行我的程序时,我EPERM在尝试使用i2c_smbus_write_byte_data.

这是包含罪魁祸首调用的代码部分i2c_smbus_write_byte_data

这是小程序完整源代码的上下文中的代码。该程序首先通过 GPIO 引脚重置 CS5368,然后通过 I2C 进行配置。

EPERM无论我是否连接了 CS5368,都会返回。我已经能够使用 Arduino Uno 的 I2C 接口成功配置 CS5368,因此问题似乎与 CS5368 无关。

telnet要运行程序,我通过as登录到开发板root,所以我怀疑该错误与用户权限有关。

OEM 文档状态:

Brooklyn II 模块可以作为以 100Khz 运行并使用 7 位寻址模式的 I2C 控制器运行。它支持多主机操作。可以从 Brooklyn II 模块上运行的用户应用程序访问 I2C 设备。该接口支持 SMBus(系统管理总线)协议,它是 I2C 协议的子集。

它继续列出支持的i2c_smbus_*功能,包括i2c_smbus_write_byte_data,因此该问题似乎与缺乏对 SMBus 或 I2C 的支持无关。

我遇到了一个相关问题EPERM,即用户在尝试使用 I2C API 时收到错误代码write,但解决方案似乎是使用i2c_smbus_*我已经在做的 API。

任何有关可能导致返回此错误代码或如何进一步调试问题的建议将不胜感激!


编辑:如果有帮助,这里是完整的输出,从将 exe 移动到/tmp通过 ftp 后通过 telnet 登录到板开始:

0 投票
1 回答
292 浏览

c++ - Microblaze & C++ | 为什么在某些条件下代码大小会急剧增加?

一年多来,我一直在使用 C++ 为 Microblaze 处理器开发嵌入式软件。我的设计并没有那么复杂,所以我没有使用该语言强大的、面向对象的特性。

有一段时间,我一直在尝试增强我的设计结构。为此,我尝试广泛使用 C++ 的复杂特性,例如继承、多态等。作为新手,我相信单独使用继承不会影响代码大小。只有多态性有一些副作用,例如添加虚拟表指针、运行时类型信息等。我的问题始于向基类添加纯虚拟成员函数。

为了提供一个可运行的示例,我将尝试模仿我所面临的情况。

下面的代码编译并生成13292 字节的代码。这段代码不可能有这么多的指令。但是,我相信生成的 BSP 中的某些部分是在生成 elf 文件时必须包含的。

当您认为您有近 128KB 的可用 RAM 时,13KB并不算多。实际上,直到出现纯虚函数的问题时,我才注意到生成的代码的大小。下面的第二个代码具有相同的结构,只是func()现在是一个纯虚函数。构建此代码为我们提供了一个大于可用*(128KB)* RAM 大小的代码大小。因此,我修改了链接器文件以添加一些假 RAM,以便能够编译代码。编译成功后,生成的代码大小接近157KB!

我没有更改编译器的任何首选项,所有参数都处于默认状态。除了自动生成的库之外,没有其他库。你认为问题可能是什么?

一些附加说明

  • 我在两个不同的 IDE 上尝试了代码。Vivado SDK 2017.2 和 Vitis 2019.2
  • 同样的问题也适用于动态分配调用(操作员 new 和 delete)。用 C 风格的 malloc 和 free 替换它们可以解决问题。
  • 以发布模式构建代码也解决了这个问题。在发布模式下,无论我是否使用纯虚函数,生成的代码都是 1900 字节。

如果需要,我可以提供更多信息,谢谢

我在赛灵思论坛上问过同样的问题,你可以在 这里找到

0 投票
1 回答
148 浏览

openocd - 不含 Vitis 的 MicroBlaze

有没有人设法将在 Xilinx FPGA 中实例化的 MicroBlaze 连接到 Xilinx 工具(SDK 或 Vitis)以外的任何东西以进行下载和调试?

我的目标是 VCU29,并拥有 Xilinx 的 Vivado 等许可证;我已经提取了库、源代码和 GCC 工具,并构建了一个生成文件来构建我的应用程序。

我已经放弃使用 Vitis 加载初始位文件,但真的想下载代码并从更匹配 SW 开发流程的工具操作 JTAG - Eclipse 和 OpenOCD?也许通过内置 USB->Serial->JTAG 接口?我相信我会满足于 GDB 提供的界面。

我真的很想知道是否有人尝试过成功或失败,或者可能有“你为什么不只是......”解决问题的横向思维方式之一。

0 投票
0 回答
32 浏览

fpga - 在没有串行端口的情况下查看 Microblaze 处理器输出

作为研究工作的一部分,我正在试验一些 Old Legacy Spartan 3、6 和 Virtex 5 系列套件。我目前正在设计一个 microblaze 处理器系统。是否有可能在不使用 RS232 电缆接口的情况下,我可以像普通 C/C++ 应用程序一样在控制台上查看结果。?

0 投票
0 回答
16 浏览

fpga - 在 EDK 14.7 中打开 Edk 11.1 项目。Spartan 3A 视频入门套件 3400D

我正在尝试在 Xilinx 14.7 上运行 Spartan 3A 3400 视频入门套件的一些演示。提供的演示是使用 Xilinx 11.1 版本制作的。当我尝试在 14.7 中打开项目时,我在 mhs 文件中遇到了一些错误,这些错误在尝试后仍未解决。

我经常遇到的错误是

错误:EDK:4110 - IPNAME:mpmc,实例:mpmc_0 - 在任何存储库中都找不到 pcore 'mpmc_v4_06_a' 的 MPD - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 行389

警告:EDK:4088 - IPNAME:lmb_bram_if_cntlr,实例:ilmb_cntlr - 架构“spartan3adsp”的取代核心 - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 176 行

错误:EDK:4085 - IPNAME:xps_gpio,实例:LEDs_8Bit - MPD 中未找到参数 C_IS_BIDIR - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 212 行

错误:EDK:4085 - IPNAME:xps_gpio,实例:Push_Buttons_Position - 在 MPD 中找不到参数 C_IS_BIDIR - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 225 行

错误:EDK:4085 - IPNAME:xps_gpio,实例:DIP_Switches_8Bit - 在 MPD 中找不到端口 GPIO_in - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 243 行

错误:EDK:4085 - IPNAME:xps_gpio,实例:DIP_Switches_8Bit - 在 MPD 中找不到参数 C_IS_BIDIR - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 238 行

错误:EDK:4085 - IPNAME:mdm,实例:debug_module - 在 MPD 中找不到参数 C_UART_WIDTH - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 291 行

错误:EDK:4110 - IPNAME:mpmc,实例:mpmc_0 - 在任何存储库中都找不到 pcore 'mpmc_v4_06_a' 的 MPD - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 行389

错误:EDK:4111 - IPNAME:mpmc,实例:mpmc_0 - 找不到 pcore 的 MPD - C:\Users\DELL-PC\Downloads\ug4561\EDK_Demonstrations\Camera_Frame_Buffer_Demo\system.mhs 第 389 行

警告:EDK:3362 - 由于错误而无法打开项目。用本地文件 <E:/Xilinx14.7fullversion/14.7/ISE_DS/EDK/data/TextEditor.cfg> 覆盖 Xilinx 文件 <TextEditor.cfg>

这是我的 MHS 文件的文本

0 投票
0 回答
25 浏览

spi - Xspi_Transfer() 如何以四元模式发送数据?

我正在尝试实现 AXI QUAD SPI,但是基于 Microblaze 的应用程序无法在 4 行中发送命令,那么 Xspi_Transfer() 如何以四线模式发送数据?

0 投票
1 回答
41 浏览

debugging - 在 Microblaze 应用程序中连接到 JTAG UART - 将 stdio 重定向到 jtag_uart?

我在 Xilinx FPGA 中有一个远程设计,我只有一个 JTAG 连接。Microblaze 调试模块 IP 中有一个功能可以让用户启用 jtag uart。在 BSP 中有一个 usart 用于 stdin 和 stdout 的设置。当我打开下拉列表时,只有“none”或“axi_uartlite_0”可用。我真正想知道的是如何更改 STDIO 以使用 JTAG UART,以便我可以看到我的应用程序正在打印什么。我在其他搜索结果中看到评论说“只需将 stdio 从 axi_uartlite 重定向到 jtag uart”,但我没有找到确切的方法。这正是我想要做的 - 将 STDIO 从物理 uart 重定向到 jtag uart。如果有人知道并愿意传递该信息,我将非常感激,并会尽可能多地给予赞誉。提前感谢您提供的任何和所有帮助 - 非常感谢。