首页财经 RT-Thread BSP全面支持玄铁全系列RISC-V 处理器 | 技术集结

RT-Thread BSP全面支持玄铁全系列RISC-V 处理器 | 技术集结

2025-07-21

RT-Thread BSP全面支持玄铁全系列RISC-V处理器。玄铁系列RISC-V处理器由阿里达摩院研发,涵盖面向MCU的E系列、面向实时应用的R系列以及面向MPU的C系列。以玄铁QEMU为平台,RT-Thread标准版已全面适配玄铁E、R、C系列内核,并在C906内核上支持RT-Smart微内核操作系统本文将以E906运行RT-Thread和C906运行RT-Smart为例,详细介绍其应用场景与实现。

Xuantie BSP链接:

https://github.com/RT-Thread/rt-thread/tree/master/bsp/xuantie

目录

在E906上运行RT-Thread

配置cubemx在C906上运行RT-Smart

1

在E906上运行RT-Thread

1 简介

E906是一款基于 RISC-V 指令集的高能效嵌入式处理器,是玄铁 RISC-V MCU 产品线中的最高性能处理器。 E906 的设计目标是,使用最低的面积和功耗成本,取得相对较高的性能指标。 E906 主要面向语音、高端 MCU、轻量级 AI、导航、 WiFi 等应用领域。

1.1 特点

E906 处理器体系结构的主要特点如下:

32 位 RISC 处理器;

支持 RISC-V RV32IMA[F][D]C[P] 指令集;

支持 RISC-V 32/16 位混编指令集;

32 个 32 位通用寄存器

整型 5 级/浮点 7 级,单发射,顺序执行流水线;

可选配 BHT 和 BTB;

支持 RISC-V 机器模式和用户模式;

双周期硬件乘法器,基 4 硬件除法器;

可选配指令 cache,两路组相连结构, 2KiB-32KiB 可配置;

可选配数据 cache,两路组相连结构, 2KiB-32KiB 可配置;

兼容 RISC-V CLIC 中断标准,支持中断嵌套,外部中断源数量最高可配置 240 个;

兼容 RISC-V PMP 内存保护标准, 0/4/8/12/16 区域可配置;

支持 AHB-Lite 总线协议,支持三条总线:指令总线,数据总线和系统总线;

支持可配的性能监测单元;

支持玄铁扩展增强指令集

1.2 BSP支持情况

BSP链接:

https://github.com/RT-Thread/rt-thread/tree/master/bsp/xuantie

当前BSP支持下述内核:

E906E906F E906FD E906P E906FP E906FDP

当前BSP默认设置的内核是E906FD,该架构支持[F] [D]扩展,可以通过menuconfig工具选择配置。

当使用其他同类型架构不同扩展时的内核时需修改rtconfig.py文件中的MCPUCPU字段。

2 工具

编译器:https://www.xrvm.cn/community/download?id=4433353576298909696

模拟器:https://www.xrvm.cn/community/download?id=4397435198627713024

SDK:https://www.xrvm.cn/community/download?id=4397799570420076544

若上述链接中的编译器与模拟器不能使用,可使用SDK中的编译器与模拟器工具。

3 编译执行

在BSP根目录下启动env工具:

f1ca3444-57f4-11f0-9cf1-92fbcf53809c.png

首次使用需运行menuconfig更新rtconfig.h配置,然后在当前目录执行scons -j12编译生成rtthread.elf可执行文件。

在BSP根目录下生成rtthread.elf可执行文件后,双击qemu.bat脚本即可启动QEMU模拟器。在Windows环境下首次运行该脚本时,会提示输入QEMU可执行文件的路径;后续若未更改QEMU路径,可直接按回车键跳过此步骤。

f1e1111e-57f4-11f0-9cf1-92fbcf53809c.png

第二步需设置-cpu参数,默认值为e906fd。如需修改,请在:后输入目标内核型号,例如e906。

设置参数后,按回车键即可在QEMU上运行rtthread.elf可执行文件。

BSP根目录下包含objdump.bat脚本,双击运行该脚本可在根目录生成反汇编文件。

4调试方法

4.1 命令行调试

