Huawei LiteOS 是華為面向IoT領域,構建的'統一物聯網操作系統和中間件軟件平臺',以輕量級(內核小于10k)、低功耗(1節5號電池最多可以工作5年),快速啟動,互聯互通,安全等關鍵能力,為開發者提供 '一站式' 完整軟件平臺,有效降低開發門檻、縮短開發周期。
Huawei LiteOS 目前主要應用于智能家居、穿戴式、車聯網、智能抄表、工業互聯網等 IoT 領域的智能硬件上。,還可以和LiteOS生態圈內的硬件互聯互通,提高用戶體驗。
目前已開源的Huawei LiteOS內核源碼已適配好GD32F450、GD32F190芯片,本文將以GD32F450IKH6芯片為例,介紹基于Cortex-M4核芯片的移植過程。
環境準備
基于Huawei LiteOS Kernel開發前,我們首先需要準備好單板運行的環境,包括軟件環境和硬件環境。
硬件環境:
所需硬件 | 描述 |
GD32F450i-EVAL V1.1單板 | GD32F450開發板(芯片型號GD32F450IKH6) |
PC機 | 用于編譯、加載并調試鏡像 |
電源(5v) | 開發板供電(使用Mini USB連接線) |
軟件環境:
軟件 | 描述 |
Window 7 操作系統 | 安裝Keil |
Keil(5.18以上版本) | 用于編譯、鏈接、調試程序代碼 uVision V5.18.0.0 MDK-Lite |
DNW串口調試工具 | 串口調試工具,根據個人喜好可使用其他的串口工具 |
說明
Keil工具需要開發者自行購買,GD32F190R-EVAL開發板的調試器是GD-Link,GD-Link免驅動安裝。
獲取Huawei LiteOS 源碼
首先我們從github上下載Huawei LiteOS內核源代碼,步驟如下:
倉庫地址是https://github.com/LITEOS/LiteOS_Kernel.git
點擊”clone or download”按鈕,下載源代碼
Huawei LiteOS的源代碼目錄的各子目錄包含的內容如下:
關于代碼樹中各個目錄存放的源代碼的相關內容簡介如下:
一級目錄 | 二級目錄 | 說明 |
doc | 此目錄存放的是LiteOS的使用文檔和API說明文檔 | |
example | api | 此目錄存放的是內核功能測試用的相關用例的代碼 |
include | aip功能頭文件存放目錄 | |
kernel | base | 此目錄存放的是與平臺無關的內核代碼,包含核心提供給外部調用的接口的頭文件以及內核中進程調度、進程通信、內存管理等等功能的核心代碼。用戶一般不需要修改此目錄下的相關內容。 |
cmsis | LiteOS提供的cmsis接口 | |
config | 此目錄下是內核資源配置相關的代碼,在頭文件中配置了LiteOS所提供的各種資源所占用的內存池的總大小以及各種資源的數量,例如task的最大個數、信號量的最大個數等等 | |
cpu | 此目錄以及以下目錄存放的是與體系架構緊密相關的適配LiteOS的代碼。比如目前我們適配了arm/cortex-m4及arm/cortex-m3系列對應的初始化內容。 | |
include | 內核的相關頭文件存放目錄 | |
link | IDE相關宏定義 | |
platform | GD32F190R-EVAL | GD190開發板systick及驅動相關代碼 |
GD32F450i-EVAL | GD450開發板systick及驅動相關代碼 | |
projects | GD32F190R-EVAL-KEIL | gd32f190開發板的keil工程目錄 |
GD32F450i-EVAL-KEIL | gd32f450開發板的keil工程目錄 | |
user | 此目錄存放用戶代碼,LiteOS啟動代碼在mian()函數中 |
獲取Huawei LiteOS源代碼之后,我們可以將自己本地已有工程的代碼適配到LiteOS內核工程中進行應用開發。
如何適配LiteOS內核工程開發
本章節描述的內容以GD32F450i-EVAL開發板的04_USART_Printf示例工程為基礎,適配到LiteOS的GD32F450i-EVAL-KEIL工程中,演示串口輸出、按鍵中斷及LED點亮功能。
GD32的開發資料獲取
從http://www.GD32MCU.com 下載相關的開發包
從購買的開發板的光盤中獲取相關資料。
注意:光盤上的內容可能比網絡上的更全面一些,建議使用光盤上面的內容。
GD32的開發包安裝
安裝GigaDevice.GD32F4xx_DFP.1.0.1.pack或者更高版本的pack文件到keil安裝目錄
安裝GD32F4xx_Addon.1.0.1.exe到keil安裝目錄
添加代碼到LiteOS工程
在LiteOS內核代碼目錄中新建GD32f450i_Library文件夾,將GD示例工程中使用到的代碼拷貝到其中。
拷貝GD示例工程Library文件夾下的子文件夾到GD32f450i_Library文件夾中。
拷貝GD示例工程04_USART_Printf文件夾下列文件到GD32f450i_Library文件夾中。
GD示例工程代碼目錄結構
在LiteOS工程添加library目錄,將GD示例工程中的源代碼文件(main.c、startup_gd32f4xx.s文件除外)添加到library文件夾下。
GD示例工程啟動文件startup_gd32f4xx.s
添加GD示例工程中startup_gd32f4xx.s文件到LiteOS工程startup文件夾下。
添加頭文件搜索路徑及編譯宏選項
LiteOS可直接使用GD示例工程中的啟動文件,這樣工程中要使用的中斷及中斷服務函數就注冊好了,不需再使用LiteOS接口進行動態注冊。在完成了代碼添加及工程配置后,開始修改代碼,步驟如下:
注釋gd32f4xx_it.c中的PendSV_Handler()及SysTick_Handler()函數,以免重復定義。
GD工程中SYStemSystemInit函數會調用system_clock_config()函數配置系統時鐘,我們需要修改los_bsp_adapter.c文件中的sys_clk_freq變量值與實際配置的系統時鐘一致。const unsigned int sys_clk_freq = 200000000;
經過以上步驟的修改,完成了代碼的初步移植,然后可以編譯代碼,連接串口線(事先安裝相關驅動)并在串口調試工具中打開相應串口,調試運行時可看到串口打印輸出,按demo板上的Tamper鍵,可以調試按鍵中斷及LED。
上一篇:【GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503
下一篇:GD32開發實戰指南(基礎篇) 第1章 開發環境搭建
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- LTC3809EDD-1 演示板,同步降壓轉換器
- 【RA】瑞薩R7MCU調光控制
- FA-128_CC253x,用于 CC253x 系列低功耗 802.15.4 LR-WPAN 無線應用的外部振蕩電路
- TS4909 雙模低功率 150mW 立體聲耳機放大器無電容和單端輸出的典型幻象接地配置應用
- LTC2946IMS-1 雙電源、電荷和能量監視器的典型應用,使用單個光耦合器進行電流隔離,并在任一電源出現故障時使用阻塞二極管來保持數據
- MIC2775 的典型應用:微功耗電壓監控器
- 使用 Microchip Technology 的 MIC2776N-YM5 的參考設計
- 使用 ROHM Semiconductor 的 BA00BC0WT-V5 的參考設計
- AKD4552-A,AK4552 數字音頻評估板,24 位 A/D 和 D/A 轉換器
- ZXRE160 0.6V 增強型可調精密并聯穩壓器的典型應用
- Littelfuse|一個芯片實現過壓、過流、短路和浪涌保護
- 瀏覽Intel物聯網時代下的工廠&建筑,下載贏獎品
- ADI有獎下載活動之12 ADI基于視覺的占用檢測解決方案
- 有獎直播|堵車路上聽什么?新世代車載音頻系統及軟件定義汽車
- 今日競拍:TI SimpleLink Wifi CC3220S
- Avnet&On semi 帶你看未來,3個你必須知道的行業趨勢!
- ADI電磁流量計解決方案
- 點評《深入淺出玩TI Sitara》,精彩好禮等你拿!
- PI PowiGaN技術學習中心,全方位解讀PI 1700V GaN: InnoMux-2 EP技術精髓!有好禮!
- 在挑戰中成長,一起進修TI汽車技術集錦 贏積分有好禮