最近我一直在尝试使用qemu在Leon3处理器上执行代码。我的代码是这样的:
#include <stdio.h>
#include <stdint.h>
int main(void) {
int a,b,c,d,e;
printf("hello world!");
if(a){
a++;
};
if(b){
b++;
};
if(c){
c++;
};
if(d){
d++;
};
if(e){
e++;
};
while(1){
}
return 0;
}
是一个非常简单的程序。我用以下命令启动Qemu:qemu-system-sparc.exe -nographic -M leon3_generic -m 64M -kernel testapp.elf
但是没有得到任何输出。Qemu似乎开始并立即退出,甚至没有挂在无限循环中。试图调试导致崩溃(?)与以下代码:qemu-system-sparc.exe: QEMU: Terminated via GDBstub
我想我可能不理解qemu的一些东西,但是我找不到任何关于运行。elf文件的帮助。
也许有人做过这件事,可以帮助我?好的,所以我找到了一个方法。
正如Peter在评论中提到的:Qemu需要"一些东西"。
我发现有一个工具MKPROM2
由Cobham-Gaisler提供,它需要一个。elf文件并创建一个ROM映像,稍后可以用-kernel
选项加载到Qemu。
ROM映像与裸机映像的不同之处在于,ROM映像包含一些初始化代码,这些代码允许运行我们最初想要执行的程序。
所以最后要做的就是运行:mkprom2 -freq 20 -romres testapp.elf
输出prom.out
文件,可以加载到qemu。