当前BSP支持通过命令行启动QEMU,或通过配置VSCode脚本利用其丰富插件实现图形化调试。有关QEMU的详细命令,请参考玄铁QEMU用户手册。以下为启动QEMU的命令,可在PowerShell或命令行中直接执行

注:需将QEMU路径导出至环境变量或使用绝对路径。

qemu-system-riscv32 -machine smartl -nographic -kernel rtthread.elf -cpu e906fd -gdb tcp::23333-S

在PowerShell或命令行中输入并执行上述命令后,即可查看运行结果。

f1fca3b6-57f4-11f0-9cf1-92fbcf53809c.png

在新的PowerShell或命令行中输入并执行以下命令,即可查看运行结果。

注:需将GDB路径导出至环境变量或使用绝对路径。

riscv64-unknown-elf-gdb.exertthread.elf-ex"target remote localhost:23333"

f209ac28-57f4-11f0-9cf1-92fbcf53809c.png

若未设置断点,在命令行中执行c命令即可让程序全速运行,运行时的界面显示如下:

f21bf4fa-57f4-11f0-9cf1-92fbcf53809c.png

4.2 VSCode调试

以下为VSCode调试示例。调试需配置相关脚本,可参考玄铁QEMU用户手册或使用参考脚本进行配置。

f231693e-57f4-11f0-9cf1-92fbcf53809c.png

2

在C906上运行RT-Smart

下文简要介绍在C906上运行RT-Smart系统的步骤,使用玄铁QEMU在C906上运行RT-Smart的快速上手指南已经上线文档中心,详细的系统启动流程与RT-Smart下的应用程序内容可在文档中心查看。

1 下载RT-Thread源码

RT-Smart与RT-Thread的源码位于同一个仓库,使用menuconfig工具配置选择RT-Smart或RT-Thread。

gitclonehttps://github.com/RT-Thread/rt-thread.git

2 配置工具链

开发工具链可从Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2-20250410.tar.gz下载。下载完成后,将其解压到/opt目录,然后编辑~/.bashrc文件,添加以下环境变量配置:

exportRTT_CC="gcc"exportRTT_EXEC_PATH="/opt/Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2/bin/"exportRTT_CC_PREFIX="riscv64-unknown-linux-musl-"exportPATH="$RTT_EXEC_PATH:$PATH"

3 使能RT-Smart

首先进入RT-Thread Kernel配置选项:

f2494cd4-57f4-11f0-9cf1-92fbcf53809c.png

开启RT-Thread Smart选项

f2ed0b94-57f4-11f0-9cf1-92fbcf53809c.png

4 使能 lwext4 软件包(不使用ext4文件系统可不选)

基于RT-Thread仓库的 bsp/xuantie/virt64/c906/ 构建内核镜像,最终生成rtthread.bin/rtthread.elf ,内核默认支持FAT,若需挂载 ext4 的文件系统,则可添加 lwext4 软件包,即使能PKG_USING_LWEXT4 ,不使用则可以不选。

RT-Thread online packages -> systempackages -> lwext4: an excellent choice of ext2/3/4filesystem for microcontrollers

f2fb04a6-57f4-11f0-9cf1-92fbcf53809c.png

5 Scons编译

f30adaa2-57f4-11f0-9cf1-92fbcf53809c.png

6 制作根文件系统

拉取userapps仓库:userapps仓库包含了一些应用程序和配置文件,能够快速生成根文件系统,并为 RT-Thread 操作系统构建所需的应用程序。

gitclonehttps://github.com/RT-Thread/userapps

userapps目录中,将有如下文件:

f33484e2-57f4-11f0-9cf1-92fbcf53809c.png

apps:存放应用程序代码,包管理文件夹及编译产物

env.sh:用于配置环境变量

repo:用于管理软件包的文件夹

执行env.sh脚本配置环境:

sourceenv.sh

拉取工具链和编译根文件系统:为了编译 xuantie 目标平台上的代码,您需要下载并安装交叉编译工具

链:

cdappsxmake f -a xuantiexmakexmake smart-rootfs

7 生成文件系统镜像

生成的文件系统需与内核功能匹配。若配置内核时未启用 EXT4 文件系统,可通过以下命令生成 FAT 格式文件系统,最终在build目录下生成fat.img文件:

cdbuildmkfs.vfat -C fat.img16M

