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

μC/OS-Ⅱ在TMS320F2812上的移植研究

2010-04-12 00:00:00何湘智
現代電子技術 2010年4期

摘 要:μC/OS-Ⅱ是一種可移植應用于多種微處理器的實時內核,在此基礎上開發應用軟件,可分解多任務系統,簡化應用軟件的設計。為使某基于μC/OS-Ⅱ開發的實時軟件成功移植到TMS320F2812上,在分析μC/OS-Ⅱ的硬件/軟件結構特點的基礎上,首先對與TMS320F2812相關代碼和與應用軟件相關代碼移植問題分別討論研究。最后通過分析TMS320F2812堆棧空間的尋址方式,給出了擴展TMS320F2812堆棧空間的兩種方法。實驗證明移植成功。

關鍵詞:μC/OS-Ⅱ;TMS320F2812;堆棧空間;代碼移植

中圖分類號:TP311文獻標識碼:B

文章編號:1004-373X(2010)04-086-03

Transplantation of μC/OS- II on TMS320F2812

HE Xiangzhi,WU Hui,ZHOU Wei

(Beijing Aeronautical Technology Research Center,Beijing,100076,China)

Abstract:μC/OS-Ⅱ is a kind of real-time kernel which is transportable in various microprocessor.Application software is develpped,it can decompose multitasking system and simplify application software design.To make software based on μC/OS-Ⅱ successfully transplant to TMS320F2812,the hardware/software structure′s characteristics ofμC/OS-Ⅱ are analyzed firstly,then the code relevant with TMS320F2812 and application software are analyzed and researched respectively.Finally,two kinds of stack TMS320F2812 method are proposed through the analysis of stack TMS320F2812 addressing mode.Experiments prove the transplantation is successful.

Keywords:μC/OS-Ⅱ;TMS320F2812;stack;code transplantation

0 引 言

嵌入式實時控制軟件按是否采用操作系統分為兩類:前/后臺式系統(Foreground/Background)和使用實時操作系統(RTOS)[1]。其中,基于實時操作系統(RTOS)的控制軟件設計是在某一操作系統上進行二次開發,操作系統通過一個內核的調度來管理微控制器來保證所有關鍵的事件都能夠盡可能得有效運行。這是由于它允許系統被分成多個獨立的模塊稱之為任務,而且每個任務都可以認為CPU只屬于自己,而任務之間的調度則由內核完成,實現相對意義下的“并行”。同時采用基于優先級的可剝奪性調度算法來保證實時性。RTOS將應用分解成多任務,簡化了應用軟件的設計,同時使得控制的實時性得到保證,可以接近理論上能達到的最好水平[2]。這里主要對在TMS320F2812上移植使用μC/OS-Ⅱ操作系統展開研究與討論。

1 TMS320F2812

TMS320F2812(以下簡稱F2812)是TI公司最新一代的2000系列32位定點DSP控制器,支持PWM控制電機,是目前控制領域最先進的處理器之一。其頻率高達150 MHz,可以大大提高控制系統的控制精度和芯片的處理能力[3]。F2812提供浮點數學函數庫,可以實現浮點運算。F2812集成了128 KB的閃存,優化的事件管理器和可編程通用計數器,還包括了16通道的12 b ADC轉換器。片上集成了SCI,SPI,EV,URAT和eCAN等標準通信接口。

2 μC/OS-Ⅱ操作系統

μC/OS-Ⅱ意為“微控制器操作系統版本2”,它是一個完整的,可移植、可固化、可裁減及可剝奪的多任務實時內核,包含了多個相對獨立的,短小精悍的目標模塊。這些模塊分別提供任務管理,時間管理,任務間的通信和同步、內存管理等系統服務。至今,從8 b到64 b,μC/OS-Ⅱ已經超過在40種不同架構的微處理器上完成移植[4]。所謂移植,就是使一個實時內核能在其他的微處理器上運行,基本上就是編寫與處理器相關的代碼[5]。為了方便移植,大部分μC/OS-Ⅱ的代碼是用C語言編寫,只有與處理器硬件相關的代碼采用匯編語言編寫,因此μC/OS-Ⅱ可移植性強。

圖1為μC/OS-Ⅱ硬件/軟件體系結構圖[6]。

圖1 μC/OS-Ⅱ硬件/軟件體系結構

從圖1 可看出μC/OS-Ⅱ是由與處理器相關的代碼,與處理器無關的代碼及與應用程序相關的代碼組成。

3 與處理器相關代碼

在μC/OS-Ⅱ的移植中,主要是編寫與處理器相關的代碼,即主要是頭文件OSCPU.H,C文件OSCPUC.C,ASM文件OSCPUA.ASM。

3.1 OSCPU.H文件

OSCPU.H包括了用#defines定義的預處理器相關的常量,宏和類型定義。

