运行 使用 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 的文件。