Huawei LiteOS 是華為面向IoT領(lǐng)域,構(gòu)建的"統(tǒng)一物聯(lián)網(wǎng)操作系統(tǒng)和中間件軟件平臺(tái)",以輕量級(內(nèi)核小于10k)、低功耗(1節(jié)5號電池最多可以工作5年),快速啟動(dòng),互聯(lián)互通,安全等關(guān)鍵能力,為開發(fā)者提供 "一站式" 完整軟件平臺(tái),有效降低開發(fā)門檻、縮短開發(fā)周期。
Huawei LiteOS 目前主要應(yīng)用于智能家居、穿戴式、車聯(lián)網(wǎng)、智能抄表、工業(yè)互聯(lián)網(wǎng)等 IoT 領(lǐng)域的智能硬件上。,還可以和LiteOS生態(tài)圈內(nèi)的硬件互聯(lián)互通,提高用戶體驗(yàn)。
目前已開源的Huawei LiteOS內(nèi)核源碼已適配好GD32F450、GD32F190芯片,本文將以GD32F450IKH6芯片為例,介紹基于Cortex-M4核芯片的移植過程。
環(huán)境準(zhǔn)備
基于Huawei LiteOS Kernel開發(fā)前,我們首先需要準(zhǔn)備好單板運(yùn)行的環(huán)境,包括軟件環(huán)境和硬件環(huán)境。
硬件環(huán)境:
所需硬件 | 描述 |
GD32F450i-EVAL V1.1單板 | GD32F450開發(fā)板(芯片型號GD32F450IKH6) |
PC機(jī) | 用于編譯、加載并調(diào)試鏡像 |
電源(5v) | 開發(fā)板供電(使用Mini USB連接線) |
軟件環(huán)境:
軟件 | 描述 |
Window 7 操作系統(tǒng) | 安裝Keil |
Keil(5.18以上版本) | 用于編譯、鏈接、調(diào)試程序代碼 uVision V5.18.0.0 MDK-Lite |
DNW串口調(diào)試工具 | 串口調(diào)試工具,根據(jù)個(gè)人喜好可使用其他的串口工具 |
說明
Keil工具需要開發(fā)者自行購買,GD32F190R-EVAL開發(fā)板的調(diào)試器是GD-Link,GD-Link免驅(qū)動(dòng)安裝。
獲取Huawei LiteOS 源碼
首先我們從github上下載Huawei LiteOS內(nèi)核源代碼,步驟如下:
倉庫地址是https://github.com/LITEOS/LiteOS_Kernel.git
點(diǎn)擊”clone or download”按鈕,下載源代碼
Huawei LiteOS的源代碼目錄的各子目錄包含的內(nèi)容如下:
關(guān)于代碼樹中各個(gè)目錄存放的源代碼的相關(guān)內(nèi)容簡介如下:
一級目錄 | 二級目錄 | 說明 |
doc | 此目錄存放的是LiteOS的使用文檔和API說明文檔 | |
example | api | 此目錄存放的是內(nèi)核功能測試用的相關(guān)用例的代碼 |
include | aip功能頭文件存放目錄 | |
kernel | base | 此目錄存放的是與平臺(tái)無關(guān)的內(nèi)核代碼,包含核心提供給外部調(diào)用的接口的頭文件以及內(nèi)核中進(jìn)程調(diào)度、進(jìn)程通信、內(nèi)存管理等等功能的核心代碼。用戶一般不需要修改此目錄下的相關(guān)內(nèi)容。 |
cmsis | LiteOS提供的cmsis接口 | |
config | 此目錄下是內(nèi)核資源配置相關(guān)的代碼,在頭文件中配置了LiteOS所提供的各種資源所占用的內(nèi)存池的總大小以及各種資源的數(shù)量,例如task的最大個(gè)數(shù)、信號量的最大個(gè)數(shù)等等 | |
cpu | 此目錄以及以下目錄存放的是與體系架構(gòu)緊密相關(guān)的適配LiteOS的代碼。比如目前我們適配了arm/cortex-m4及arm/cortex-m3系列對應(yīng)的初始化內(nèi)容。 | |
include | 內(nèi)核的相關(guān)頭文件存放目錄 | |
link | IDE相關(guān)宏定義 | |
platform | GD32F190R-EVAL | GD190開發(fā)板systick及驅(qū)動(dòng)相關(guān)代碼 |
GD32F450i-EVAL | GD450開發(fā)板systick及驅(qū)動(dòng)相關(guān)代碼 | |
projects | GD32F190R-EVAL-KEIL | gd32f190開發(fā)板的keil工程目錄 |
GD32F450i-EVAL-KEIL | gd32f450開發(fā)板的keil工程目錄 | |
user | 此目錄存放用戶代碼,LiteOS啟動(dòng)代碼在mian()函數(shù)中 |
獲取Huawei LiteOS源代碼之后,我們可以將自己本地已有工程的代碼適配到LiteOS內(nèi)核工程中進(jìn)行應(yīng)用開發(fā)。
如何適配LiteOS內(nèi)核工程開發(fā)
本章節(jié)描述的內(nèi)容以GD32F450i-EVAL開發(fā)板的04_USART_Printf示例工程為基礎(chǔ),適配到LiteOS的GD32F450i-EVAL-KEIL工程中,演示串口輸出、按鍵中斷及LED點(diǎn)亮功能。
GD32的開發(fā)資料獲取
從http://www.GD32MCU.com 下載相關(guān)的開發(fā)包
從購買的開發(fā)板的光盤中獲取相關(guān)資料。
注意:光盤上的內(nèi)容可能比網(wǎng)絡(luò)上的更全面一些,建議使用光盤上面的內(nèi)容。
GD32的開發(fā)包安裝
安裝GigaDevice.GD32F4xx_DFP.1.0.1.pack或者更高版本的pack文件到keil安裝目錄
安裝GD32F4xx_Addon.1.0.1.exe到keil安裝目錄
添加代碼到LiteOS工程
在LiteOS內(nèi)核代碼目錄中新建GD32f450i_Library文件夾,將GD示例工程中使用到的代碼拷貝到其中。
拷貝GD示例工程Library文件夾下的子文件夾到GD32f450i_Library文件夾中。
拷貝GD示例工程04_USART_Printf文件夾下列文件到GD32f450i_Library文件夾中。
GD示例工程代碼目錄結(jié)構(gòu)
在LiteOS工程添加library目錄,將GD示例工程中的源代碼文件(main.c、startup_gd32f4xx.s文件除外)添加到library文件夾下。
GD示例工程啟動(dòng)文件startup_gd32f4xx.s
添加GD示例工程中startup_gd32f4xx.s文件到LiteOS工程startup文件夾下。
添加頭文件搜索路徑及編譯宏選項(xiàng)
LiteOS可直接使用GD示例工程中的啟動(dòng)文件,這樣工程中要使用的中斷及中斷服務(wù)函數(shù)就注冊好了,不需再使用LiteOS接口進(jìn)行動(dòng)態(tài)注冊。在完成了代碼添加及工程配置后,開始修改代碼,步驟如下:
注釋gd32f4xx_it.c中的PendSV_Handler()及SysTick_Handler()函數(shù),以免重復(fù)定義。
GD工程中SYStemSystemInit函數(shù)會(huì)調(diào)用system_clock_config()函數(shù)配置系統(tǒng)時(shí)鐘,我們需要修改los_bsp_adapter.c文件中的sys_clk_freq變量值與實(shí)際配置的系統(tǒng)時(shí)鐘一致。const unsigned int sys_clk_freq = 200000000;
經(jīng)過以上步驟的修改,完成了代碼的初步移植,然后可以編譯代碼,連接串口線(事先安裝相關(guān)驅(qū)動(dòng))并在串口調(diào)試工具中打開相應(yīng)串口,調(diào)試運(yùn)行時(shí)可看到串口打印輸出,按demo板上的Tamper鍵,可以調(diào)試按鍵中斷及LED。
-
智能家居
+關(guān)注
關(guān)注
1928文章
9578瀏覽量
185523 -
車聯(lián)網(wǎng)
+關(guān)注
關(guān)注
76文章
2587瀏覽量
91639
發(fā)布評論請先 登錄
相關(guān)推薦
評論