當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Ⅰ、概述上一篇文章是講述ST芯片相關(guān)的配置和OS裁剪相關(guān)的配置,接著上一篇文章來講述關(guān)于UCOS的移植,該文主要針對uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底層端口代碼來講述。請下載“UCOS2_ST

Ⅰ、概述

上一篇文章是講述ST芯片相關(guān)的配置和OS裁剪相關(guān)的配置,接著上一篇文章來講述關(guān)于UCOS的移植,該文主要針對uC/OS-II Ports下面os_cpu_a.asm、os_cpu_c.c和os_cpu.h文件底層端口代碼來講述。

請下載“UCOS2_STM32F1_3個簡單任務(wù)”作為參考工程。


Ⅱ、下載

筆者將F0、F1、F3、F4移植到最新UCOS2.92上。移植好的、獨(dú)立的4個工程供大家下載學(xué)習(xí)、研究。建立的任務(wù)都是一樣的,只是針對芯片不同,Ports目錄下相關(guān)的源代碼有差異、標(biāo)準(zhǔn)外設(shè)庫也存在差異。每一個系列針對不同型號芯片只需要適當(dāng)改一下“型號”就行了。

提供下載的軟件工程都是在板子上運(yùn)行,保證沒問題才上傳至360云盤。

UCOS基于STM32F0系列實(shí)例:

https://yunpan.cn/cRCZrQ3dzeVQq訪問密碼

UCOS基于STM32F1系列實(shí)例:

https://yunpan.cn/cRCZxGFsqHa6Q訪問密碼

UCOS基于STM32F3系列實(shí)例:

https://yunpan.cn/cRCZqPRCWs8UW訪問密碼

UCOS基于STM32F4系列實(shí)例:

https://yunpan.cn/cRCZPqbFqXSPR訪問密碼

UCOS源代碼工程

官網(wǎng)下載(需要賬號):

https://www.micrium.com/downloadcenter/download-results/?searchterm=hm-stmicroelectronics&supported=true

360云盤下載(定期更新至最新):

https://yunpan.cn/cRzcf8eSacEhE訪問密碼 1235

ST標(biāo)準(zhǔn)外設(shè)庫

官網(wǎng)下載(需要賬號):

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961

360云盤下載(定期更新至最新):

https://yunpan.cn/cSaCpGejMSfr8訪問密碼 60ae

參考資料:

https://yunpan.cn/cRCdSt73GwT6j訪問密碼 499e

Ⅲ、工程目錄結(jié)構(gòu)說明

文件結(jié)構(gòu)和工程目錄結(jié)構(gòu)對應(yīng)關(guān)系如上圖所示。


第一類(標(biāo)準(zhǔn)外設(shè)庫):

Startup Code:啟動代碼

STM32F10x_StdPeriph_Driver:標(biāo)準(zhǔn)外設(shè)庫庫驅(qū)動

CMSIS:標(biāo)準(zhǔn)接口

第二類(μC/OS-II實(shí)時內(nèi)核):

uC/OS-II Source:內(nèi)核源代碼(與處理器無關(guān))

uC/OS-II Ports:OS端口底層代碼(與處理器、編譯平臺有關(guān))

第三類(用戶應(yīng)用):

Bsp:應(yīng)用底層代碼(初始化、驅(qū)動等)

App:應(yīng)用實(shí)現(xiàn)代碼(配置OS、應(yīng)用等)

該文主要針對uC/OS-II Ports進(jìn)行移植描述。我們不使用UCOS自帶的調(diào)試功能,這里就不再描述(使用)os_dbg.c文件。

Ⅳ、配置os_cpu_a.asm文件

os_cpu_a.asm文件位于工程uC/OS-II Ports結(jié)構(gòu)下面,主要是系統(tǒng)底層相關(guān)的一部分匯編代碼。

該文件主要對外部引用(全局變量、函數(shù))做了一個申明,及部分系統(tǒng)相關(guān)源代碼(匯編)做了一個定義。

下面我將定義的幾個源代碼做一個描述,移植過程需要修改的我會重點(diǎn)提示出來。

1.全局申明


該文件開頭對全局變量和函數(shù)進(jìn)行了一次聲明,只是使用的匯編,就如C語言里面的extern。

上面部分是外部(其他源文件)定義的變量和函數(shù),下面部分是申明本文件定義的函數(shù),下面我會對這定義的源代碼進(jìn)行講述。

將OS_CPU_PendSVHandler改為PendSV_Handler,為了兼容ST標(biāo)準(zhǔn)外設(shè)庫啟動代碼(startup_stm32f10x_hd.s)。

2.NVIC配置


這部分是對NVIC(中斷控制)寄存器相關(guān)進(jìn)行定義,就如預(yù)處理中宏定義一樣,對寄存器地址,狀態(tài)進(jìn)行定義。

3.代碼生成指令


這幾條指令主要是針對匯編指令的一個處理。

4.狀態(tài)保存與恢復(fù)


這兩個匯編函數(shù)是程序運(yùn)行在臨界區(qū),對數(shù)據(jù)的保存和恢復(fù)的函數(shù)。主要作用就是保護(hù)數(shù)據(jù)不被破壞。

5.運(yùn)行最高優(yōu)先級任務(wù)


