Milk-V Duo 板(milkv-duo)
milkv-duo 机器模拟采用 Sophgo CV1800B SoC 的 Milk-V Duo 板,面向 CV1800B 平台的早期固件、内核和设备模型开发。
支持的设备
milkv-duo 机器支持以下设备:
最多两个 T-Head C906 RISC-V hart
核心本地中断器(ACLINT)
平台级中断控制器(PLIC)
兼容 DesignWare 8250 的 UART0
兼容 SDHCI 的 SD0 控制器
CV1800B 时钟控制器
若干 CV1800B MMIO 区域以未实现设备的形式存在,使固件或客户机软件能够在对应设备模型尚不完整时探测预期的地址映射。
启动选项
此机器支持使用 -kernel 直接加载载荷,也支持使用 -bios 进入固件。模型不生成设备树,因此直接启动 Linux 时,需要通过 -dtb 传入外部 CV1800B 或 Milk-V Duo DTB。
直接启动 Linux
使用 -kernel 加载内核镜像,使用 -dtb 提供板级设备树,并可选择使用 -initrd 和 -append 提供根文件系统和内核命令行:
$ qemu-system-riscv64 -machine milkv-duo \
-smp 1 -m 64M \
-kernel /path/to/Image \
-dtb /path/to/milkv-duo.dtb \
-initrd /path/to/initramfs.cpio.gz \
-append "console=ttyS0" \
-serial mon:stdio \
-display none
固件启动
使用 -bios 进入 CV1800B 固件镜像。固件镜像加载到 DRAM 起始位置,并从模拟的启动 ROM 复位向量进入:
$ qemu-system-riscv64 -machine milkv-duo \
-smp 1 -m 64M \
-bios /path/to/firmware.elf \
-serial mon:stdio \
-display none
已知限制
当前模型重点实现早期软件启动所需的 CPU、中断控制器、UART、SDHCI 控制器和时钟控制器路径。其他 CV1800B 外设块以未实现的 MMIO 区域表示。
运行测试
Milk-V Duo qtest 覆盖 UART 组件 ID 寄存器以及 CV1800B 时钟控制器的基本读写行为:
$ QTEST_QEMU_BINARY=./build/qemu-system-riscv64 \
./build/tests/qtest/milkv-duo-test --tap -k