【问题标题】:Xilinx Microblaze C and assemblyXilinx Microblaze C 和组装
【发布时间】:2010-01-08 07:47:50
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • 您使用的是哪个版本的 EDK?

标签: c assembly xilinx microblaze


【解决方案1】:

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

AR# 18561. 11.1 EDK - How do I include inline assembly within my C source files?

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

【讨论】:

    【解决方案2】:
    1. 检查编译器是否实现了内联汇编。试试 asm() “函数”。检查它是否支持变量引用。如果您的编译器基于 GCC,这很容易。
    2. 您始终可以编写原始汇编程序,对其进行汇编,然后将其链接到您的应用程序中。您需要了解编译器的 ABI 才能生成兼容的函数。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-29
          相关资源
          最近更新 更多