這個函數(shù)在任務(wù)切換的時候調(diào)用,知道任務(wù)切換原來的朋友來說這里不難理解。UCOS是按優(yōu)先級來執(zhí)行任務(wù),優(yōu)先級越高(優(yōu)先級數(shù)值越?。?,越容易被執(zhí)行。當(dāng)執(zhí)行的任務(wù)處于掛起(或刪除)時,系統(tǒng)就需要進(jìn)行任務(wù)切換,切換的規(guī)則就是切換到最高優(yōu)先級去執(zhí)行。

6.上下文切換


系統(tǒng)切換任務(wù)可以從兩個地方,也就是從任務(wù)級和中斷級。這兩個函數(shù)的意思都一樣,當(dāng)需要執(zhí)行任務(wù)切換時,根據(jù)條件執(zhí)行某一個。

7.PendSV_Handler中斷


PendSV_Handler中斷函數(shù)定義于這里,主要是在執(zhí)行該中斷對M3內(nèi)核寄存器進(jìn)行一些操作(保存與修改)。

將OS_CPU_PendSVHandler改為PendSV_Handler,為了兼容ST標(biāo)準(zhǔn)外設(shè)庫啟動代碼(startup_stm32f10x_hd.s)。

8.總結(jié)os_cpu_a.asm

對于UCOS的移植,os_cpu_a.asm文件主要就是修改OS_CPU_PendSVHandler的名稱,包含申明時的名稱和定義源代碼時的名稱,其他源代碼保持不變。

Ⅴ、配置os_cpu_c.c文件

os_cpu_c.c文件位于工程uC/OS-II Ports結(jié)構(gòu)下面,主要是系統(tǒng)底層相關(guān)的一部分C語言接口代碼。

該文件有許多HOOK函數(shù),也就是所謂的鉤子函數(shù),主要用于系統(tǒng)初始化、與任務(wù)相關(guān)等,如:系統(tǒng)初始化時OSInitHookBegin()、OSInitHookEnd(); 創(chuàng)建任務(wù)時OSTaskCreateHook等。其實(shí)我們自己移植,有很多HOOK函數(shù)是不需要使用,或者不用去實(shí)現(xiàn)函數(shù)體里面的代碼。下面我將講述幾個重要的函數(shù),有些不重要的HOOK函數(shù)不再講述。

下面我將定義的幾個源代碼做一個描述,移植過程需要修改的我會重點(diǎn)提示出來。

1.系統(tǒng)滴答



這些都是關(guān)于SysTick系統(tǒng)滴答的宏定義和函數(shù)體,由于我們使用M3標(biāo)準(zhǔn)(ST庫里面有)的SysTick系統(tǒng)滴答函數(shù)接口,我們屏蔽掉os_cpu_c.c里面SysTick相關(guān)的定義。

2.OSInitHookBegin


這個函數(shù)被OSInit()開頭調(diào)用,也就是我們main函數(shù)開始調(diào)用OSInit()就會調(diào)用它。

注意:

#ifOS_CPU_HOOKS_EN> 0u

也就是需要在os_cfg.h文件里面配置OS_CPU_HOOKS_EN>0.

3.OSTaskStkInit初始化任務(wù)堆棧


這個函數(shù)比較重要,在創(chuàng)建任務(wù)的時候調(diào)用它。主要是對芯片內(nèi)核寄存器進(jìn)行一個配置,并現(xiàn)場保護(hù)數(shù)據(jù)。這個函數(shù)根據(jù)芯片內(nèi)核不同,也存在很大不同。

Ⅶ、配置os_cpu.h文件

os_cpu.h文件位于工程uC/OS-II Ports結(jié)構(gòu)下面,主要是系統(tǒng)底層相關(guān)的某些定義(堆棧、數(shù)據(jù)類型)、申明(函數(shù))等。

該文件下面源代碼比較簡單,有些不使用,即移植過程需要修改的我會重點(diǎn)提示出來。

1.OS數(shù)據(jù)類型


這部分是為系統(tǒng)定義相關(guān)的數(shù)據(jù)類型,這里不用修改。

2.臨界區(qū)管理


我們使用默認(rèn)使用臨界區(qū)第3模式,這個定義主要是與os_cpu_a.asm文件中定義OS_CPU_SR_Save()函數(shù)有關(guān)。


3.函數(shù)申明


函數(shù)申明比較簡單,這里有幾個函數(shù)我們在os_cpu_a.asm和os_cpu_c.c文件中都屏蔽掉了的,這里也將他們屏蔽掉。

Ⅷ、說明

相關(guān)的文章可以到我博客上查看,我也會定期更新,新內(nèi)容第一時間在微信分享。

當(dāng)你掌握UCOS在一種平臺上的移植,其他平臺移植原理類似,請不要局限某一平臺。

以上總結(jié)僅供參考,若有不對之處,敬請諒解。

Ⅸ、最后

關(guān)注微信,回復(fù)“更多內(nèi)容”,將獲得更多內(nèi)容(如:UCOS實(shí)例等,不斷更新中......)。

如果你喜歡我分享的內(nèi)容,你又想了解更多相關(guān)內(nèi)容,請關(guān)注文章開頭的微信公眾號,新內(nèi)容持續(xù)更新中,后期將會有更多精彩內(nèi)容出現(xiàn)。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