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文件中的MCPU與CPU字段。
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工具:
首次使用需運行menuconfig更新rtconfig.h配置,然后在當前目錄執行scons -j12編譯生成rtthread.elf可執行文件。
在BSP根目錄下生成rtthread.elf可執行文件后,雙擊qemu.bat腳本即可啟動QEMU模擬器。在Windows環境下首次運行該腳本時,會提示輸入QEMU可執行文件的路徑;后續若未更改QEMU路徑,可直接按回車鍵跳過此步驟。
第二步需設置-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或命令行中輸入并執行上述命令后,即可查看運行結果。
在新的PowerShell或命令行中輸入并執行以下命令,即可查看運行結果。
注:需將GDB路徑導出至環境變量或使用絕對路徑。
riscv64-unknown-elf-gdb.exertthread.elf-ex"target remote localhost:23333"
若未設置斷點,在命令行中執行c命令即可讓程序全速運行,運行時的界面顯示如下:
4.2 VSCode調試
以下為VSCode調試示例。調試需配置相關腳本,可參考玄鐵QEMU用戶手冊或使用參考腳本進行配置。
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配置選項:
開啟RT-Thread Smart選項
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
5 Scons編譯
6 制作根文件系統
拉取userapps倉庫:userapps倉庫包含了一些應用程序和配置文件,能夠快速生成根文件系統,并為 RT-Thread 操作系統構建所需的應用程序。
gitclonehttps://github.com/RT-Thread/userapps
在userapps目錄中,將有如下文件:
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的使用方法,不需要物理硬件在線即可開發與學習,感興趣的小伙伴行動起來吧!
-
處理器
+關注
關注
68文章
19869瀏覽量
234567 -
BSP
+關注
關注
1文章
93瀏覽量
26860 -
RT-Thread
+關注
關注
32文章
1396瀏覽量
41763 -
RISC-V
+關注
關注
46文章
2538瀏覽量
48610
發布評論請先 登錄
RT-Thread Studio(對芯來科技RISC-V處理器內核開發的全面支持
4款玄鐵RISC-V芯片亮相
讀書分享會 | 玄鐵RISC-V處理器入門與實戰電子書免費下載!
讀《玄鐵RISC-V處理器入門與實戰》
risc-v峰會亮點 RT-Thread對RISC-V的支持

沁恒微電子聯合RT-Thread推出BSP板級支持包
阿里開源玄鐵RISC-V系列處理器,大幅加速RISC-V軟硬件技術融合
玄鐵杯全球RISC-V應用創新大賽開賽,RISC-V量產硬件可使用RT-ThreadSmart!
玄鐵加入RT-Thread 高級會員合作伙伴 | 戰略新篇

評論