本章介紹基礎(chǔ)的SDK編譯,打包等操作,方便快速上手 SDK 開(kāi)發(fā)。
SDK 基礎(chǔ)知識(shí)
R128 平臺(tái)擁有三個(gè)核心,Cortex M33 核心作為啟動(dòng)和安全核心,XuanTie C906 核心作為應(yīng)用核運(yùn)行用戶(hù) APP,HIFI5 作為算法核運(yùn)行DSP算法。由于架構(gòu)不同,不同的核心需要運(yùn)行不同的 RTOS。
其中 Cortex M33 和 C906 運(yùn)行的是 FreeRTOS V10.4.3
同一個(gè)內(nèi)核支持兩個(gè)不同架構(gòu)的核心,其外設(shè)、組件、驅(qū)動(dòng)是相同的。特性如下:
- 支持 Cortex-M33(Armv8-M)、C906(Riscv-64) 架構(gòu)
- FreeRTOS V10.4.3 內(nèi)核
- 支持標(biāo)準(zhǔn) posix 接口
- 支持系統(tǒng)接口,用于內(nèi)核以外的模塊調(diào)用內(nèi)核函數(shù)的接口
- 支持文件系統(tǒng),包含設(shè)備管理器、分區(qū)管理器、文件系統(tǒng)實(shí)體管理器等,例如 littlefs、fat 等,實(shí)現(xiàn)對(duì)不同設(shè)備類(lèi)型、分區(qū)類(lèi)型、文件系統(tǒng)類(lèi)型的集成
- 支持 newlibc 庫(kù)
而 HIFI5 運(yùn)行的是 Cadence 所推薦的 FreeRTOS V10.2.0
內(nèi)核,其部分組件與 M33/C906 核心不同。特性如下:
- 支持 Xtensa HIFI5 架構(gòu)
- FreeRTOS V10.2.0 內(nèi)核
- 支持系統(tǒng)接口,用于內(nèi)核以外的模塊調(diào)用內(nèi)核函數(shù)的接口
- 支持 VFPU/NN 算法庫(kù)
所以在開(kāi)發(fā)過(guò)程中,M33/C906 使用的是一套 FreeRTOS SDK,HIFI5 使用的是另外的一套 FreeRTOS SDK。這里將介紹 M33/C906 的開(kāi)發(fā)入門(mén),HIFI5的相關(guān)開(kāi)發(fā)將在 DSP 章節(jié)介紹。
- 異構(gòu)計(jì)算相關(guān)在
SDK 目錄架構(gòu)
下表是簡(jiǎn)化版本的 SDK 目錄結(jié)構(gòu),具體的說(shuō)明在 【SDK入門(mén) - SDK 架構(gòu)與目錄結(jié)構(gòu)】中說(shuō)明。
├── board # 板級(jí)配置目錄
│ ├── common # 公共板級(jí)配置目錄
│ │ ├── configs # 公共板級(jí)配置
│ │ └── data # 公共數(shù)據(jù)
│ └── r128s2 # R128 S2 芯片配置目錄
│ └── module # R128 S2 Module 模塊板級(jí)配置目錄
├── lichee # 系統(tǒng)源碼目錄
│ ├── brandy-2.0 # 啟動(dòng)相關(guān)目錄
│ ├── dsp # HIFI5 FreeRTOS 系統(tǒng)、組件、應(yīng)用
│ ├── rtos # M33/C906 FreeRTOS 系統(tǒng)、組件、應(yīng)用
│ ├── rtos-components # 公共應(yīng)用組件,libc、多媒體、lvgl等
│ └── rtos-hal # RTOS HAL驅(qū)動(dòng)
├── out # 打包輸出的臨時(shí)文件與最終鏡像文件
└── tools # 用于存放打包相關(guān)的腳本、工具
初始化SDK環(huán)境
在編譯之前,需要初始化 SDK 的環(huán)境,使用下列命令初始化環(huán)境。
source envsetup.sh
載入項(xiàng)目方案
使用下列命令載入方案
lunch_rtos
這里我們需要開(kāi)發(fā)的是 r128s2_module_c906
方案,對(duì)應(yīng)的是 R128 模塊的最小化系統(tǒng)開(kāi)發(fā)板的 C906 核心的 RTOS。輸入 1
回車(chē)即可。
第一次載入方案會(huì)解壓工具鏈,解壓完成后會(huì)提示方案載入成功:
第二次開(kāi)始就會(huì)跳過(guò)解壓工具鏈,并且會(huì)記錄上一次選擇的方案。
更換項(xiàng)目方案
在開(kāi)發(fā)過(guò)程中如果需要開(kāi)發(fā) M33 核心方案,需要重新執(zhí)行 lunch_rtos
選擇 M33 方案。
配置 RTOS 基本設(shè)置與軟件包配置
SDK 提供了 mrtos_menuconfig
命令來(lái)配置基本SDK配置與軟件包。相關(guān)文檔位于 [RTOS軟件包配置]。下圖為進(jìn)入的配置界面。
編譯系統(tǒng)
可以使用 m
命令或者 mrtos
命令編譯RTOS系統(tǒng)。
打包系統(tǒng)
使用 p
或者 pack
命令打包系統(tǒng)
注意,打包如果出現(xiàn)
err: failed to open bin file rtos_xxx.fex
Generate image file failed
ERROR: mkimage run error
則是因?yàn)橄到y(tǒng)配置勾選啟用了這個(gè)核心但是實(shí)際沒(méi)有編譯這個(gè)核心的 RTOS 系統(tǒng),導(dǎo)致找不到這個(gè)核心的 RTOS 的固件。這時(shí)候需要編譯完成 RTOS 系統(tǒng)然后重新打包。例如報(bào)錯(cuò) err: failed to open bin file rtos_arm.fex
則需要編譯對(duì)應(yīng)的 arm
核心的固件,在這里是 m33 核心。lunch_rtos
選擇 M33
核心,然后 m
編譯。
此時(shí) pack
就可以通過(guò)了
擴(kuò)展命令
了解上面的命令即可開(kāi)始開(kāi)發(fā) RTOS ,不過(guò) SDK 還提供了一些其他命令簡(jiǎn)化使用。
一鍵編譯 + 打包
SDK 提供了 mp
命令以供一鍵編譯 + 打包方案。
編譯 U-boot
可以使用 muboot
命令編譯 u-boot
編譯完成后會(huì)自動(dòng)拷貝生成的鏡像到指定位置等待打包
編譯 boot0
可以使用 mboot0
編譯 boot0
,編譯完成后會(huì)自動(dòng)拷貝生成的鏡像到指定位置等待打包
編譯 U-boot
+ boot0
可以使用 mboot
命令編譯 U-boot
+ boot0
編譯完成后會(huì)自動(dòng)拷貝生成的鏡像到指定位置等待打包
文件夾跳轉(zhuǎn)快捷命令
- croot: Jump to the top of the tree.
- cboot: Jump to uboot.
- cboot0: Jump to boot0.
- cbin: Jump to uboot/boot0 bin directory.
- cconfigs: Jump to configs of target.
- cout: Jump to out directory of target.
- cdsp: Jump to dsp.
- chal: Jump to rtos-hal.
- ccomponents: Jump to rtos-components.
- cbuild: Jump to rtos build dir.
- cprojects: Jump to rtos projects dir.
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17718瀏覽量
358218 -
命令
+關(guān)注
關(guān)注
5文章
722瀏覽量
22631 -
RTOS
+關(guān)注
關(guān)注
24文章
837瀏覽量
120573 -
SDK
+關(guān)注
關(guān)注
3文章
1057瀏覽量
47341
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
DshanMCU-R128s2-DEVKIT應(yīng)用開(kāi)發(fā)案例

基于DShanMCU-R128s2-DevKit開(kāi)發(fā)智能手表

DshanMCU-R128s2芯片參數(shù)
DshanMCU-R128s2芯片手冊(cè)與資料
DshanMCU-R128s2 R128 模組

DshanMCU-R128s2 R128 DevKit 開(kāi)發(fā)板

DshanMCU-R128s2 R128 EVT 開(kāi)發(fā)套件

DshanMCU-R128s2 SDK 架構(gòu)與目錄結(jié)構(gòu)

DshanMCU-R128s2 Hello World!

DshanMCU-R128s2 配置引腳復(fù)用
DshanMCU-R128s2啟動(dòng)與資源劃分

評(píng)論