日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

發(fā)布時(shí)間:2024/7/23 windows 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SAST weekly 是由電子工程系學(xué)生科協(xié)推出的科技系列推送,內(nèi)容涵蓋信息領(lǐng)域技術(shù)科普、研究前沿?zé)狳c(diǎn)介紹、科技新聞跟進(jìn)探索等多個(gè)方面,幫助同學(xué)們?cè)鲩L(zhǎng)姿勢(shì),開(kāi)拓眼界,每周更新,歡迎關(guān)注!歡迎愿意分享知識(shí)的同學(xué)投稿至eesast@mail.tsinghua.edu.cn , 期待你的作品!

????面對(duì)大型的嵌入式工程開(kāi)發(fā),傳統(tǒng)的編程方式并不高效。嵌入式操作系統(tǒng)可以幫助開(kāi)發(fā)者進(jìn)行任務(wù)管理,優(yōu)化程序的整體結(jié)構(gòu),縮短開(kāi)發(fā)周期,增強(qiáng)系統(tǒng)的實(shí)時(shí)性。

????電設(shè)的小小智能車(chē)也可以在開(kāi)發(fā)板上移植嵌入式操作系統(tǒng),進(jìn)行任務(wù)管理與調(diào)度,大大加快我們電設(shè)開(kāi)發(fā)的進(jìn)度。

? ? 目前,嵌入式操作系統(tǒng)FreeRTOS憑借強(qiáng)大穩(wěn)定的功能和廣泛的支持贏得了廣大開(kāi)發(fā)者的親睞。與此同時(shí),國(guó)產(chǎn)的嵌入式系統(tǒng)也嶄露頭角。2015年,華為發(fā)布了開(kāi)源的最輕量級(jí)的物聯(lián)網(wǎng)操作系統(tǒng)LiteOS,為國(guó)內(nèi)的嵌入式開(kāi)發(fā)和開(kāi)源社區(qū)建設(shè)增添了濃墨重彩的一筆。

????本文將對(duì)華為的LiteOS進(jìn)行簡(jiǎn)要的介紹,并帶著大家一步一步地將LiteOS移植到電設(shè)比賽官方提供的STM32F103RCT6開(kāi)發(fā)板上。希望能給各位的電設(shè)比賽提供一些小小的幫助。

01

華為L(zhǎng)iteOS簡(jiǎn)介

??? LiteOS是華為針對(duì)物聯(lián)網(wǎng)領(lǐng)域開(kāi)發(fā)的輕量級(jí)物聯(lián)網(wǎng)操作系統(tǒng),具備輕量級(jí)、低功耗、互聯(lián)互通、組件豐富、快速開(kāi)發(fā)等功能。

??? LiteOS有許多優(yōu)秀的特性。它的最小內(nèi)核尺寸僅有6KB,可以快速啟動(dòng),有著極低的功耗;它包括了端云互通組件,集成了 LwM2M、CoAP、MQTT、mbed TLS、LwIP等全套IoT互聯(lián)互通協(xié)議棧,實(shí)現(xiàn)對(duì)IoT云平臺(tái)的快速接入。除此之外,LiteOS還有OpenCPU架構(gòu)、安全性設(shè)計(jì)、SOTA遠(yuǎn)程升級(jí)、LiteOS Studio繼承開(kāi)發(fā)環(huán)境等一系列優(yōu)秀的特點(diǎn)。

????強(qiáng)大LiteOS操作系統(tǒng)中很小的一部分功能就可以給我們的電設(shè)開(kāi)發(fā)帶來(lái)很大的助力,我們只需要使用到LiteOS中的任務(wù)管理功能。話(huà)不多說(shuō),下面我們一起來(lái)把LiteOS移植到手頭的開(kāi)發(fā)板上。

02

系統(tǒng)移植

構(gòu)建裸機(jī)工程

????打開(kāi)stm32cubeMX,創(chuàng)建工程文件,配置時(shí)鐘樹(shù)。

?????選擇MDK-ARM。生成代碼并打開(kāi)工程。

系統(tǒng)源碼下載

????在GitHub中搜索庫(kù)LiteOS,選擇develop分支,下載源碼。

拷貝代碼與配置修改

????源碼下載完成之后,打開(kāi)剛剛新建的stm32工程所在的文件夾,新建一系列目錄用來(lái)存放系統(tǒng)源碼。新建目錄如下

-Middlewares

????-LiteOS

????????-arch

????????-demos

????????-kernel

????打開(kāi)上一步驟中下載的系統(tǒng)源碼,將demo arch kernel三個(gè)目錄下的所有內(nèi)容拷貝到剛剛建成的目錄中。