若内核已启用 EXT4 支持(即已配置PKG_USING_LWEXT4),可通过以下命令生成 ext4 格式的文件系统镜像ext4.img

xmakesmart-image

8 运行RT-Smart

在 QEMU 下运行 SMART 需要三个文件:rtthread.bin(内核文件)、ext4.img 或 fat.img(用户程序镜像)和 run.sh(启动脚本)。

run.sh 位于 bsprt-thread/bsp/xuantie/virt64/c906/ 目录。

rtthread.bin 编译内核后与 run.sh 位于同一目录。

ext4.img 或 fat.img 在生成镜像后位于 userapps/apps/build/ 目录。

将上述三个文件放入同一文件夹即可运行 SMART。

运行结果如下:

$bash run.sh ext4.img

OpenSBI v1.4 ____ _____ ____ _____ / __ \ / ____| _ \_ _|| | | |_ __ ___ _ __ | (___ | |_) || || | | |'_ \ / _ \ '_ \ \___ \| _ < | | | |__| | |_) |  __/ | | |____) | |_) || |_  \____/| .__/ \___|_| |_|_____/|____/_____|        | |        |_|

Platform Name : riscv-virtio,qemuPlatform Features : medelegPlatform HART Count :1Platform IPI Device : aclint-mswiPlatform Timer Device : aclint-mtimer@10000000HzPlatform Console Device : uart8250Platform HSM Device :---Platform PMU Device :---Platform Reboot Device : syscon-rebootPlatform Shutdown Device : syscon-poweroffPlatform Suspend Device :---Platform CPPC Device :---Firmware Base :0x80000000Firmware Size :323KBFirmware RW Offset :0x40000Firmware RW Size :67KBFirmware Heap Offset :0x48000Firmware Heap Size :35KB (total),2KB (reserved),9KB (used),23KB (free)Firmware Scratch Size :4096B (total),328B (used),3768B (free)Runtime SBI Version :2.0

Domain0 Name : rootDomain0 Boot HART :0Domain0 HARTs :0*Domain0 Region00 :0x0000000000100000-0x0000000000100fffM: (I,R,W) S/U: (R,W)Domain0 Region01 :0x0000000010000000-0x0000000010000fffM: (I,R,W) S/U: (R,W)Domain0 Region02 :0x0000000002000000-0x000000000200ffffM: (I,R,W) S/U: ()Domain0 Region03 :0x0000000080040000-0x000000008005ffffM: (R,W) S/U: ()Domain0 Region04 :0x0000000080000000-0x000000008003ffffM: (R,X) S/U: ()Domain0 Region05 :0x000000000c400000-0x000000000c5fffffM: (I,R,W) S/U: (R,W)Domain0 Region06 :0x000000000c000000-0x000000000c3fffffM: (I,R,W) S/U: (R,W)Domain0 Region07 :0x0000000000000000-0xffffffffffffffffM: () S/U: (R,W,X)Domain0 Next Address :0x0000000080200000Domain0 Next Arg1 :0x000000008fe00000Domain0 Next Mode : S-modeDomain0 SysReset : yesDomain0 SysSuspend : yes

Boot HART ID :0Boot HART Domain : rootBoot HART Priv Version : v1.10Boot HART Base ISA : rv64imafdcBoot HART ISA Extensions : zicntr,zihpmBoot HART PMP Count :16Boot HART PMP Granularity :2bitsBoot HART PMP Address Bits:54Boot HART MHPM Info :16(0x0007fff8)Boot HART MIDELEG :0x0000000000000222Boot HART MEDELEG :0x000000000000b109heap: [0x003404c0-0x043404c0]

\ | /- RT - Thread Smart Operating System/ | \ 5.2.1build Jun13202509:43:352006-2024Copyright by RT-Threadteam[I/utest] utest is initialize success.[I/utest] total utest testcase num: (1)[I/drivers.serial]Using/dev/ttyS0 as default console[W/DFS.fs]mount/ failed with file systemtype: elmfile system initialization done!Hello RISC-Vmsh />/#/#/# lsbin lib proc sbin usrdev lost+found root services varetc mnt run tmp/#

上述便是在玄铁平台运行RT-Thread与RT-Smart的使用方法,不需要物理硬件在线即可开发与学习,感兴趣的小伙伴行动起来吧!