亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        uCOS—Ⅲ在Cortex—M4平臺(tái)上的移植和實(shí)現(xiàn)

        2018-03-30 02:26:56梁小驁宋慶國(guó)王勃
        電子技術(shù)與軟件工程 2017年16期
        關(guān)鍵詞:嵌入式系統(tǒng)

        梁小驁 宋慶國(guó) 王勃

        摘要

        介紹了嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-Ⅲ的內(nèi)核架構(gòu),通過(guò)對(duì)ST公司基于Cortex-M4平臺(tái)數(shù)字信號(hào)控制器STM32F407的體系結(jié)構(gòu)進(jìn)行分析,給出了移植的具體方案。描述了uCOS-Ⅲ在Cortex-M4平臺(tái)的移植關(guān)鍵技術(shù)并給出部分關(guān)鍵代碼,最后設(shè)計(jì)了多任務(wù)的應(yīng)用程序-險(xiǎn)證了移植的成功。

        【關(guān)鍵詞】嵌入式系統(tǒng) uCOS-Ⅲ Cortex-M4 STM32F407

        1 引言

        uCOS-Ⅲ是一個(gè)可擴(kuò)展的,可固化的,搶占式的實(shí)時(shí)內(nèi)核,它管理的任務(wù)個(gè)數(shù)不受限制。它作為Micrium推出的第三代操作系統(tǒng)內(nèi)核,提供了現(xiàn)代實(shí)時(shí)內(nèi)核所期望的大部分功能包括資源管理、同步、內(nèi)部任務(wù)通信等功能。uCOS-Ⅲ也提供了很多特性是在其他實(shí)時(shí)內(nèi)核中所不具備的。比如能在運(yùn)行時(shí)測(cè)量運(yùn)行時(shí)間性能,直接的發(fā)送信號(hào)或消息給任務(wù),任務(wù)能同時(shí)等待多個(gè)信號(hào)量和消息隊(duì)列等。因此將uCOS-Ⅲ移植到嵌入式處理器上,對(duì)于提高軟件產(chǎn)品質(zhì)量,推進(jìn)軟件產(chǎn)品化及縮短產(chǎn)品研發(fā)周期等方面有著重要意義。本文主要介紹uCOS-Ⅲ在ST公司數(shù)字信號(hào)控制器STM32F407上的移植。

        2 STM32F407硬件平臺(tái)架構(gòu)

        STM32F407作為ST公司推出的嵌入式數(shù)字信號(hào)控制器系列產(chǎn)品之一,具有更先進(jìn)的Cortex M4內(nèi)核、更多的存儲(chǔ)空間、較高的運(yùn)行速度、支持較多高級(jí)外設(shè)、更低的功耗等優(yōu)點(diǎn),其主要指標(biāo)具體如表1所示。

        STM32F407系列處理器的通用寄存器如圖1所示,其中R0?R7為低組寄存器,字長(zhǎng)全為32位,所有指令均可對(duì)其進(jìn)行訪問(wèn);R0?R8為高組寄存器,字長(zhǎng)全為32位,只有很少16位Thumb可對(duì)其進(jìn)行訪問(wèn)。R13為堆找指針,在CortexM4處理器內(nèi)核中共有兩個(gè)堆棧指針,主堆棧指針(MSP)為缺省指針,由內(nèi)核、異常服務(wù)例程及所需特權(quán)訪問(wèn)的應(yīng)用程序代碼來(lái)使用;進(jìn)程堆棧指針(PSP)則用于常規(guī)的應(yīng)用代碼。R14是鏈接寄存器,用于在調(diào)用子程序時(shí)返回存儲(chǔ)地址;R15是程序計(jì)數(shù)器,可用于程序內(nèi)部分支跳轉(zhuǎn)。

        此外,Cortex M4處理器內(nèi)核還搭載了若干特殊功能寄存器,程序狀態(tài)字寄存器組(PSRs)用于反映程序執(zhí)行狀態(tài);中斷屏蔽寄存器組(PRIMASK、FAULTMASK、BASEPRI),用于控制異常的使能和禁能;控制寄存器(CONTROL)則用于定義特權(quán)級(jí)別和切換堆棧指針。處理器內(nèi)部的SysTick定時(shí)器可產(chǎn)生固定的中斷信號(hào),可作為操作系統(tǒng)的時(shí)鐘信號(hào)。

        3 uCOS-lII移植關(guān)鍵技術(shù)

        3.1 uCOS-Ⅲ源文件體系結(jié)構(gòu)

        uCOS-Ⅲ源文件按照由底層到上層的排列順序進(jìn)行整理,具體源文件體系結(jié)構(gòu)如圖2所示。用戶應(yīng)用程序軟件位于最上層,通過(guò)調(diào)用uCOS-Ⅲ內(nèi)核的接口函數(shù)來(lái)實(shí)現(xiàn)多任務(wù)調(diào)度和切換、內(nèi)存管理和進(jìn)程間通信等功能。從圖2可知,移植uCOS-Ⅲ操作系統(tǒng)的主要任務(wù)是對(duì)④、⑤兩部分代碼的更改,使其正常運(yùn)行于Cortex-M4平臺(tái)。

        3.2 uCOS-Ⅲ與移植相關(guān)代碼編寫

        3.2.1 os—cpu—c.c文件

        uCOS-Ⅲ移植時(shí)首先需確定任務(wù)的堆棧結(jié)構(gòu),進(jìn)行任務(wù)堆棧的初始化工作,以方便第一次任務(wù)切換時(shí)將堆棧彈出,開始運(yùn)行任務(wù)。需實(shí)現(xiàn)的C函數(shù)為OSTaskStklnit(),此函數(shù)主要功能是將寄存器的內(nèi)容入棧,要注意堆棧的增長(zhǎng)方向,嚴(yán)格按照Cortex M4處理器入棧的順序?qū)⒓拇嫫鞯膬?nèi)容放入棧中。依據(jù)Cortex-M4內(nèi)核的任務(wù)堆棧結(jié)構(gòu),OSTaskStklnit()函數(shù)具體實(shí)現(xiàn)如圖3所示。

        還需編寫時(shí)鐘節(jié)拍中斷初始化函數(shù)OS_CPU_SysTickInit()及中斷服務(wù)函數(shù)0S_CPU_SysTickHandler()以便進(jìn)行系統(tǒng)的時(shí)間管理。OS_CPU_SysTickInit()需在系統(tǒng)的第一個(gè)任務(wù)開始前進(jìn)行調(diào)用,若在此之后調(diào)用,則可能導(dǎo)致系統(tǒng)異常崩潰。OS_CPU_SysTickHandler()函數(shù)具體實(shí)現(xiàn)如圖4所示。

        3.2.2 os_cpu_a.asm及os_cpu.h

        在os_cpu_a.asm文件中需要編寫關(guān)于CPU進(jìn)行任務(wù)切換的匯編函數(shù),0S_cpu.h則聲明了相關(guān)宏定義。該部分重點(diǎn)是編寫宏0S_TASK_SW()和宏OSIntCtxSw()。其中宏OS_TASK_SW()用于觸發(fā)一個(gè)軟件中斷或調(diào)用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)任務(wù)切換,具體實(shí)現(xiàn)如圖5所示。

        調(diào)用函數(shù)實(shí)現(xiàn)切換的具體過(guò)程為將當(dāng)前任務(wù)的寄存器入棧,接著待切換任務(wù)出棧放入寄存器中即可。入棧時(shí)應(yīng)注意入棧順序、是否全部入棧等細(xì)節(jié)。若采用觸發(fā)軟件中斷來(lái)實(shí)現(xiàn)切換時(shí),則需在0s_cpu_a.asm中編寫中斷服務(wù)函數(shù)PendSV_Handler()。該函數(shù)實(shí)現(xiàn)系統(tǒng)未入棧的部分寄存器,然后將待切換任務(wù)的堆棧彈到各個(gè)寄存器中來(lái)實(shí)現(xiàn)。宏OSIntCtxSw()用于當(dāng)執(zhí)行中斷服務(wù)程序時(shí),若更高優(yōu)先級(jí)任務(wù)就緒,在退出中斷時(shí)進(jìn)行任務(wù)切換。其代碼實(shí)現(xiàn)和OS_TASK_SW()類似。

        3.3 uCOS-Ⅲ與CPU相關(guān)代碼編寫

        該部分代碼中cpu_def.h文件用于定義和CPU配置相關(guān)的宏,cpu_core.c和cpu_core.h主要包含的是CPU命名、時(shí)間戳計(jì)算等。以上文件和移植無(wú)關(guān),不用進(jìn)行更改。Cpu_c.c和cpu_a.asm文件和CPU底層相關(guān),這兩個(gè)文件必須要實(shí)現(xiàn)開關(guān)中斷函數(shù)CPU_IntSixEn()、CPU_IntSrcDis()。CPU_IntSrcEn()函數(shù)實(shí)現(xiàn)如圖6所示,CPU_IntSrcDis()函數(shù)實(shí)現(xiàn)類似。

        4 uCOS-Ⅲ移植結(jié)果測(cè)試

        本文定義了3個(gè)任務(wù)來(lái)驗(yàn)證uCOS-Ⅲ在Cortex-M4平臺(tái)上的移植結(jié)果,如圖7所示,網(wǎng)絡(luò)數(shù)據(jù)處理任務(wù)對(duì)網(wǎng)絡(luò)數(shù)據(jù)包接收任務(wù)的數(shù)據(jù)包進(jìn)行數(shù)據(jù)按位取反操作;數(shù)據(jù)處理完成后通過(guò)網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送任務(wù)回送相應(yīng)數(shù)據(jù)。任務(wù)之間通過(guò)郵箱機(jī)制進(jìn)行同步。

        系統(tǒng)運(yùn)行結(jié)果如圖8所示,STM32F407可正常接收網(wǎng)絡(luò)數(shù)據(jù)包并進(jìn)行數(shù)據(jù)處理,然后通過(guò)網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送任務(wù)將數(shù)據(jù)處理結(jié)果返回,實(shí)現(xiàn)了移植測(cè)試的預(yù)期功能。

        5 結(jié)語(yǔ)

        本文選用ST公司的STM32F407數(shù)字信號(hào)控制器作為硬件平臺(tái),針對(duì)Ccmex-M4的體系架構(gòu),對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-Ⅲ的源碼進(jìn)行相應(yīng)更改,實(shí)現(xiàn)了uCOS-Ⅲ操作系統(tǒng)在Cortex-M4平臺(tái)上的移植。對(duì)于將uCOS-Ⅲ操作系統(tǒng)移植到同類架構(gòu)芯片上,具有實(shí)際的工程應(yīng)用價(jià)值。

        參考文獻(xiàn)

        [1]ARM.Cortex-M4 Devices Generic User Guide [M]. ARM CORP, 2010.

        [2]STMicroelectronics.STM32F3 and STM32F4 Series Cortex-M4 programming manual [M].STMicroelectronics group of companies, 2014.

        [3]uC0SIII source code [EB/OL].www. micrium.com/downloadcenter/.

        [4]吳常玉,曹孟娟,王麗紅,譯. Joseph Yiu. ARM Cortex-M3 與 Cortex-M4 權(quán)威指南[M].北京:清華大學(xué)出版社,2015.

        [5]劉淵,田彥云,張?zhí)旌?基于μC/OS-Ⅲ和ARM的空心杯電機(jī)控制器設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015, 15 (04): 51-53.

        猜你喜歡
        嵌入式系統(tǒng)
        Teaching Research on IoT and—Embedded System of Software Engineering
        基于Xilinx口袋實(shí)驗(yàn)室的組合邏輯電路設(shè)計(jì)實(shí)驗(yàn)
        面向應(yīng)用的智能專業(yè)嵌入式系統(tǒng)教學(xué)
        基于物聯(lián)網(wǎng)的遠(yuǎn)程紅外控制器
        嵌入式系統(tǒng)軟件開發(fā)技術(shù)探析
        基于AVR單片機(jī)的SPI接口設(shè)計(jì)與實(shí)現(xiàn)
        辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)
        嵌入式系統(tǒng)在醫(yī)療器械中的應(yīng)用分析
        基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
        嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
        国产精品三级在线不卡| 亚洲综合欧美日本另类激情| 精品熟女少妇免费久久| 亚洲精品国产二区在线观看| 少妇被黑人整得嗷嗷叫视频| 成人午夜性a级毛片免费| 欧美自拍区| 在线观看日韩精品视频网站| 少妇被粗大进猛进出处故事| 国产av无码专区亚洲av中文| 久久伊人影院| 日韩av在线不卡一二三区| 国产视频一区二区三区在线免费| 中文无码日韩欧| 99热精品国产三级在线观看| 亚洲码无人客一区二区三区| 亚洲av成人精品一区二区三区| 性一交一乱一乱一视频| 巨臀中文字幕一区二区| 日产一区一区三区区别| 三个男吃我奶头一边一个视频| 依依成人精品视频在线观看| www.五月激情| 人妻在线有码中文字幕| 亚洲精品久久久av无码专区| 欧韩视频一区二区无码| 99久久亚洲精品加勒比| 美腿丝袜诱惑一区二区| 欧美亚洲国产片在线播放| 2020国产精品久久久久| 国产在线精品成人一区二区三区| 夫妇交换性三中文字幕| 国产精品露脸张开双腿| 亚洲国产都市一区二区| 久久成人国产精品一区二区| 老色鬼永久精品网站| 丰满熟妇人妻av无码区| 亚洲AV秘 无码一区二区三区| 国产尤物自拍视频在线观看| 久久国产色av免费观看| 香蕉视频一级片|