我有一个用 C 语言编写的用于Xilinx Microblaze内核的应用程序。但是,性能并不是我想要的,所以我正在考虑重写汇编中的一些核心功能。不过,我很难弄清楚如何让 Xilinx Platform Studio 将两者都编译成一个ELF文件。
我该怎么做?
我有一个用 C 语言编写的用于Xilinx Microblaze内核的应用程序。但是,性能并不是我想要的,所以我正在考虑重写汇编中的一些核心功能。不过,我很难弄清楚如何让 Xilinx Platform Studio 将两者都编译成一个ELF文件。
我该怎么做?
正如 Yann 所建议的,您可以使用内联汇编。方法如下:
AR# 18561。11.1 EDK - 如何在我的 C 源文件中包含内联汇编?
不过,请尝试分析您的代码以确定您的性能瓶颈在哪里。Xilinx 的 SDK 允许进行侵入式分析。您还可以使用 GPIO 和示波器(或具有快速触发时钟的逻辑分析仪)自己分析您的功能/代码部分。
您是否详细说明了性能不佳的确切原因?根据我的经验,核心功能非常快,因此您的代码可能是问题的根源。尝试使用优化 (-O3) 进行编译或更改缓存大小(如果您使用缓存)。
我不知道你要重写哪个 Microblaze 函数,但你可以随时去 Xilinx 安装目录(例如 C:\Xilinx\13.4\ISE_DS\EDK\sw\lib\bsp\standalone_v3_00_a\src\microblaze)修改函数,甚至在特定的软件库中包含您自己的汇编语言文件。