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

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

2010-04-12 00:00:00何湘智
現(xiàn)代電子技術(shù) 2010年4期

摘 要:μC/OS-Ⅱ是一種可移植應(yīng)用于多種微處理器的實(shí)時(shí)內(nèi)核,在此基礎(chǔ)上開發(fā)應(yīng)用軟件,可分解多任務(wù)系統(tǒng),簡化應(yīng)用軟件的設(shè)計(jì)。為使某基于μC/OS-Ⅱ開發(fā)的實(shí)時(shí)軟件成功移植到TMS320F2812上,在分析μC/OS-Ⅱ的硬件/軟件結(jié)構(gòu)特點(diǎn)的基礎(chǔ)上,首先對(duì)與TMS320F2812相關(guān)代碼和與應(yīng)用軟件相關(guān)代碼移植問題分別討論研究。最后通過分析TMS320F2812堆棧空間的尋址方式,給出了擴(kuò)展TMS320F2812堆棧空間的兩種方法。實(shí)驗(yàn)證明移植成功。

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

中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:B

文章編號(hào):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 引 言

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

1 TMS320F2812

TMS320F2812(以下簡稱F2812)是TI公司最新一代的2000系列32位定點(diǎn)DSP控制器,支持PWM控制電機(jī),是目前控制領(lǐng)域最先進(jìn)的處理器之一。其頻率高達(dá)150 MHz,可以大大提高控制系統(tǒng)的控制精度和芯片的處理能力[3]。F2812提供浮點(diǎn)數(shù)學(xué)函數(shù)庫,可以實(shí)現(xiàn)浮點(diǎn)運(yùn)算。F2812集成了128 KB的閃存,優(yōu)化的事件管理器和可編程通用計(jì)數(shù)器,還包括了16通道的12 b ADC轉(zhuǎn)換器。片上集成了SCI,SPI,EV,URAT和eCAN等標(biāo)準(zhǔn)通信接口。

2 μC/OS-Ⅱ操作系統(tǒng)

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

圖1為μC/OS-Ⅱ硬件/軟件體系結(jié)構(gòu)圖[6]。

圖1 μC/OS-Ⅱ硬件/軟件體系結(jié)構(gòu)

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

3 與處理器相關(guān)代碼

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

3.1 OSCPU.H文件

OSCPU.H包括了用#defines定義的預(yù)處理器相關(guān)的常量,宏和類型定義。

(1) 與處理器相關(guān)的數(shù)據(jù)類型定義。因?yàn)椴煌奶幚砥饔胁煌淖珠L,所以μC/OS-Ⅱ包括一系列的類型定義以確保其可移植性。對(duì)于F2812而言,所有的整數(shù)類型包括字符型,短整數(shù)和整數(shù)及其對(duì)應(yīng)的無符號(hào)數(shù)類型都用16 b的二進(jìn)制數(shù)表示;長整數(shù)和無符號(hào)的長整數(shù)用32 b的二進(jìn)制數(shù)表示。

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

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

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

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

3.2 OSCPUC.C文件

μC/OS-Ⅱ的移植要求編寫6個(gè)C 函數(shù):OSTaskStkInit(),OSTaskCreateHook(),OSTaskDelHook(),OSTaskSwHook(),OSTaskStatHook(),OSTimeTickHook()。函數(shù)OSTaskStkInit()是惟一必要的,其他5個(gè)函數(shù)必須聲明,但沒必要包含代碼[7]。OSTaskStk In it()是在用戶建立任務(wù)時(shí)系統(tǒng)內(nèi)部自己調(diào)用的,對(duì)用戶任務(wù)的堆棧進(jìn)行初始化,使建立好的進(jìn)入就緒態(tài)任務(wù)的堆棧與系統(tǒng)發(fā)生中斷并且與環(huán)境變量保存完畢時(shí)的堆棧結(jié)構(gòu)一致。

3.3 OSCPUA.ASM

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

(1) OSStartHighRdy():OSStartHighRdy() 在多任務(wù)系統(tǒng)啟動(dòng)函數(shù)OSStart()中調(diào)用。實(shí)現(xiàn)的功能是:設(shè)置系統(tǒng)運(yùn)行標(biāo)志位OSRunning = TRUE,將就緒表中最高優(yōu)先級(jí)任務(wù)的棧指針裝載到SP 中,并強(qiáng)制中斷返回。這樣就緒的最高優(yōu)先級(jí)任務(wù)就如同從中斷里返回到運(yùn)行態(tài)一樣,使得整個(gè)系統(tǒng)得以運(yùn)轉(zhuǎn)。

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

