最近,我一直试图使用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文件方面我找不到任何帮助。
也许有人做过这件事能帮我吗?
发布于 2021-12-14 18:22:32
好的,所以我找到了一个方法。
正如Peter在评论中提到的那样: Qemu需要的不仅仅是裸金属.elf文件。
我发现有一个由Cobham提供的工具MKPROM2
,它接受一个.elf文件并创建一个-kernel
映像,该映像以后可以用-kernel
选项加载到Qemu。
ROM映像与裸金属.elf的不同之处在于,ROM映像包含一些独立的代码,允许运行我们本来想要执行的程序。
因此,最后要做的就是运行:mkprom2 -freq 20 -romres testapp.elf
这将输出可以加载到qemu的prom.out
文件。
https://stackoverflow.com/questions/68711065
复制相似问题