(1) 與處理器相關的數據類型定義。因為不同的處理器有不同的字長,所以μC/OS-Ⅱ包括一系列的類型定義以確保其可移植性。對于F2812而言,所有的整數類型包括字符型,短整數和整數及其對應的無符號數類型都用16 b的二進制數表示;長整數和無符號的長整數用32 b的二進制數表示。

(2) 中斷處理方式。μC/OS-Ⅱ 定義了兩個宏來禁止和允許中斷: OSENTERCRITICAL() 和OSEXITCRITICAL()。實現中斷的方法有兩個:一是在OSENTERCRITICAL()中調用處理器指令來禁止中斷,以及在OSEXITCRITICAL()中調用允許中斷指令;二是先將中斷禁止狀態保存到堆棧中,然后禁止中斷。而執行OSEXITCRITICAL()時,只是從堆棧中恢復中斷狀態。對F2812移植采用第二種方法。代碼如下:

#define OSENTERCRITICAL() asm(\" SETC INTM \")

#define OSEXITCRITICAL()asm(\" CLRC INTM \")

(3) 堆棧增長方式。F2812堆棧的增長方式是從下往上,因此定義OSSTKGROWTH=0(OSSTKGROWTH=1表示堆棧從上往下)。

3.2 OSCPUC.C文件

μC/OS-Ⅱ的移植要求編寫6個C 函數:OSTaskStkInit(),OSTaskCreateHook(),OSTaskDelHook(),OSTaskSwHook(),OSTaskStatHook(),OSTimeTickHook()。函數OSTaskStkInit()是惟一必要的,其他5個函數必須聲明,但沒必要包含代碼[7]。OSTaskStk In it()是在用戶建立任務時系統內部自己調用的,對用戶任務的堆棧進行初始化,使建立好的進入就緒態任務的堆棧與系統發生中斷并且與環境變量保存完畢時的堆棧結構一致。

3.3 OSCPUA.ASM

在ASM 文件OSCPUA.ASM 中需要編寫4個匯編語言函數:OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()和OSTickISR()。

(1) OSStartHighRdy():OSStartHighRdy() 在多任務系統啟動函數OSStart()中調用。實現的功能是:設置系統運行標志位OSRunning = TRUE,將就緒表中最高優先級任務的棧指針裝載到SP 中,并強制中斷返回。這樣就緒的最高優先級任務就如同從中斷里返回到運行態一樣,使得整個系統得以運轉。

(2) OSCtxSw():OSCtxSw()其功能是實現任務級的切換。任務級的切換是通過執行軟中斷指令,或者依據處理器的不同,執行TRAP(陷阱)指令來實現的。F2812中定義TRAP#31實現。

(3) OSIntCtxSw():OSIntCtxSw()完成退出中斷服務函數OSIntExit()通過調用OSIntCtxSw(),在ISR中執行任務切換功能。OSCtxSw()是任務間的切換,OSIntCtxSw()則是在中斷中發生的任務切換。OSIntCtxSw()函數中的絕大多數代碼同OSCtxSw()。區別只是因為ISR已經保存了CPU的寄存器,而不需要再在OSIntCtxSw()函數中保存CPU的寄存器[8]。

(4) OSTickISR():OSTickISR()實現時間的延時和期滿功能。該函數具體內容包括:保存寄存器,調用OSIntEnter(),調OSTimeTick(),調用OSIntExit(),恢復寄存器,中斷返回。

4 與應用相關代碼

與應用相關的代碼包括兩個文件: OSCFG.H和INCLUDES.H。OSCFG.H用來配置內核,用戶根據需要對內核進行定制,設置系統的基本情況。比如系統可提供的最大任務數量、是否定制郵箱服務、是否需要系統提供任務掛起功能、是否允許鉤子函數等。代碼的削減可以通過設置OSCFG.H中的#defines OS???EN 為0或1來實現,當設置為0時,該服務代碼就不會生成。INCLUDES.H是系統頭文件,包括了內核和用戶的頭文件。

5 用戶代碼

μC/OS-Ⅱ在F2812移植中必須使用SP寄存器,該寄存器是16位的,且不支持間接尋址,因此只能使用低64 KB存儲空間。這樣用戶創建任務的堆棧空間,也必須分配在SP能夠訪問的低64 KB空間里,而在低64 KB空間中只有10 KB空間可以分配給應用程序,具體地址空間地址為[9]:1 KB(M0)+1 KB(M1)+4 KB(L0)+4 KB(L1)=10 KB。這樣在碰到開發多任務應用軟件時可能就會遇到堆棧空間不夠用的問題。解決的辦法有兩個:一種方法是采用堆棧空間拷貝技術[10],即定義用戶堆棧空間,該空間不在低64 KB空間里。而在TCB 結構體中定義OSTCBStkPtr 總是指向用戶堆棧最低地址,用于存放系統堆棧映像。在進行任務切換時,首先保存當前任務系統堆棧內容的同時向用戶堆棧拷貝數據。其次恢復高優先級任務系統堆棧,方法是:獲得最高優先級任務用戶堆棧最低地址,以最高優先級任務用戶堆棧最低地址為起址,以OSStkStart 為系統堆棧起址,由用戶棧向系統棧拷貝數據。這種方法的優點是可使操作系統任務數及任務棧大小不受限制,缺點是過程復雜。第二種方法則比較簡單,即在進行每個任務定義時,盡量不定義局部變量,而將大的數組定義為全局變量,因為全局變量是可以不存放在低64 KB空間的。壓縮每個任務所需堆棧空間,同時對任務進行合理優化,減少任務數,這樣也可達到壓縮堆棧空間的目的。筆者在進行移植時,采用的是第二種方法。

