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

fpga - 使用 lwip 库时 xilinx sdka 错误

我正在尝试使用以太网接口使用 MicroBlaze 在 spartan 3 A 上创建一个回显服务器,但是当我编译项目时出现未定义的引用错误。我正在使用 lwip 1.3.0。

我想我错过了一个图书馆,但我找不到哪一个?

错误是:

microblaze_0\libsrc\lwip130_v3_01_a\src/contrib/ports/xilinx/sys_arch.c:347 >未定义对“sem_post”的引用

0 投票
0 回答
287 浏览

microblaze - Microblaze 的 LwIP 客户端应用程序

有没有人有使用在 Microblaze 上运行的 LwIP 的经验?我现在的问题是我正在使用我在http://lwip.wikia.com/wiki/Raw/TCP上找到的信息来编写一个应用程序来连接到一个特定的套接字并发送一个整数数组,但是它不管用...

我在 nexys 4 板上工作,我使用 Vivado IDE 和 Xilinx SDK 开发应用程序,当我将应用程序的 elf 文件加载到 ram 并运行应用程序时,LINK/ACT 和 100/10 LED 关闭。

我在单个 .C 文件中编写了应用程序,我将此文件上传到: https ://www.dropbox.com/sh/wjlqn8nb4sfrzsb/AAAl_XB1tB6VZ7ZWIKxGQAPga?dl=0

PD:如果有人能在列表中提示我做错了什么,我将不胜感激。

0 投票
1 回答
1166 浏览

c - AXI-Uartlite 和 Teraterm 之间的波特率不匹配

我在 Avnet 的 MMP2 板上的 Kintex 7 上构建了一个简单的 Microblaze 系统。我在这个系统中使用 Uartlite (v2.0) IP 并使用 Teraterm (v4.85) 与 PC 通信。Uartlite 组件的波特率必须在设计阶段固定为特定值。我为我的设计选择了 19200 bps。我编写了一个非常简单的应用程序,它"At"通过 Teraterm 向 PC 发送 6 个连续的 s,然后从 Teraterm 控制台获取一个 ascii 字符并打印出来。问题是,对于每个"At"Teraterm 'Ç',控制台上只显示一个。传输参数如下:

19200 个基点;8个数据位;1个停止位;没有平价;无流量控制

然而,经过大量的摸索和反复试验,我发现如果我将 Teraterm 中的波特率更改为 38400 bps,我会得到所需的行为,即我在控制台上得到"At"s,从控制台得到一个字符并打印回来了。

据我所知的代码(这真的很简单),我没有改变波特率。但不知何故,我以比指定速率更快的速率发送数据。使用的时钟为 100MHz。由于必须在设计阶段指定波特率,如何才能获得更高的波特率?我做错了什么?

代码如下:

编辑:

今天,我尝试将UARTlite IP核的波特率降低到9600,重新生成比特流并再次运行。同样的结果。如果我将 Teraterm 的波特率设置为 9600,它就不起作用。Teraterm 提供 14400 波特率选项。我用过这个。我得到 12 个字符,但是乱码。如果我把它加倍到 19200,它就完美了。我也会尝试其他波特率并更新。请帮忙。!!这仍然是我设计的基本部分。下图供参考:

在此处输入图像描述

编辑2:

我尝试了以下方法:

  1. 卸载 Teraterm 并重新安装

  2. 安装 Realterm

  3. 安装的超级终端