(3) OSIntCtxSw():OSIntCtxSw()完成退出中斷服務(wù)函數(shù)OSIntExit()通過調(diào)用OSIntCtxSw(),在ISR中執(zhí)行任務(wù)切換功能。OSCtxSw()是任務(wù)間的切換,OSIntCtxSw()則是在中斷中發(fā)生的任務(wù)切換。OSIntCtxSw()函數(shù)中的絕大多數(shù)代碼同OSCtxSw()。區(qū)別只是因?yàn)镮SR已經(jīng)保存了CPU的寄存器,而不需要再在OSIntCtxSw()函數(shù)中保存CPU的寄存器[8]。

(4) OSTickISR():OSTickISR()實(shí)現(xiàn)時(shí)間的延時(shí)和期滿功能。該函數(shù)具體內(nèi)容包括:保存寄存器,調(diào)用OSIntEnter(),調(diào)OSTimeTick(),調(diào)用OSIntExit(),恢復(fù)寄存器,中斷返回。

4 與應(yīng)用相關(guān)代碼

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

5 用戶代碼

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

6 結(jié) 語

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

參考文獻(xiàn)

[1]王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)[M].北京:清華大學(xué)出版社,2002.

[2]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.

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

[4]王奕.基于μC/OS-Ⅱ的無人直升機(jī)飛行控制系統(tǒng)軟件設(shè)計(jì)[D].南京:南京航空航天大學(xué),2008.

[5]魏洪興,周亦敏.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)實(shí)驗(yàn)教材[M].北京:清華大學(xué)出版社,2005.

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

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

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

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

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

主站蜘蛛池模板: 中文字幕久久波多野结衣| 欧美一区福利| 2019国产在线| 91色国产在线| 国产成人精品综合| 狠狠色丁婷婷综合久久| 亚洲第一成人在线| 欧洲精品视频在线观看| 色亚洲成人| 男女男精品视频| 免费一级毛片| 亚洲第一综合天堂另类专| 精品视频91| 亚洲精品无码人妻无码| 久久人人爽人人爽人人片aV东京热| 福利在线免费视频| 午夜性爽视频男人的天堂| 91青青在线视频| 国产h视频在线观看视频| 狠狠v日韩v欧美v| 青青青视频蜜桃一区二区| 日韩高清无码免费| 欧美一级夜夜爽www| 先锋资源久久| 国产精品对白刺激| 一级香蕉人体视频| 国产午夜无码片在线观看网站| 无码精油按摩潮喷在线播放| 午夜精品久久久久久久无码软件 | 亚洲美女一区二区三区| 国产在线小视频| 日本a级免费| 国产精品免费电影| 日韩欧美成人高清在线观看| 国产麻豆va精品视频| 91精品久久久无码中文字幕vr| 亚洲系列中文字幕一区二区| 亚洲综合一区国产精品| 欧美一级高清片欧美国产欧美| 亚洲手机在线| 欧美午夜久久| 国产精品一区二区国产主播| 国产综合网站| 国产一级精品毛片基地| 亚洲视频色图| 四虎影视无码永久免费观看| 2021国产精品自产拍在线| 国产精品福利一区二区久久| 男人的天堂久久精品激情| 综合社区亚洲熟妇p| 色哟哟国产精品| 久久6免费视频| 国产一级裸网站| 精品国产免费第一区二区三区日韩| 国产三级国产精品国产普男人 | 国产欧美日韩另类精彩视频| 国产xx在线观看| 国产在线观看第二页| 国产成人亚洲日韩欧美电影| 亚洲视屏在线观看| 91欧美亚洲国产五月天| 中文字幕va| 亚洲AⅤ波多系列中文字幕| 天天综合天天综合| 日本一区中文字幕最新在线| 日韩av无码精品专区| 一区二区三区高清视频国产女人| 欧美97色| 综合亚洲网| 国产视频自拍一区| 在线免费不卡视频| 久久毛片免费基地| 中文一级毛片| 国产网站一区二区三区| 无码中文字幕乱码免费2| 中文字幕色在线| 亚洲侵犯无码网址在线观看| 亚洲久悠悠色悠在线播放| 国产精品美女免费视频大全| 乱系列中文字幕在线视频| 男女猛烈无遮挡午夜视频| 国产成人精品在线|