999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

uCOS—Ⅲ在Cortex—M4平臺上的移植和實現

2018-03-30 02:26:56梁小驁宋慶國王勃
電子技術與軟件工程 2017年16期

梁小驁 宋慶國 王勃

摘要

介紹了嵌入式實時操作系統uCOS-Ⅲ的內核架構,通過對ST公司基于Cortex-M4平臺數字信號控制器STM32F407的體系結構進行分析,給出了移植的具體方案。描述了uCOS-Ⅲ在Cortex-M4平臺的移植關鍵技術并給出部分關鍵代碼,最后設計了多任務的應用程序-險證了移植的成功。

【關鍵詞】嵌入式系統 uCOS-Ⅲ Cortex-M4 STM32F407

1 引言

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

2 STM32F407硬件平臺架構

STM32F407作為ST公司推出的嵌入式數字信號控制器系列產品之一,具有更先進的Cortex M4內核、更多的存儲空間、較高的運行速度、支持較多高級外設、更低的功耗等優點,其主要指標具體如表1所示。

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

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

3 uCOS-lII移植關鍵技術

3.1 uCOS-Ⅲ源文件體系結構

uCOS-Ⅲ源文件按照由底層到上層的排列順序進行整理,具體源文件體系結構如圖2所示。用戶應用程序軟件位于最上層,通過調用uCOS-Ⅲ內核的接口函數來實現多任務調度和切換、內存管理和進程間通信等功能。從圖2可知,移植uCOS-Ⅲ操作系統的主要任務是對④、⑤兩部分代碼的更改,使其正常運行于Cortex-M4平臺。

3.2 uCOS-Ⅲ與移植相關代碼編寫

3.2.1 os—cpu—c.c文件

uCOS-Ⅲ移植時首先需確定任務的堆棧結構,進行任務堆棧的初始化工作,以方便第一次任務切換時將堆棧彈出,開始運行任務。需實現的C函數為OSTaskStklnit(),此函數主要功能是將寄存器的內容入棧,要注意堆棧的增長方向,嚴格按照Cortex M4處理器入棧的順序將寄存器的內容放入棧中。依據Cortex-M4內核的任務堆棧結構,OSTaskStklnit()函數具體實現如圖3所示。

還需編寫時鐘節拍中斷初始化函數OS_CPU_SysTickInit()及中斷服務函數0S_CPU_SysTickHandler()以便進行系統的時間管理。OS_CPU_SysTickInit()需在系統的第一個任務開始前進行調用,若在此之后調用,則可能導致系統異常崩潰。OS_CPU_SysTickHandler()函數具體實現如圖4所示。

3.2.2 os_cpu_a.asm及os_cpu.h

在os_cpu_a.asm文件中需要編寫關于CPU進行任務切換的匯編函數,0S_cpu.h則聲明了相關宏定義。該部分重點是編寫宏0S_TASK_SW()和宏OSIntCtxSw()。其中宏OS_TASK_SW()用于觸發一個軟件中斷或調用一個函數來實現任務切換,具體實現如圖5所示。

調用函數實現切換的具體過程為將當前任務的寄存器入棧,接著待切換任務出棧放入寄存器中即可。入棧時應注意入棧順序、是否全部入棧等細節。若采用觸發軟件中斷來實現切換時,則需在0s_cpu_a.asm中編寫中斷服務函數PendSV_Handler()。該函數實現系統未入棧的部分寄存器,然后將待切換任務的堆棧彈到各個寄存器中來實現。宏OSIntCtxSw()用于當執行中斷服務程序時,若更高優先級任務就緒,在退出中斷時進行任務切換。其代碼實現和OS_TASK_SW()類似。

3.3 uCOS-Ⅲ與CPU相關代碼編寫

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

4 uCOS-Ⅲ移植結果測試

本文定義了3個任務來驗證uCOS-Ⅲ在Cortex-M4平臺上的移植結果,如圖7所示,網絡數據處理任務對網絡數據包接收任務的數據包進行數據按位取反操作;數據處理完成后通過網絡數據包發送任務回送相應數據。任務之間通過郵箱機制進行同步。

系統運行結果如圖8所示,STM32F407可正常接收網絡數據包并進行數據處理,然后通過網絡數據包發送任務將數據處理結果返回,實現了移植測試的預期功能。

5 結語

本文選用ST公司的STM32F407數字信號控制器作為硬件平臺,針對Ccmex-M4的體系架構,對嵌入式實時操作系統uCOS-Ⅲ的源碼進行相應更改,實現了uCOS-Ⅲ操作系統在Cortex-M4平臺上的移植。對于將uCOS-Ⅲ操作系統移植到同類架構芯片上,具有實際的工程應用價值。

參考文獻

[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 權威指南[M].北京:清華大學出版社,2015.

[5]劉淵,田彥云,張天宏.基于μC/OS-Ⅲ和ARM的空心杯電機控制器設計[J].單片機與嵌入式系統應用,2015, 15 (04): 51-53.

主站蜘蛛池模板: 亚洲最新地址| a网站在线观看| 视频国产精品丝袜第一页| 1024国产在线| 伊人久久青草青青综合| 欧美国产精品拍自| 国内精品久久九九国产精品| 国产免费a级片| av性天堂网| 天天婬欲婬香婬色婬视频播放| 亚洲天堂网视频| 免费一级毛片在线播放傲雪网| 国产激情第一页| 亚洲av无码久久无遮挡| 国产一级做美女做受视频| 成人一级黄色毛片| 精品国产三级在线观看| 国产精品成人一区二区| 欧美在线伊人| 老汉色老汉首页a亚洲| 婷婷亚洲天堂| 免费在线国产一区二区三区精品| 国产尤物在线播放| 欧美黄网在线| 国产一级妓女av网站| 亚洲乱码在线播放| 天天干天天色综合网| 88av在线| 欧美激情视频二区三区| 久久这里只有精品免费| 日韩二区三区| 久久国产精品无码hdav| 久久国产V一级毛多内射| V一区无码内射国产| 亚洲欧美人成人让影院| 曰AV在线无码| 国产毛片不卡| 一本大道香蕉久中文在线播放 | 亚洲人成网址| 欧美性爱精品一区二区三区 | 狠狠亚洲五月天| 久久精品国产电影| 综合色在线| 亚洲综合经典在线一区二区| 国产一级特黄aa级特黄裸毛片| 国产欧美日韩视频怡春院| 国产一级在线播放| 亚洲an第二区国产精品| 欧美一区二区精品久久久| 亚洲国产成人精品青青草原| a天堂视频在线| 国产一区二区三区夜色| 免费午夜无码18禁无码影院| 国产美女精品在线| 国产小视频免费| 国产成人亚洲欧美激情| 欧美日韩一区二区在线免费观看| 国产日韩精品欧美一区灰| 欧美在线导航| 美女无遮挡免费网站| 色老二精品视频在线观看| 日韩AV无码一区| 亚洲AV无码不卡无码| 亚洲另类第一页| aa级毛片毛片免费观看久| 亚洲AV无码乱码在线观看裸奔 | 一本大道香蕉高清久久| 香蕉视频在线精品| 亚洲人成网7777777国产| 亚洲成人免费在线| 国产成人免费高清AⅤ| 在线五月婷婷| 蜜桃视频一区二区三区| 国产精品99一区不卡| 暴力调教一区二区三区| 国产精品伦视频观看免费| 欧美午夜在线观看| 国产精品hd在线播放| 国产真实乱人视频| 97狠狠操| 99久久精品国产自免费| 国产成人亚洲无吗淙合青草|