1

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

我该怎么做?

4

4 回答 4

2

正如 Yann 所建议的,您可以使用内联汇编。方法如下:

AR# 18561。11.1 EDK - 如何在我的 C 源文件中包含内联汇编?

不过,请尝试分析您的代码以确定您的性能瓶颈在哪里。Xilinx 的 SDK 允许进行侵入式分析。您还可以使用 GPIO 和示波器(或具有快速触发时钟的逻辑分析仪)自己分析您的功能/代码部分。

于 2011-01-24T18:59:18.273 回答
1
  1. 检查编译器是否实现了内联汇编。试试 asm() “函数”。检查它是否支持变量引用。如果您的编译器是基于 GCC 的,这很容易。
  2. 您始终可以编写原始汇编程序,对其进行汇编,然后将其链接到您的应用程序中。您需要了解编译器的 ABI 才能生成兼容的函数。
于 2010-01-08T07:56:00.020 回答
1

您是否详细说明了性能不佳的确切原因?根据我的经验,核心功能非常快,因此您的代码可能是问题的根源。尝试使用优化 (-O3) 进行编译或更改缓存大小(如果您使用缓存)。

于 2010-01-19T11:28:06.303 回答
0

我不知道你要重写哪个 Microblaze 函数,但你可以随时去 Xilinx 安装目录(例如 C:\Xilinx\13.4\ISE_DS\EDK\sw\lib\bsp\standalone_v3_00_a\src\microblaze)修改函数,甚至在特定的软件库中包含您自己的汇编语言文件。

于 2013-03-20T22:29:00.297 回答