操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...
SAST weekly 是由電子工程系學生科協推出的科技系列推送,內容涵蓋信息領域技術科普、研究前沿熱點介紹、科技新聞跟進探索等多個方面,幫助同學們增長姿勢,開拓眼界,每周更新,歡迎關注!歡迎愿意分享知識的同學投稿至eesast@mail.tsinghua.edu.cn , 期待你的作品!
????面對大型的嵌入式工程開發,傳統的編程方式并不高效。嵌入式操作系統可以幫助開發者進行任務管理,優化程序的整體結構,縮短開發周期,增強系統的實時性。
????電設的小小智能車也可以在開發板上移植嵌入式操作系統,進行任務管理與調度,大大加快我們電設開發的進度。
? ? 目前,嵌入式操作系統FreeRTOS憑借強大穩定的功能和廣泛的支持贏得了廣大開發者的親睞。與此同時,國產的嵌入式系統也嶄露頭角。2015年,華為發布了開源的最輕量級的物聯網操作系統LiteOS,為國內的嵌入式開發和開源社區建設增添了濃墨重彩的一筆。
????本文將對華為的LiteOS進行簡要的介紹,并帶著大家一步一步地將LiteOS移植到電設比賽官方提供的STM32F103RCT6開發板上。希望能給各位的電設比賽提供一些小小的幫助。
01
華為LiteOS簡介
??? LiteOS是華為針對物聯網領域開發的輕量級物聯網操作系統,具備輕量級、低功耗、互聯互通、組件豐富、快速開發等功能。
??? LiteOS有許多優秀的特性。它的最小內核尺寸僅有6KB,可以快速啟動,有著極低的功耗;它包括了端云互通組件,集成了 LwM2M、CoAP、MQTT、mbed TLS、LwIP等全套IoT互聯互通協議棧,實現對IoT云平臺的快速接入。除此之外,LiteOS還有OpenCPU架構、安全性設計、SOTA遠程升級、LiteOS Studio繼承開發環境等一系列優秀的特點。
????強大LiteOS操作系統中很小的一部分功能就可以給我們的電設開發帶來很大的助力,我們只需要使用到LiteOS中的任務管理功能。話不多說,下面我們一起來把LiteOS移植到手頭的開發板上。
02
系統移植
構建裸機工程
????打開stm32cubeMX,創建工程文件,配置時鐘樹。
?????選擇MDK-ARM。生成代碼并打開工程。
系統源碼下載
????在GitHub中搜索庫LiteOS,選擇develop分支,下載源碼。
拷貝代碼與配置修改
????源碼下載完成之后,打開剛剛新建的stm32工程所在的文件夾,新建一系列目錄用來存放系統源碼。新建目錄如下
-Middlewares
????-LiteOS
????????-arch
????????-demos
????????-kernel
????打開上一步驟中下載的系統源碼,將demo arch kernel三個目錄下的所有內容拷貝到剛剛建成的目錄中。
????拷貝系統源碼后,整個工程還需要一些配置代碼,我們可以使用官方提供的移植示例。將LiteOS- develop\ LiteOS-develop\targets\ STM32F103VET6_NB_GCC目錄下的OS_CONFIG文件夾拷貝到工程文件夾中。這個示例針對的開發板是STM32F103VET6,而華為并沒有對電設提供的STM32F103RCT6開發板進行官方的適配,因此我們需要對系統配置進行一些小修改。
????打開OS_CONFIG文件夾下的文件target_config.h,在LiteOS移植過程中,這個文件有一下三處需要進行配置。
????首先修改MCU頭文件,我們使用的是F103系列芯片,對應的頭文件是stm32f1xx.h,這里我們不需要進行修改。同學們日后如果使用不同型號的開發板需要配置不同的MCU驅動頭文件。
#include?"los_typedef.h"
#include?"stm32f1xx.h"
#include?
#include?
????其次是根據不同芯片修改RAM大小的配置。STM32F103RCT6的SRAM大小是48KB,因此需要對代碼進行如下修改。
#define BOARD_SRAM_SIZE_KB? ? ? ?48
????最后,我們需要對系統是否接管中斷進行配置。非接管中斷方式配置起來比較方便,而且stm32本身的中斷功能已經很完善了,因此我們選擇非接管中斷方式,將 LOSCFG_PLATFORM_HWI設置為NO。
#define?LOSCFG_PLATFORM_HWI NO
添加頭文件并配置路徑
? ?將我們需要的系統代碼拷貝到工程文件夾之后,我們需要在keil中為工程添加.c源文件并配置頭文件的路徑,從而在編譯過程中將我們要安裝的系統一同編譯進最終的工程中并下載到開發板上。
????用Keil打開工程文件,首先,在左側的Project面板中新建分組如下:
Middleware/LiteOS/arch Middleware/LiteOS/kernel Middleware/LiteOS/demos
????在左側project面板中右鍵單擊工程,進入Manage Project Item界面。
? ? 選擇新建的三個文件夾,點擊Add Files添加LiteOS代碼文件。在middleware/LiteOS/arch分組中,添加以下文件:
arch\arm\arm-m\src
目錄下的全部文件
????los_hw.c
????los_hw_tick.c
????los_hwi.c
arch\arm\arm-m\cortex-m3\keil
目錄下的:
????los_dispatch_keil.S
????在middleware/LiteOS/kernel分組中,添加以下文件:
kernel\base\core ?
下面全部 .c 文件
kernel\base\ipc ??
下面全部 .c 文件
kernel\base\mem\bestfit_little?
下面全部 .c 文件
kernel\base\mem\common?
下面全部 .c 文件
kernel\base\mem\membox?
下面全部 .c 文件
kernel\base\misc?
下面全部 .c 文件
kernel\base\om?
下面全部 .c 文件
kernel\extended\tickless?
下面全部 .c 文件
kernel 下面的 los_init.c
????最后,配置頭文件路徑,打開keil設置界面中的C/C++選項卡,設置include paths。
解決沖突
? ?經過以上步驟,LiteOS系統的安裝就基本完成了。但此時編譯程序會報錯。
? ? 這是因為cubeMX在生成代碼時定義了PendSV_Handler和Systic Handler,而LiteOS系統中又對其進行了定義造成了重定義的問題。為了解決這個問題,我們在CubeMX中修改兩項設置。在NVIC的code generation選項卡中,取消?Pendable request for system service 和?Time base: System tick timer 的Generate IRQ handler。
03
結語
? ? 經過以上步驟后,編譯代碼成功,LiteOS就安裝成功啦。
??? LiteOS與FreeRTOS同屬于嵌入式實時操作系統,二者在任務管理上的使用方法很接近。華為LiteOS官方網站上的官方文檔中有極其詳盡的使用方法,本文就是在參照了官方文檔中關于系統移植的很多內容下寫成的,感興趣的讀者可以在官網上進行進一步深入的學習。
????中國的科技工作者總是對國產操作系統有著深深的情結,“自主可控”四個字在人們的心中總是有著沉沉的重量。華為LiteOS是國產操作系統中一個優秀的成果,是向技術上自主可控邁出的一大步。
????同時,一個操作系統的成功除了技術還有良好生態的建設,這需要一位位開發者不斷支持今天介紹的LiteOS,建成一個良好的生態環境。讀者何不動手試一試,在自己的stm32開發板上裝上一個LiteOS,也為國產開源操作系統的生態建設出一把力。
編輯|張泰然
審核|劉? 洋
總結
以上是生活随笔為你收集整理的操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python是谁维护的_Python是维
- 下一篇: 如何看懂串口通讯协议_一文看懂PLC的通