Canaan CanMV-K230 板(k230-canmv)

k230-canmv 机器模拟 Canaan CanMV-K230 板,兼容 Kendryte K230 SDK 的 k230_canmv_defconfig 构建产物。

K230 是 Canaan Inc. 旗下 Kendryte ® 生产的 AIoT SoC 系列芯片,采用全新的多异构单元加速计算结构。

该芯片包含两个 RISC-V 计算核心和新一代 KPU(知识处理单元)智能计算单元。

更多信息请参见 <https://www.kendryte.com/en/proDetail/230>。

支持的设备

k230-canmv 机器支持以下设备:

  • 一个 T-Head C908 核心,以及可选的 C908V 大核

  • 核心本地中断器(CLINT)

  • 平台级中断控制器(PLIC)

  • 两个 K230 看门狗定时器

  • 五个 UART

  • 用于 SDK U-Boot gzip 镜像解压的 GSDMA 和 UGZIP 模块

  • PDMA 寄存器块

  • 两个兼容 SDHCI 的 K230 DWC MSHC 控制器

启动选项

k230-canmv 机器通过 M 模式 U-Boot 启动 K230 SDK。U-Boot 从连接的 SD 卡镜像读取 Linux 载荷,再按正常 SDK 启动流程启动 OpenSBI/Linux。

QEMU 模拟了 CanMV 可移除卡槽使用的 K230 SDHCI 存储控制器,因此常规 Linux 启动路径不需要手动设置 RAM 加载器。

运行

U-Boot SD 卡启动

使用 SDK U-Boot 二进制文件作为机器固件,并通过 -drive if=sd 连接 K230 SDK SD 卡镜像。第一个 SD 驱动器连接到 SDK CanMV 可移除卡槽 sdhci1@91581000:

$ SDK=k230_sdk/output/k230_canmv_defconfig
$ SDIMG=/path/to/k230-sdk-sdcard.img
$ qemu-system-riscv64 -machine k230-canmv \
   -bios "$SDK/little/uboot/u-boot" \
   -drive if=sd,file="$SDIMG",format=raw \
   -nographic

对于同时启动 C908V 大核的 SDK 镜像,启用两个虚拟 CPU:

$ qemu-system-riscv64 -machine k230-canmv,boot-both-cores=on -smp 2 \
   -bios "$SDK/little/uboot/u-boot" \
   -drive if=sd,file="$SDIMG",format=raw \
   -nographic

可以通过额外的 -serial 选项连接更多 UART。UART0 用于 U-Boot 和 Linux 控制台,C908V RT-Smart 控制台使用 UART3:

$ qemu-system-riscv64 -machine k230-canmv,boot-both-cores=on -smp 2 \
   -bios "$SDK/little/uboot/u-boot" \
   -drive if=sd,file="$SDIMG",format=raw \
   -serial mon:stdio -serial null -serial null -serial pty -serial null \
   -display none