尝试了所有 3。行为没有变化。:(

0 投票
1 回答
692 浏览

c++ - 在嵌入式 Linux 上使用 C++ Std Lib 时出现异常的段错误

这是我尝试在嵌入式 Linux 系统上运行的一些示例测试代码:

嵌入式系统是 Microblaze,它是运行在 Xilinx FPGA 上的 32 位 RISC 软核处理器。请不要因此而推迟,因为您的许多标准 Linux 知识仍然适用。处理器配置为带有 MMU 的 LSB,而我正在使用的 Linux 构建(PetaLinux,由 Xilinx 提供)也期望相同。我正在使用提供的 GNU 编译器;GCC 似乎正式支持 Microblaze。

我遇到的问题是,当 stdlib 需要与整数交互时,它会出现段错误。这是输出:

请注意,字符处理得很好。此代码的 C 等效项也可以正常工作:

...

这使我怀疑共享库存在问题libstdc++.so.6.0.20。该库是由 Xilinx 提供的,所以它应该是正确的。该file库的输出是:

我的二进制文件的file输出是:

我也尝试过使用-static标志静态链接我的二进制文件,但结果是一样的。

这是我正在使用的最相关的编译器和链接器设置,但我尝试更改这些设置但无济于事。

请注意,它microblazeel指的是 microblaze 编译器的 little endian 版本。

我非常想对此进行调试或至少查看一个 coredump,但是当发生段错误时似乎没有产生 coredump,并且gdb在 Microblaze Linux 构建中没有可执行文件。也许我错过了什么?

感谢您花时间阅读本文。有什么想法吗?

0 投票
1 回答
626 浏览

c - C语言中的FPGA中断处理

我有一个用 C 语言在 Microblaze 微处理器上设计状态机的课程。我遇到的问题是我必须改变某个画面。假设我在 FPGA 上按 BTNL;我必须在 5 秒内看到一张风景照片,在 3 秒后我必须让那张照片闪烁。同时,时间 5s -> 0s 必须显示在 7 段显示器上。这是检测到按钮并且必须显示闪烁模式的情况。中断每 0.004 秒发生一次,微处理器的时钟为 100MHz。

我的主要问题是在 7 段显示器上显示数字。当我把这个displayNumber()功能放在箱子里时,整个东西一旦上线就冻结了displayNumber()。我知道嵌套for循环会花费大量时间和精力,我认为这可能会导致问题,但我找不到可行的解决方案。任何想法或建议都非常感谢。

另一件事是我尝试使用标志,但由于中断处理它不起作用。

编辑:我不想复制/粘贴我的问题的解决方案。整个事情非常庞大,我的意思是 verilog 项目以及在 c 中完成的其他功能的文件。我没想到你会跑代码并重现整个东西,因为我已经被学校提供了 Verilog 项目,所以你必须生成一个比特流,然后上传并在板上运行整个东西。我在这里只是在寻找有关您将如何改进这一点的建议,您是否遇到过 FPGA 的这种行为,有什么想法。

感谢您花时间阅读问题!

0 投票
0 回答
165 浏览

c - 如何读取 GPIO 输入的一部分或将 GPIO 输入分配给位向量?

我正在尝试通过在 Basys3 FPGA 板上实现的 microblaze 从 GPIO 读取输入。我的 GPIO 输入来自 Basys3 板上的 16 个 DIP 开关。目前,我正在使用以下代码行将 GPIO 输入读取到变量中。

DataRead = XGpio_DiscreteRead(&GpioDevice, 2);

其中“GpioDevice”是实例名称,“2”是通道号。此行读取 16 个开关并将开关的十六进制值分配给 u32 变量“DataRead”。

有没有办法只读取 GPIO 输入的一部分(例如:如果我的开关设置为 1111 0000 1010 1100,有没有办法只读取 4 位)

或者

有没有办法读取所有 16 位并将值分配给位向量而不是 u32。

我的目标是使用 GPIO 输入的各个位来完成某种任务。

如果位 1 = 1 然后做某事

如果位 2 = 0 然后做一些事情等等......

0 投票
0 回答
231 浏览

linux - Xilinx Microblaze 生成在 Linux Mint 17.3 上失败

我正在使用 Xilinx ISE 14.7,我想将 Microblaze IP 内核嵌入到我的 FPGA 中,但我无法让 IP 内核生成器在 Linux 上运行。

我让它在 Windows 7 上运行:一切正常,包括模拟!然后我在我的 PC 上安装了 Linux Mint 17.3,安装了 Xilinx ISE,设置了所有内容,但是当我生成 Microblaze IP 时,我收到一条奇怪的 Tcl 错误消息。FiFo IP的生成没有问题;生成器仅在 Microblaze 上失败。我的 PC CPU 是 64 位 Intel 双核。

控制台输出如下:

谁可以帮我这个事?

0 投票
0 回答
262 浏览

c - xilinx sdk 整数溢出

我在 Xilinx SDK 中为 microblaze 编写 ac 代码。变量定义为:

该代码读取存储在 DDR2 内存中的图像数据并将其保存到变量中。

为了检查代码是否正常工作,我在控制台中打印了 x 和 y 坐标。我得到错误的输出部分是:

xcoi = 11 ycoi = 253

xcoi = 11 ycoi = 254

xcoi = 11 ycoi = 255

xcoi = 11 ycoi = 256

xcoi = 11 ycoi = 257

xcoi = 11 ycoi = 258

xcoi = 11 ycoi = 259

xcoi = 11 ycoi = 260

xcoi = -547553269 ycoi = 261

xcoi = -547553269 ycoi = 262

xcoi = -547553269 ycoi = 263

xcoi = -547553269 ycoi = 264

xcoi = -547553269 ycoi = 265

xcoi = -547553269 ycoi = 266

xcoi = -547553269 ycoi = 267

为什么 xcoi = 11 ycoi = 260 后 xcoi 会发生变化?相反,它应该是下一行的 xcoi = 11 ycoi = 261。

0 投票
1 回答
367 浏览

sdk - 在 sdk 中启动 MicroBlaze 应用程序时出现 vivado 错误

我只是尝试使用 vivado 2014.4 在 K-7 板上运行 MicroBlaze 示例

我收到一个错误“MicroBlaze 没有被计时。检查 MicroBlaze 的时钟输入及其总线接口是否正确连接”

如图所示,我已经将差分 RTL 时钟与 MicroBlaze 连接起来。

图:方块示意图

在 sdk 中启动 MicroBlaze 应用程序时,出现如下所示的错误:

图:错误信息

非常感谢!

0 投票
1 回答
856 浏览

usb - FT600 与 FPGA 接口

我正在与用于 USB3.0 通信的 FT600 16 位芯片连接。计算机将通过 FT600 与 FPGA 进行通信,反之亦然。我创建了一个 FSM 来断言适当的信号并将数据写入内存。

问题:我认为问题出在 FPGA 代码而不是硬件上,但看起来只有每隔一个字节正确记录到内存中。

我指的时序图在第 16 页:http: //www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT600Q-FT601Q%20IC%20Datasheet.pdf

这是我的 FSM 代码:

有什么想法/建议吗?如果已经存在 FT600 的简单代码作为示例,我将不胜感激链接。