Linux kernel 在火箭芯片模拟器上引导Linux内核
我正在尝试使用DefaultConfig配置在生成的火箭芯片仿真器中引导Linux内核 我正在按照中所示的步骤进行操作,并且通过以下方法成功地在ISA emulatorspike上构建和引导Linux内核:Linux kernel 在火箭芯片模拟器上引导Linux内核,linux-kernel,boot,riscv,chisel,rocket-chip,Linux Kernel,Boot,Riscv,Chisel,Rocket Chip,我正在尝试使用DefaultConfig配置在生成的火箭芯片仿真器中引导Linux内核 我正在按照中所示的步骤进行操作,并且通过以下方法成功地在ISA emulatorspike上构建和引导Linux内核: 编译riscv64未知linux gcc交叉编译器 构建Linux内核4.6(在 重建引导加载程序,将其指向内置的vmlinux映像(--带有效负载选项) 然而,当尝试在火箭芯片模拟器(由默认配置文件生成)中运行相同的bblbootloader时,内核不会启动,但进程会像陷入无限循环一样
- 编译
交叉编译器riscv64未知linux gcc
- 构建Linux内核4.6(在
- 重建引导加载程序,将其指向内置的
映像(vmlinux
--带有效负载
选项)
bbl
bootloader时,内核不会启动,但进程会像陷入无限循环一样不断旋转。没有给出信息性消息或错误,它只会消耗100%的CPU,直到用Ctrl-C
击键(等待相当长的时间后)终止
我相信我生成的火箭芯片模拟器是正确的,因为我能够通过代理内核(pk)甚至裸机运行交叉编译的程序,没有任何问题。此外,所有测试和基准测试均通过(make-run asm测试
和make-run-bmark测试
)
我还没有找到任何关于任何人在芯片仿真器中引导内核的清晰文档(大多数使用FPGA),现在我怀疑这是否可能
有人能在模拟器中实现它吗?我是否遗漏了任何一步?任何提示都非常感谢。对于“尝试在火箭芯片模拟器中运行相同的bbl引导加载程序”的完整命令行是什么?@osgx:如果在spike上引导内核的命令是
spike path/to/bbl
,那么我会像运行pk或任何裸机程序一样,从emulator
目录运行/emulator rocketchip DefaultConfig path/to/bbl
。我是否缺少verilator emulator上的任何选项?在关闭内核之前,您运行了多长时间?正如我所知,如果您想在emulator上运行内核,它将运行数小时并生成几GB大小的日志文件。提高速度的一种方法是调整指令跟踪(减少打印量将加快模拟)。你怎么知道它在自转呢。内核将尝试初始化虚拟空间。根据您的配置,初始化所有页面可能需要很长时间,这看起来就像是自循环。对于响应太晚,我深表歉意。测试整个周末都在运行,然后我用Ctrl-C终止了它。也就是说,没有生成输出,也没有记录输出,我是否缺少一个详细的选项来执行此操作?此外,在最后,我们转移到RocketChip repo的上一个提交,它允许我们在verilator中正确引导内核。其他配置(如DualCoreConfig)仍然存在同样的问题,是否有人使用存储库中提供的DualCoreConfig成功引导内核?核心是否被识别?非常感谢。