Huawei LiteOS 是華為面向IoT領域,構建的"統(tǒng)一物聯網操作系統(tǒng)和中間件軟件平臺",以輕量級(內核小于10k)、低功耗(1節(jié)5號電池最多可以工作5年),快速啟動,互聯互通,安全等關鍵能力,為開發(fā)者提供 "一站式" 完整軟件平臺,有效降低開發(fā)門檻、縮短開發(fā)周期。
Huawei LiteOS 目前主要應用于智能家居、穿戴式、車聯網、智能抄表、工業(yè)互聯網等 IoT 領域的智能硬件上。,還可以和LiteOS生態(tài)圈內的硬件互聯互通,提高用戶體驗。
目前已開源的Huawei LiteOS內核源碼已適配好GD32F450、GD32F190芯片,本文將以GD32F450IKH6芯片為例,介紹基于Cortex-M4核芯片的移植過程。
環(huán)境準備
基于Huawei LiteOS Kernel開發(fā)前,我們首先需要準備好單板運行的環(huán)境,包括軟件環(huán)境和硬件環(huán)境。
硬件環(huán)境:
所需硬件 | 描述 |
GD32F450i-EVAL V1.1單板 | GD32F450開發(fā)板(芯片型號GD32F450IKH6) |
PC機 | 用于編譯、加載并調試鏡像 |
電源(5v) | 開發(fā)板供電(使用Mini USB連接線) |
軟件環(huán)境:
軟件 | 描述 |
Window 7 操作系統(tǒng) | 安裝Keil |
Keil(5.18以上版本) | 用于編譯、鏈接、調試程序代碼 uVision V5.18.0.0 MDK-Lite |
DNW串口調試工具 | 串口調試工具,根據個人喜好可使用其他的串口工具 |
說明
Keil工具需要開發(fā)者自行購買,GD32F190R-EVAL開發(fā)板的調試器是GD-Link,GD-Link免驅動安裝。
獲取Huawei LiteOS 源碼
首先我們從github上下載Huawei LiteOS內核源代碼,步驟如下:
倉庫地址是https://github.com/LITEOS/LiteOS_Kernel.git
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開發(fā)板systick及驅動相關代碼 |
GD32F450i-EVAL | GD450開發(fā)板systick及驅動相關代碼 | |
projects | GD32F190R-EVAL-KEIL | gd32f190開發(fā)板的keil工程目錄 |
GD32F450i-EVAL-KEIL | gd32f450開發(fā)板的keil工程目錄 | |
user | 此目錄存放用戶代碼,LiteOS啟動代碼在mian()函數中 |
獲取Huawei LiteOS源代碼之后,我們可以將自己本地已有工程的代碼適配到LiteOS內核工程中進行應用開發(fā)。
如何適配LiteOS內核工程開發(fā)
本章節(jié)描述的內容以GD32F450i-EVAL開發(fā)板的04_USART_Printf示例工程為基礎,適配到LiteOS的GD32F450i-EVAL-KEIL工程中,演示串口輸出、按鍵中斷及LED點亮功能。
GD32的開發(fā)資料獲取
從http://www.GD32MCU.com 下載相關的開發(fā)包
從購買的開發(fā)板的光盤中獲取相關資料。
注意:光盤上的內容可能比網絡上的更全面一些,建議使用光盤上面的內容。
GD32的開發(fā)包安裝
安裝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接口進行動態(tài)注冊。在完成了代碼添加及工程配置后,開始修改代碼,步驟如下:
注釋gd32f4xx_it.c中的PendSV_Handler()及SysTick_Handler()函數,以免重復定義。
GD工程中SYStemSystemInit函數會調用system_clock_config()函數配置系統(tǒng)時鐘,我們需要修改los_bsp_adapter.c文件中的sys_clk_freq變量值與實際配置的系統(tǒng)時鐘一致。const unsigned int sys_clk_freq = 200000000;
經過以上步驟的修改,完成了代碼的初步移植,然后可以編譯代碼,連接串口線(事先安裝相關驅動)并在串口調試工具中打開相應串口,調試運行時可看到串口打印輸出,按demo板上的Tamper鍵,可以調試按鍵中斷及LED。
-
智能家居
+關注
關注
1929文章
9606瀏覽量
186162 -
車聯網
+關注
關注
76文章
2606瀏覽量
91749
發(fā)布評論請先 登錄
相關推薦
評論