????拷貝系統(tǒng)源碼后,整個(gè)工程還需要一些配置代碼,我們可以使用官方提供的移植示例。將LiteOS- develop\ LiteOS-develop\targets\ STM32F103VET6_NB_GCC目錄下的OS_CONFIG文件夾拷貝到工程文件夾中。這個(gè)示例針對(duì)的開(kāi)發(fā)板是STM32F103VET6,而華為并沒(méi)有對(duì)電設(shè)提供的STM32F103RCT6開(kāi)發(fā)板進(jìn)行官方的適配,因此我們需要對(duì)系統(tǒng)配置進(jìn)行一些小修改。

????打開(kāi)OS_CONFIG文件夾下的文件target_config.h,在LiteOS移植過(guò)程中,這個(gè)文件有一下三處需要進(jìn)行配置。

????首先修改MCU頭文件,我們使用的是F103系列芯片,對(duì)應(yīng)的頭文件是stm32f1xx.h,這里我們不需要進(jìn)行修改。同學(xué)們?nèi)蘸笕绻褂貌煌吞?hào)的開(kāi)發(fā)板需要配置不同的MCU驅(qū)動(dòng)頭文件。

#include?"los_typedef.h"

#include?"stm32f1xx.h"

#include?

#include?

????其次是根據(jù)不同芯片修改RAM大小的配置。STM32F103RCT6的SRAM大小是48KB,因此需要對(duì)代碼進(jìn)行如下修改。

#define BOARD_SRAM_SIZE_KB? ? ? ?48

????最后,我們需要對(duì)系統(tǒng)是否接管中斷進(jìn)行配置。非接管中斷方式配置起來(lái)比較方便,而且stm32本身的中斷功能已經(jīng)很完善了,因此我們選擇非接管中斷方式,將 LOSCFG_PLATFORM_HWI設(shè)置為NO。

#define?LOSCFG_PLATFORM_HWI NO

添加頭文件并配置路徑

? ?將我們需要的系統(tǒng)代碼拷貝到工程文件夾之后,我們需要在keil中為工程添加.c源文件并配置頭文件的路徑,從而在編譯過(guò)程中將我們要安裝的系統(tǒng)一同編譯進(jìn)最終的工程中并下載到開(kāi)發(fā)板上。

????用Keil打開(kāi)工程文件,首先,在左側(cè)的Project面板中新建分組如下:

Middleware/LiteOS/arch Middleware/LiteOS/kernel Middleware/LiteOS/demos

????在左側(cè)project面板中右鍵單擊工程,進(jìn)入Manage Project Item界面。

? ? 選擇新建的三個(gè)文件夾,點(diǎn)擊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

????最后,配置頭文件路徑,打開(kāi)keil設(shè)置界面中的C/C++選項(xiàng)卡,設(shè)置include paths。

解決沖突

? ?經(jīng)過(guò)以上步驟,LiteOS系統(tǒng)的安裝就基本完成了。但此時(shí)編譯程序會(huì)報(bào)錯(cuò)。

? ? 這是因?yàn)閏ubeMX在生成代碼時(shí)定義了PendSV_Handler和Systic Handler,而LiteOS系統(tǒng)中又對(duì)其進(jìn)行了定義造成了重定義的問(wèn)題。為了解決這個(gè)問(wèn)題,我們?cè)贑ubeMX中修改兩項(xiàng)設(shè)置。在NVIC的code generation選項(xiàng)卡中,取消?Pendable request for system service 和?Time base: System tick timer 的Generate IRQ handler。

03

結(jié)語(yǔ)

? ? 經(jīng)過(guò)以上步驟后,編譯代碼成功,LiteOS就安裝成功啦。

??? LiteOS與FreeRTOS同屬于嵌入式實(shí)時(shí)操作系統(tǒng),二者在任務(wù)管理上的使用方法很接近。華為L(zhǎng)iteOS官方網(wǎng)站上的官方文檔中有極其詳盡的使用方法,本文就是在參照了官方文檔中關(guān)于系統(tǒng)移植的很多內(nèi)容下寫(xiě)成的,感興趣的讀者可以在官網(wǎng)上進(jìn)行進(jìn)一步深入的學(xué)習(xí)。

????中國(guó)的科技工作者總是對(duì)國(guó)產(chǎn)操作系統(tǒng)有著深深的情結(jié),“自主可控”四個(gè)字在人們的心中總是有著沉沉的重量。華為L(zhǎng)iteOS是國(guó)產(chǎn)操作系統(tǒng)中一個(gè)優(yōu)秀的成果,是向技術(shù)上自主可控邁出的一大步。

????同時(shí),一個(gè)操作系統(tǒng)的成功除了技術(shù)還有良好生態(tài)的建設(shè),這需要一位位開(kāi)發(fā)者不斷支持今天介紹的LiteOS,建成一個(gè)良好的生態(tài)環(huán)境。讀者何不動(dòng)手試一試,在自己的stm32開(kāi)發(fā)板上裝上一個(gè)LiteOS,也為國(guó)產(chǎn)開(kāi)源操作系統(tǒng)的生態(tài)建設(shè)出一把力。

編輯|張?zhí)┤?/p>

審核|劉? 洋

總結(jié)

以上是生活随笔為你收集整理的操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。