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í)際測(cè)試,各個(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ī)測(cè)量與控制,2009(17):237-239.

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

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

主站蜘蛛池模板: 黄色污网站在线观看| 一区二区欧美日韩高清免费 | 日本午夜精品一本在线观看| 国产区在线观看视频| 午夜无码一区二区三区| 大乳丰满人妻中文字幕日本| 手机在线免费不卡一区二| 亚洲欧美成人综合| 夜夜高潮夜夜爽国产伦精品| 欧美精品导航| 欧美在线视频a| 欧美一级在线播放| 亚洲高清在线天堂精品| 免费国产高清精品一区在线| 在线精品亚洲国产| 亚洲成年人网| 国产精品视频a| 精品国产Av电影无码久久久| 久久久国产精品无码专区| 无码一区中文字幕| www亚洲精品| 成人精品免费视频| 亚洲精品在线影院| 婷婷午夜影院| 秋霞一区二区三区| 久久精品人妻中文系列| 亚洲精品午夜无码电影网| 亚洲天堂色色人体| 18禁黄无遮挡网站| 拍国产真实乱人偷精品| 沈阳少妇高潮在线| 成人精品视频一区二区在线| 国产成年无码AⅤ片在线| 免费人成视网站在线不卡| 一级全免费视频播放| 九一九色国产| 中文字幕乱码中文乱码51精品| 无码专区第一页| www.youjizz.com久久| 久久久久亚洲精品成人网| 黄色网站在线观看无码| 高清无码手机在线观看| 免费看a毛片| 精品无码国产自产野外拍在线| 高清视频一区| 免费一级全黄少妇性色生活片| 国产美女主播一级成人毛片| 亚洲香蕉伊综合在人在线| 亚洲国内精品自在自线官| 亚洲欧美一区二区三区图片| 日本不卡视频在线| 国产欧美精品专区一区二区| 精品福利网| 国产精品国产三级国产专业不 | 成人午夜视频在线| 精品夜恋影院亚洲欧洲| 亚洲一区二区三区中文字幕5566| 先锋资源久久| 成人蜜桃网| 亚洲嫩模喷白浆| 亚洲男人的天堂视频| www.精品视频| 欧美啪啪一区| 国产一区成人| 中文字幕第1页在线播| a免费毛片在线播放| 天天色天天综合| 凹凸国产分类在线观看| 国产精品视频白浆免费视频| 18禁不卡免费网站| 欧美亚洲综合免费精品高清在线观看 | 91久久精品国产| 国产在线视频导航| 在线观看91精品国产剧情免费| 国产呦视频免费视频在线观看 | 国产精品永久在线| 超清无码一区二区三区| 97超碰精品成人国产| 欧美黄网在线| 九九这里只有精品视频| 久久这里只有精品23| 91精品情国产情侣高潮对白蜜|