如何使用有效负载选项重建bbl

时间:2016-06-16 03:48:07

标签: riscv

我正在重建fesvr,pk和bbl在zedboard上运行应用程序。 fester,pk运行良好,但是bbl似乎是用虚拟有效载荷构建的。

有谁知道如何用适当的有效载荷重建bbl?当我使用“$ fesvr-zedboard + disk = / sdcard / riscv / root.bin bbl / sdcard / riscv / vmlinux”启动riscv-linux时,显示“R”徽标,然后控制台将“bbl与虚拟有效载荷。使用--with-payload = option“。

重建它

我查看了有效负载。在riscv-tools / pk / bbl下的汇编代码,似乎构建过程想要包含一个正确的程序来设置一些东西。有谁知道如何为zed board编写这样的有效载荷代码文件,还是可以在某处找到它?

还有一个问题,我发现riscv-poky是一个更好的Linux发行版。我是否需要使用相同的命令,即fesvr xxx bbl yyy来启动riscv-poky?我读过其他人在这样做时遇到了麻烦:How to boot the linux of riscv-poky on ZedBoard?

1 个答案:

答案 0 :(得分:2)

在撰写此答案时,1.9 ISA仍在开发中,您可以选择坚持使用较旧且稳定的1.7 ISA或切换到新的和不稳定的1.9 ISA:

使用1.7 ISA

坚持使用1.7 ISA并使用riscv-tools和riscv-linux的 master 分支来构建gnu工具链,spike,fesvr,bbl,pk和Linux内核。在这种情况下,运行RISC-V Linux的命令是众所周知的:

sudo ./fesvr-zedboard +disk=/path/to/root.bin bbl /path/to/vmlinux

如果使用这个较旧的ISA,请确保使用rocket-chip生成兼容的RISC-V内核。从3月15日起提交的648437e7cb909098d7418ffc72717b497674f651最接近riscv-tools的主版本,对我来说效果很好。

使用1.9 ISA

如果要使用新的1.9 ISA,则必须使用riscv-toolsriscv-linux存储库的 priv-1.9 分支。您还必须使用最新版本的rocket-chip生成兼容的RISC-V核心。

这些存储库的1.9版本不包括对bbl(riscv-tools)和vmlinux(riscv-linux)的HTIF支持。并且作为bbl在RISC-V徽标之后打印的消息,您必须使用--with-payload选项对其进行配置。这很容易做到:

export RISCV=/path/to/your/already/built/toolchain
cd riscv-tools/riscv-pk
mkdir build.with.payload
cd build.with.payload
../configure --prefix=$RISCV/riscv64-unknown-elf \
--host=riscv64-unknown-elf \
--with-payload=/path/to/vmlinux

您不必编写自己包装vmlinux的任何有效负载代码,它已在riscv-pk repo中提供。在运行它时,你也不必提供vmlinux作为bbl的参数,因为它现在将包含内核二进制文件。这会将bbl的大小从大约60 KB增加到3+ MB,具体取决于你配置内核的方式。

此外,由于新的1.9 ISA riscv-linux已经删除了对HTIF的支持,因此它不再具有块设备支持,+disk参数将无法指定根磁盘映像。您必须使用initramfs ramdisk启动。

因此,使用1.9 ISA运行RISC-V Linux的最终命令如下:

sudo ./fesvr-zedboard bbl

请注意,我仍然没有测试上面描述的1.9 ISA程序,因为现在我的项目对1.7 ISA很好,我会等待事情成熟一点直到我切换。

Reference issue on Github with zhemao's answer