运行 使用 QEMU 的 LEON3 处理器上的 .elf 文件
Running .elf file on LEON3 processor using QEMU
最近我一直在尝试使用 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 需要比裸机 .elf 文件更多的“东西”。
我发现有一个工具 MKPROM2
由 Cobham-Gaisler 提供,它获取一个 .elf 文件并创建一个 ROM 映像,稍后可以使用 -kernel
选项加载到 Qemu。
ROM 映像与裸机 .elf 的不同之处在于 ROM 映像包含一些初始化代码,允许 运行 我们最初想要执行的程序。
所以最后要做的就是运行宁:
mkprom2 -freq 20 -romres testapp.elf
这会输出 prom.out
可以加载到 qemu 的文件。
最近我一直在尝试使用 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 需要比裸机 .elf 文件更多的“东西”。
我发现有一个工具 MKPROM2
由 Cobham-Gaisler 提供,它获取一个 .elf 文件并创建一个 ROM 映像,稍后可以使用 -kernel
选项加载到 Qemu。
ROM 映像与裸机 .elf 的不同之处在于 ROM 映像包含一些初始化代码,允许 运行 我们最初想要执行的程序。
所以最后要做的就是运行宁:
mkprom2 -freq 20 -romres testapp.elf
这会输出 prom.out
可以加载到 qemu 的文件。