6 結 語

至此,完整的移植過程就結束。經實際測試,各個功能部件都能很好的工作,移植工作是成功的。μC/OS-Ⅱ具有很高的可移植性,在TMS320F2812上應用μC/OS-Ⅱ嵌入式操作系統后,由操作系統來管理硬件和軟件資源,大大方便了應用程序的設計和擴展。

參考文獻

[1]王田苗.嵌入式系統設計與實例開發[M].北京:清華大學出版社,2002.

[2]田澤.嵌入式系統開發與應用教程[M].北京:北京航空航天大學出版社,2005.

[3]寧改娣.DSP控制器原理及應用[M].2版.北京:科學出版社,2009.

[4]王奕.基于μC/OS-Ⅱ的無人直升機飛行控制系統軟件設計[D].南京:南京航空航天大學,2008.

[5]魏洪興,周亦敏.嵌入式系統設計與實例開發實驗教材[M].北京:清華大學出版社,2005.

[6]Jean J Labrosse.嵌入式實時操作系統μC/OS-Ⅱ[M].邵貝貝,譯.北京:北京航空航天大學出版社,2003.

[7]秦紹華,陳滌.μC/OS-Ⅱ在80C51下的移植[J].信息技術與信息化,2005(2):39-40.

[8]田力,張小林,胡永紅.基于μC/OS-Ⅱ的無人機數據采集系統[J].計算機測量與控制,2009(17):237-239.

[9]孫麗明.TMS320F2812原理及其C語言程序開發[M].北京:清華大學出版社,2008.

[10]沈睿,許峰.μC/OS-Ⅱ在DSP2407上若干移植問題的研究 [J].中國水運,2007(5):175-176.

主站蜘蛛池模板: 91精品国产丝袜| 99re精彩视频| 一级全免费视频播放| 亚洲三级网站| a级毛片在线免费| 亚洲国产精品成人久久综合影院| 久久久久人妻一区精品色奶水| 91久久夜色精品国产网站| 91福利在线看| 亚洲一级无毛片无码在线免费视频| 欧美不卡视频在线观看| 无码内射在线| 天天干天天色综合网| 精品乱码久久久久久久| 2022精品国偷自产免费观看| 午夜福利在线观看入口| 欧美一道本| 国产91特黄特色A级毛片| 亚洲成人网在线播放| 亚洲一区二区黄色| 国外欧美一区另类中文字幕| 国产免费福利网站| 国产麻豆永久视频| 国产女人在线| 日韩精品毛片| 婷婷成人综合| 亚洲三级影院| 中文国产成人精品久久| 国产乱人乱偷精品视频a人人澡| 亚洲Va中文字幕久久一区| 在线国产91| a亚洲视频| 国产精品福利一区二区久久| 久久久久青草大香线综合精品| 国产99在线观看| 久草视频精品| 99久视频| 伦伦影院精品一区| 日韩高清一区 | 午夜激情福利视频| 国产素人在线| 亚洲成人www| www.日韩三级| 久久婷婷人人澡人人爱91| 日韩午夜片| 91丝袜在线观看| 91 九色视频丝袜| 亚洲精品不卡午夜精品| 99er精品视频| 亚洲日韩第九十九页| 国产青青操| 日韩av无码精品专区| 91美女视频在线观看| 亚洲婷婷丁香| 爆乳熟妇一区二区三区| 欧美日韩高清在线| 国产综合网站| 国产精品视频3p| 国产人人干| 天堂va亚洲va欧美va国产| 国产成熟女人性满足视频| 久久精品国产精品一区二区| 免费一看一级毛片| 蜜臀AV在线播放| 亚洲国产成人精品无码区性色| 亚洲国产第一区二区香蕉| 久久77777| 久久精品电影| 国产成人91精品| 欧美另类视频一区二区三区| 91久久国产综合精品| 国产真实乱子伦视频播放| 嫩草在线视频| 在线看片免费人成视久网下载| 午夜一级做a爰片久久毛片| 69视频国产| 黄片在线永久| 五月天天天色| 九九九九热精品视频| 99久久亚洲综合精品TS| 久久久久久高潮白浆| 国产成人禁片在线观看|