编译运行方法
获取 uCore 实验代码
从 uCore 仓库中拉取代码,进入到 labcodes_answer/lab8 文件夹中,使用 make 命令编译(需要 riscv-unknown-elf- 工具链,必须在 linux 环境中进行):
$ git clone https://github.com/wangrunji0408/ucore_os_lab.git -b riscv32-cod
$ cd ucore_os_lab/labcodes_answer/lab8
$ make
正确编译完成后,应该能在文件夹下找到如下内容:
bin/rbl.img
: rbl 镜像bin/ucore.img
: ucore 镜像bin/kernel
: 编译出来的 kernel,可用于反汇编rbl
: 预编译好的 rbl,可用于反汇编
在模拟器内运行 uCore
执行 make qemu
即可在 qemu 中运行 ucore,观察预期现象了。
我们可以执行 ls
命令查看文件系统中的文件:
可以看到里面有许多可执行文件,这就是 ucore 中的测例程序。我们在检查时会在你的 CPU 上运行这些用户程序。
在云平台,你的 CPU 上运行 ucore
将 ucore.img
写入物理地址 0x80400000
起始的内存中(一般为 ExtRAM)
将 rbl.img
写入物理地址 0x80000000
起始的内存中(一般为 BaseRAM)
按下 reset,同时进入云平台串口的终端模式:(注意,这里使用的是去年通过 ucore 实验的同学的比特流,因此选择的是共享总线串口,波特率为 9600,同学们在实验时要根据自己的设计进行配置)
输出应该与 qemu 中运行的输出一致:
同时可以进行输入,运行 ls
结果如下:
由于 riscv 版本的 uCore 是前两年才移植过来的,没有经过大规模测试,因此有些命令无法正确运行(例如 matrix),uCore 本身也有一些 Bug。同学们不用在意这些问题。
最终验收时,在 ThinPAD 上的运行结果和 QEMU 中的行为一致即可。
最后更新:
2022年11月29日
作者: