RT-Thread BSP全面支持玄鐵全系列RISC-V處理器。玄鐵系列RISC-V處理器由阿里達(dá)摩院研發(fā),涵蓋面向MCU的E系列、面向?qū)崟r應(yīng)用的R系列以及面向MPU的C系列。以玄鐵QEMU為平臺,RT-Thread標(biāo)準(zhǔn)版已全面適配玄鐵E、R、C系列內(nèi)核,并在C906內(nèi)核上支持RT-Smart微內(nèi)核操作系統(tǒng)。本文將以E906運行RT-Thread和C906運行RT-Smart為例,詳細(xì)介紹其應(yīng)用場景與實現(xiàn)。
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 產(chǎn)品線中的最高性能處理器。 E906 的設(shè)計目標(biāo)是,使用最低的面積和功耗成本,取得相對較高的性能指標(biāo)。 E906 主要面向語音、高端 MCU、輕量級 AI、導(dǎo)航、 WiFi 等應(yīng)用領(lǐng)域。
1.1 特點
E906 處理器體系結(jié)構(gòu)的主要特點如下:
32 位 RISC 處理器;
支持 RISC-V RV32IMA[F][D]C[P] 指令集;
支持 RISC-V 32/16 位混編指令集;
32 個 32 位通用寄存器;
整型 5 級/浮點 7 級,單發(fā)射,順序執(zhí)行流水線;
可選配 BHT 和 BTB;
支持 RISC-V 機器模式和用戶模式;
雙周期硬件乘法器,基 4 硬件除法器;
可選配指令 cache,兩路組相連結(jié)構(gòu), 2KiB-32KiB 可配置;
可選配數(shù)據(jù) cache,兩路組相連結(jié)構(gòu), 2KiB-32KiB 可配置;
兼容 RISC-V CLIC 中斷標(biāo)準(zhǔn),支持中斷嵌套,外部中斷源數(shù)量最高可配置 240 個;
兼容 RISC-V PMP 內(nèi)存保護(hù)標(biāo)準(zhǔn), 0/4/8/12/16 區(qū)域可配置;
支持 AHB-Lite 總線協(xié)議,支持三條總線:指令總線,數(shù)據(jù)總線和系統(tǒng)總線;
支持可配的性能監(jiān)測單元;
支持玄鐵擴(kuò)展增強指令集
1.2 BSP支持情況
BSP鏈接:
https://github.com/RT-Thread/rt-thread/tree/master/bsp/xuantie
當(dāng)前BSP支持下述內(nèi)核:
E906E906F E906FD E906P E906FP E906FDP
當(dāng)前BSP默認(rèn)設(shè)置的內(nèi)核是E906FD,該架構(gòu)支持[F] [D]擴(kuò)展,可以通過menuconfig工具選擇配置。
當(dāng)使用其他同類型架構(gòu)不同擴(kuò)展時的內(nèi)核時需修改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 編譯執(zhí)行
在BSP根目錄下啟動env工具:
首次使用需運行menuconfig更新rtconfig.h配置,然后在當(dāng)前目錄執(zhí)行scons -j12編譯生成rtthread.elf可執(zhí)行文件。
在BSP根目錄下生成rtthread.elf可執(zhí)行文件后,雙擊qemu.bat腳本即可啟動QEMU模擬器。在Windows環(huán)境下首次運行該腳本時,會提示輸入QEMU可執(zhí)行文件的路徑;后續(xù)若未更改QEMU路徑,可直接按回車鍵跳過此步驟。
第二步需設(shè)置-cpu參數(shù),默認(rèn)值為e906fd。如需修改,請在:后輸入目標(biāo)內(nèi)核型號,例如e906。
設(shè)置參數(shù)后,按回車鍵即可在QEMU上運行rtthread.elf可執(zhí)行文件。
BSP根目錄下包含objdump.bat腳本,雙擊運行該腳本可在根目錄生成反匯編文件。
4調(diào)試方法
4.1 命令行調(diào)試
當(dāng)前BSP支持通過命令行啟動QEMU,或通過配置VSCode腳本利用其豐富插件實現(xiàn)圖形化調(diào)試。有關(guān)QEMU的詳細(xì)命令,請參考玄鐵QEMU用戶手冊。以下為啟動QEMU的命令,可在PowerShell或命令行中直接執(zhí)行
注:需將QEMU路徑導(dǎo)出至環(huán)境變量或使用絕對路徑。
qemu-system-riscv32 -machine smartl -nographic -kernel rtthread.elf -cpu e906fd -gdb tcp::23333-S
在PowerShell或命令行中輸入并執(zhí)行上述命令后,即可查看運行結(jié)果。
在新的PowerShell或命令行中輸入并執(zhí)行以下命令,即可查看運行結(jié)果。
注:需將GDB路徑導(dǎo)出至環(huán)境變量或使用絕對路徑。
riscv64-unknown-elf-gdb.exertthread.elf-ex"target remote localhost:23333"
若未設(shè)置斷點,在命令行中執(zhí)行c命令即可讓程序全速運行,運行時的界面顯示如下:
4.2 VSCode調(diào)試
以下為VSCode調(diào)試示例。調(diào)試需配置相關(guān)腳本,可參考玄鐵QEMU用戶手冊或使用參考腳本進(jìn)行配置。
2
在C906上運行RT-Smart
下文簡要介紹在C906上運行RT-Smart系統(tǒng)的步驟,使用玄鐵QEMU在C906上運行RT-Smart的快速上手指南已經(jīng)上線文檔中心,詳細(xì)的系統(tǒng)啟動流程與RT-Smart下的應(yīng)用程序內(nèi)容可在文檔中心查看。
1 下載RT-Thread源碼
RT-Smart與RT-Thread的源碼位于同一個倉庫,使用menuconfig工具配置選擇RT-Smart或RT-Thread。
gitclonehttps://github.com/RT-Thread/rt-thread.git
2 配置工具鏈
開發(fā)工具鏈可從Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2-20250410.tar.gz下載。下載完成后,將其解壓到/opt目錄,然后編輯~/.bashrc文件,添加以下環(huán)境變量配置:
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
首先進(jìn)入RT-Thread Kernel配置選項:
開啟RT-Thread Smart選項
4 使能 lwext4 軟件包(不使用ext4文件系統(tǒng)可不選)
基于RT-Thread倉庫的 bsp/xuantie/virt64/c906/ 構(gòu)建內(nèi)核鏡像,最終生成rtthread.bin/rtthread.elf ,內(nèi)核默認(rèn)支持FAT,若需掛載 ext4 的文件系統(tǒng),則可添加 lwext4 軟件包,即使能PKG_USING_LWEXT4 ,不使用則可以不選。
RT-Thread online packages -> systempackages -> lwext4: an excellent choice of ext2/3/4filesystem for microcontrollers
5 Scons編譯
6 制作根文件系統(tǒng)
拉取userapps倉庫:userapps倉庫包含了一些應(yīng)用程序和配置文件,能夠快速生成根文件系統(tǒng),并為 RT-Thread 操作系統(tǒng)構(gòu)建所需的應(yīng)用程序。
gitclonehttps://github.com/RT-Thread/userapps
在userapps目錄中,將有如下文件:
apps:存放應(yīng)用程序代碼,包管理文件夾及編譯產(chǎn)物
env.sh:用于配置環(huán)境變量
repo:用于管理軟件包的文件夾
執(zhí)行env.sh腳本配置環(huán)境:
sourceenv.sh
拉取工具鏈和編譯根文件系統(tǒng):為了編譯 xuantie 目標(biāo)平臺上的代碼,您需要下載并安裝交叉編譯工具
鏈:
cdappsxmake f -a xuantiexmakexmake smart-rootfs
7 生成文件系統(tǒng)鏡像
生成的文件系統(tǒng)需與內(nèi)核功能匹配。若配置內(nèi)核時未啟用 EXT4 文件系統(tǒng),可通過以下命令生成 FAT 格式文件系統(tǒng),最終在build目錄下生成fat.img文件:
cdbuildmkfs.vfat -C fat.img16M
若內(nèi)核已啟用 EXT4 支持(即已配置PKG_USING_LWEXT4),可通過以下命令生成 ext4 格式的文件系統(tǒng)鏡像ext4.img:
xmakesmart-image
8 運行RT-Smart
在 QEMU 下運行 SMART 需要三個文件:rtthread.bin(內(nèi)核文件)、ext4.img 或 fat.img(用戶程序鏡像)和 run.sh(啟動腳本)。
run.sh 位于 bsprt-thread/bsp/xuantie/virt64/c906/ 目錄。
rtthread.bin 編譯內(nèi)核后與 run.sh 位于同一目錄。
ext4.img 或 fat.img 在生成鏡像后位于 userapps/apps/build/ 目錄。
將上述三個文件放入同一文件夾即可運行 SMART。
運行結(jié)果如下:
$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的使用方法,不需要物理硬件在線即可開發(fā)與學(xué)習(xí),感興趣的小伙伴行動起來吧!
-
處理器
+關(guān)注
關(guān)注
68文章
19869瀏覽量
234597 -
BSP
+關(guān)注
關(guān)注
1文章
93瀏覽量
26863 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1396瀏覽量
41769 -
RISC-V
+關(guān)注
關(guān)注
46文章
2538瀏覽量
48618
發(fā)布評論請先 登錄
RT-Thread Studio(對芯來科技RISC-V處理器內(nèi)核開發(fā)的全面支持
玄鐵VirtualZone:基于RISC-V架構(gòu)的安全擴(kuò)展
阿里平頭哥宣布開源玄鐵RISC-V系列處理器
RISC-V系列處理器的相關(guān)資料推薦
4款玄鐵RISC-V芯片亮相
讀書分享會 | 玄鐵RISC-V處理器入門與實戰(zhàn)電子書免費下載!
讀《玄鐵RISC-V處理器入門與實戰(zhàn)》
risc-v峰會亮點 RT-Thread對RISC-V的支持

沁恒微電子聯(lián)合RT-Thread推出BSP板級支持包
阿里開源玄鐵RISC-V系列處理器,大幅加速RISC-V軟硬件技術(shù)融合
平頭哥宣布開源玄鐵RISC-V系列處理器

RT-Thread全球技術(shù)大會:RISC-V的背景、現(xiàn)狀以及未來規(guī)劃

玄鐵杯全球RISC-V應(yīng)用創(chuàng)新大賽開賽,RISC-V量產(chǎn)硬件可使用RT-ThreadSmart!
玄鐵加入RT-Thread 高級會員合作伙伴 | 戰(zhàn)略新篇

評論