问题标签 [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 投票
3 回答
2513 浏览

tcp - Xilinx 的 microblaze IP 堆栈问题教程

我的团队正在使用 microblaze,但我们的 ip 堆栈遇到了一些问题。
我通常不是嵌入式程序员,但我想学习如何提供帮助。
有没有关于 IP 堆栈的教程?这些是什么?它们是如何编程的?如何解决 IP 堆栈中的问题?
基本上任何信息都会帮助我。

在此先感谢,
奥马尔。

编辑:
根据我们的电子工程师的说法,这就是问题所在:
我们在 Spartan-3A DSP S3D1800A 电路上使用 lwIP,同时使用 BSB 并在其上进行 microblaze。
我们正在尝试使用提供给我们的 Echo Server 演示,它应该打开一个端口到 telnet 并回显从那里收到的任何消息,但它没有这样做。
我们完全不知道那里出了什么问题。

0 投票
4 回答
4928 浏览

c - Xilinx Microblaze C 和组装

我有一个用 C 语言编写的用于Xilinx Microblaze内核的应用程序。但是,性能并不是我想要的,所以我正在考虑重写汇编中的一些核心功能。不过,我很难弄清楚如何让 Xilinx Platform Studio 将两者都编译成一个ELF文件。

我该怎么做?

0 投票
2 回答
3213 浏览

embedded - 是否可以在任何 Xilinx FPGA 上对没有 EDK 的 Microblaze 进行编程?

是否可以在任何 Xilinx FPGA 设备上对没有 EDK 的 Microblaze 进行编程?

我正在Linux下开发。

有没有建议的tutos /书籍?有稳定的开源克隆吗?

0 投票
1 回答
236 浏览

c - 修改代码后 Microblaze 的运行时间有所不同

当我对在 Microblaze 上运行的代码进行一些修改时,我有时会发现运行时会出现很大的差异,以执行遵循相同路径的代码。为了说明,我所说的相同路径的真正含义,举这个例子,

所以说如果我修改了 function 的代码,execute_that即使condition设置了并且 functionexecute_this没有被修改,我也会看到运行时的变化。什么会导致这种情况?函数的内存对齐?缓存?有什么线索吗?

0 投票
2 回答
109 浏览

c - 这有什么问题?

我把它放在我的代码中的任何地方......

我收到错误:在 "check_alphas" 之前解析错误

我正在使用 microblaze gcc。知道什么会导致这种情况吗?我现在真的要疯了!

0 投票
2 回答
8255 浏览

c - 在 System C/Xilinx X 指定的 Verilog 数据中查找绝对值

我一直在尝试使用 Xilinx SystemC 找到指定给 Verilog 内核的整数的绝对值,我所看到的是 Verilog 将负数视为正数。

我已经尝试了所有数据类型:signed int、、、intXuint32

我的 SystemC 或 Xilinx C 代码是:

获得变量值后,我将它们打印在超级终端上。

在我的 Verilog 方面,代码是:

我也试过这段代码,但结果相似

请帮帮我!

我也尝试过其他数据类型并更改了参数,但结果并没有解决我总是得到我输入的相同数字,即

声明不是真的,我也试过了in<=0;

0 投票
1 回答
2561 浏览

gcc - 分支到 Microblaze CPU 上的中断处理程序,汇编语言

我对汇编语言和 microblaze cpus 还很陌生,我在中断处理工作时遇到了问题。

我被迫编写自己的启动和初始化例程。(通常包含在crt0中的东西)我想我在分支到指定地址的中断处理程序时做错了。在文档中说,从代码地址 0x10 分支到中断处理程序,但是在我的测试程序中它不起作用。

在这里你可以找到 microblaze 文档。我指的是p。102(中断和异常处理)

在这里你可以看到'my_crt0_intc.asm'的代码

我的测试程序“test_interrupt_cpu_intc_gpio.asm”旨在通过地址 0x81400000 的 LED 发出中断信号

错误症状是:如果我没有在 MSR 中启用中断,则 LED 0001 闪烁,如果通过按下适当的按钮触发中断,LED 1000 和 0100 将处于活动状态。但是,在这种情况下,cpu 当然不会处理中断,也不会分支到中断处理程序例程。

但是:如果我在 MSR 中启用中断以启用中断处理,则 LED 0001 会在开始时闪烁。触发中断后,led 0001 被永久设置(或者如果在中断发生时 led 0001 已经未设置,则未设置)。led 1000 和 0100 保持不活动状态,这似乎是 cpu 停止工作。

我使用 mb-gcc 工具编译代码如下:

任何帮助都会很棒。这个问题真的很烦人,我已经为此工作了好几天。我确定我在代码中基本上错过了一些东西。如果您需要任何其他信息,请告诉我。

更新:

据我所知,mb-gdb 我的程序从地址 0x50 开始。如果这是真的,这就解释了为什么我的分支操作永远不会执行。

我尝试了几件事以确保将基本说明放置在正确的位置(1)

(2) 我尝试与 mb-gcc 和选项 x1-mode-xmdstub 链接(正如文档中所说,标准 crt0.o 未使用此选项链接)-> 但是,在这种情况下,我得到了错误, _start 的多个定义

(3) 我试过 mb-ld test_interrupt_cpu_intc_gpio.o my_crt0_intc.o -o ../executable.elf -N

这样,行为发生了变化,但仍然不正确,因为现在 test_interrupt_cpu_intc_gpio.asm 从地址 0x50 开始。

谢谢,sema

0 投票
3 回答
423 浏览

c++ - 如何在标准 C/C++ 代码中包含和翻译自定义指令/扩展以保持高性能

我正在为 FPGA 和 ASIC 开发通用图像处理核心。这个想法是将标准处理器与它连接起来。我遇到的问题之一是如何“编程”它。让我解释一下:核心有一个用于我的“自定义”扩展的指令解码器。例如:

还有更多类似的。该操作由处理器通过总线发送到内核,使用处理器进行循环、非向量操作等,如下所示:

程序是用 C/C++ 编写的。核心只需要指令本身,机器码

  1. 操作码 = vector_add = 0x12h
  2. register_src_1 = v0 = 0x00h
  3. register_src_2 = v1 = 0x01h
  4. register_dst = v2 = 0x02h

    机器码 = opcore | v0 | v1 | v2 = 0x7606E600h

(或其他任何东西,只是不同字段的连接以构建二进制指令)

一旦通过总线将其发送到内核,内核就能够使用专用总线从内存中请求所有数据,并在不使用处理器的情况下处理所有事情。最大的问题是:我怎样才能将前面的指令翻译成它的十六进制表示?(通过公共汽车发送不是问题)。想到的一些选择是

  • 运行解释代码(在处理器中运行时转换为机器代码)-> 非常慢,即使使用某种内联宏
  • 使用外部自定义编译器编译自定义部分,从外部存储器加载二进制文件并使用一些独特的指令将其移动到核心 --> 难以阅读/理解源代码,SDK 集成不佳,如果代码非常分段,则部分过多
  • JIT 编译 --> 就为了这个复杂?
  • 扩展编译器 --> 一场噩梦!
  • 一个连接到自定义核心的自定义处理器来处理所有事情:循环、指针、内存分配、变量... --> 工作量太大

问题是关于软件/编译器的,但对于那些对该主题有深入了解的人来说,这是 FPGA 中的 SoC,主处理器是 MicroBlaze,IP 核采用 AXI4 总线。

我希望我解释正确......提前谢谢!

0 投票
3 回答
3607 浏览

gdb - 像 gdb 这样的调试器如何通过 JTAG 设置断点?

我正在使用 gdb 进行调试。我想知道 gdb 如何在内部工作以通过 JTAG 在嵌入式处理器上设置断点。

0 投票
2 回答
1741 浏览

c - 循环展开 -Microblaze C 编程

我们可以使用 EDK 在 Microblaze C 编程中展开循环吗?

这是必需的,因为我需要更多性能。传统上,我的 C 代码将串行运行,因此使用一些编译器指令展开循环可以加速我的应用程序。
(例如,就像我们使用 openMP 所做的那样)。

这对 Microblaze 来说可能吗?如果是的话,有没有同样的例子?