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