2022操作系统大赛Sifive Unmatched评测流程说明
流程概述
本次大赛使用Sifive Unmatched开发板进行评测,评测机应自动将参赛队伍提交的操作系统代码进行编译,并上传至开发板运行评测。为提高自动评测时的速度和稳定性,本次大赛拟采用u-boot作为Bootloader,并使用以太网传输系统镜像。
各参赛队伍提交的内容应为包含全部源代码的项目工程目录,其中应包含一个Makefile文件。评测机会在此目录下执行make all对项目进行构建。构建完成后应在当前目录下生成包含操作系统镜像的os.bin文件,用于加载进Unmathced开发板执行。os.bin文件应使用objcopy -O binary生成,并且其启动地址为0x80200000。
评测时u-boot加载os.bin的u-boot命令为:bootp; go 0x80200000;
评测样例形式、存储位置及输入输出格式:待定。
使用QEMU运行样例demoos
搭建开发环境
可在riscv-gnu-toolchainriscv-collab/riscv-gnu-toolchain(Gitee镜像)下载最新的riscv64工具链,需同时下载riscv64-unknown-elf-和riscv64-unknown-linux-gnu-,解压后将bin目录加入PATH中。
安装QEMU 6.11。
安装tftp服务,将服务目录设置为/srv/tftp/。
搭建DHCP服务器,在/etc/dhcp/dhcpd.conf中加入如下配置信息:
subnet 10.8.8.0 netmask 255.255.255.0 {
range 10.8.8.20 10.8.8.40; #地址池范围
option routers 10.0.3.15; #dhcp网关地址,这里填写为本机eth0地址
next-server 10.8.8.1; #tftp服务器地址
filename "os.bin"; #指定的pxe文件
}
重启DHCP服务
sudo /etc/init.d/isc-dhcp-server restart
创建虚拟网卡
sudo -i
tunctl -b
ip link set tap0 up
ifconfig tap0 10.8.8.1 netmask 255.255.255.0 promisc up
本项目目录中提供了预编译的SD卡和Flash镜像文件,可以跳过构建OpenSBI和U-Boot阶段直接运行demoos。
构建OpenSBI
git clone git@github.com:riscv-software-src/opensbi.git
cd opensbi
make CROSS_COMPILE=riscv64-unknown-elf- PLATFORM=generic
构建U-Boot
git clone git@github.com:u-boot/u-boot.git
cd u-boot
打开include/configs/sifive-unleashed.h文件,在其末尾加入如下内容:
#ifdef CONFIG_BOOTCOMMAND
#undef CONFIG_BOOTCOMMAND
#endif
#define CONFIG_BOOTCOMMAND "bootp; go 0x80200000"
然后构建U-Boot:
make sifive_unleashed_defconfig
make CROSS_COMPILE=riscv64-unknown-linux-gnu- OPENSBI=../opensbi/build/platform/generic/firmware/fw_dynamic.bin
将构建u-boot时生成的spl/u-boot-spl.bin和u-boot.itb复制到demoos目录中。
运行demoos
执行make uboot即可按照评测流程运行demoos。