uCOS-II在ADSP—BF531上的移植_第1頁
uCOS-II在ADSP—BF531上的移植_第2頁
uCOS-II在ADSP—BF531上的移植_第3頁
uCOS-II在ADSP—BF531上的移植_第4頁
uCOS-II在ADSP—BF531上的移植_第5頁
已閱讀5頁,還剩5頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、    uC/OS-II在ADSPBF531上的移植摘要:介紹源代碼公開的實時操作系統COS-II的特點、內核結構及ADSPBF53l的硬件特征,同時給出將C0S-II移植到ADSP-BF531型數字信號處理器上的詳細步驟和關鍵代碼。 關鍵詞:RTOS;COS-II;ADSP-BF53l;移植引言隨著計算機技術的發展,嵌入式系統的應用愈來愈廣泛,對人們的生活產生了巨大的影響。通常,嵌入式系統的軟件部分都應用了實時操作系統(簡稱RTOS),在特定的RTOS之上開發應用軟件,可以讓程序開發人員屏蔽  摘要:介紹源代碼公開的實時操作系統CO

2、S-II的特點、內核結構及ADSPBF53l的硬件特征,同時給出將C0S-II移植到ADSP-BF531型數字信號處理器上的詳細步驟和關鍵代碼。   關鍵詞:RTOS;COS-II;ADSP-BF53l;移植引言隨著計算機技術的發展,嵌入式系統的應用愈來愈廣泛,對人們的生活產生了巨大的影響。通常,嵌入式系統的軟件部分都應用了實時操作系統(簡稱RTOS),在特定的RTOS之上開發應用軟件,可以讓程序開發人員屏蔽掉許多底層硬件細節,提高軟件功能設計效率,簡化開發難度,同時使得程序調試方便,移植簡單,易維護,大大縮短開發周期,RTOS也因此越來越受到嵌入式系統開發人員的

3、青睞。目前實時操作系統很多,如VxWorks、Windows CE、pSOS等,但這些軟件的價格和使用成本(版權費、維護費等)都十分昂貴,因此商業級RTOS軟件在使用上受到諸多的限制。而COS-II則不同,它的源代碼是全部公開的,并且完全免費,是一個自由操作系統,程序開發人員可以改寫其中的源代碼使之符合自己的要求。由于其極強的可移植性和可裁減性,用戶可以根據自己的需要,裁剪掉不需要的部分,使操作系統變得小巧靈活,同時又能夠滿足用戶特定操作系統的需要。COS-II的可靠性完全可以與商業級RTOS軟件相媲美,因此筆者在移植過程中選用了這一實時操作系統。1 ADSPBF531的硬件特征Blackfi

4、n系列中的ADSPBF531型數字信號處理器是由ADl和Intel公司合作,針對音頻和視頻信號的編解碼、手持設備和移動通信設備而研發的16位定點處理器,是建立在微信號架構基礎之上,集高性能數字信號處理器與微控制器于一身。ADSP-BF53l的內核工作頻率最高可達400MHz,處理器內核中包含2個16位MAC、2個40位ALU及4個8位ALU。專門用于視頻信號的處理;還集成了許多片上外設,包括硬件UART、SPI接口、PPI接口、同步串口、看門狗電路、16個GPIO接口等。為了達到降低功耗的目的,該處理器具有多種工作模式,同時通過編程還可以動態改變處理器內核的工作頻率和電壓這些特性都為手持設備提

5、供了絕佳的選擇。用戶可以利用ADI公司提供的VisualDSP+3.0(或更高版本)集成開發環境對處理器進行編程、調試和開發。2 實時操作系統介紹COS-II是一種專門為微處理器設計的占先式實時多任務操作系統,具有源代碼公開、可移植性和可裁減性強、代碼可固化、穩定性和可靠性高等特點。其內核主要提供任務管理、內存管理、時間管理等服務,系統最多可以支持64個任務(8個留于系統),每個任務均有自己獨立的優先級。由于內核為占先式的,因此總是運行優先級最高的任務。系統提供了豐富的函數可供調用,實現任務間的通信和切換。OS-II的大部分代碼都是使用標準的A-NIS C編寫的只有與處理器相關的一部分代碼使用

6、匯編語言因此具有極強的移植性,在大多數8位、16位和32位處理器上都能穩定的運行。圖1示出COS-II的軟硬件體系結構。從圖中可以看出,要實現COS-II的移植,必須為其編寫OS_CPU.H、0S_CPU_CC和OS_CPU_A.ASM 3個文件,這3個文件都與處理器的硬件特性相關,提供任務切換和系統時鐘功能。其余源文件的代碼都是公開的,可以直接從COS-II的官方網站下載。3對編譯器的要求雖然COS-II具有很強的移植性,但在移植時,對處理器的編譯器有如下幾點要求:處理器的C編譯器能夠產生可重人代碼;用C語言可以打開和關閉中斷;處理器支持中斷,并且能夠產生定時中斷;處理器能夠容納一定量數據的

7、硬件堆棧;處理器有將堆棧指針和其他CPU寄存器讀出和存儲到堆棧空間或內存中的指令。ADSP-BF531型處理器的集成開發環境Visu-al+3.0通過關鍵字asm能在C代碼中嵌入匯編語言,同時內核定時器可以為系統提供定時中斷,總數量達20kbyte的片上數據RAM和SP、FP、USP 3個堆棧指針寄存器為操作系統各任務提供了豐富的硬件堆棧空間及對堆棧的方便操作。筆者正是在這些基礎上利用Visual+3.0編譯環境成功地完成了對ADSP-BF531處理器的COS-II移植。4 移植JLCOS-II4.1重定義OS_CPIJH文件4.1.1與編譯器相關的數據類型不同的處理器有不同的字長,COS-I

8、I不使用C的short、int、long等與編譯器相關的數據類型,而是重新定義了一系列類型以確保系統的可移植性,在系統移植時必須在OS_CPUH頭文件中對這些數據類型重新定義,具體內容如下:typedef unsigned char BOOLEANtypedef unsigned char INT8Utypedef signed char INT8Stypedef unsigned short INTl6Utypedef signed short INTl6Stypedef unsigned int INT32Utypedef signed int INT32SCOS-II中的指針根據處理器堆

9、棧數據入口寬度定義為OS_STK類型:typedef unsigned int OS_STK4.1.2臨界代碼RTOS在進入系統臨界區之前都必須先關中斷,退出后再開中斷,COS-II定義了2個宏指令來關閉打開中斷:#define OS_ENTER_CRITICAL0asm(“cliO:”:”=d”(InterrupLach)#define OS_EXIT_CRITICAL()asm(“sti0:”:”=d”(InterrupLaeh)其中InterrupLaeh為一全局變量,用于開關中斷時IMASK寄存器內容的恢復和保存。4.1.3堆棧增長方向設定在OS CPUH頭文件中還必須根據處理器堆棧的

10、增長方向對OS_STK_GROWTH進行宏定義,由于ADSP-BF531是按照由高地址到低地址的結構組織處理器堆棧,因此宏定義如下:#define OS_STK_GROWTH 14.1.4 OS_TASK_SW0宏定義OS_TASK_SW0在COS-II從低優先級任務切換到高優先級任務時被調用,定義如下:#define OS_TASK_sw() asm(“raise 13;”)4.2編寫OS_CPU_CC文件COS-lI的移植要求用戶在OS_CPU_CC文件中編寫6個簡單的C函數,其中主要是完成OS-TaskStkInit (),其余5個函數可以不作處理。OS-TaskStkInit()負責任

11、務堆棧的初始化,使得任務堆棧看起來就像剛發生過中斷并將所有的寄存器保存到堆棧中的情形一樣。不同的編譯器在函數調用時有不同的入棧方法,因此在具體實現時必須根據處理器的編譯環境進行調整。VisualDSP+3.0在函數調用時的堆棧結構如圖2所示。OSTaskStkInit()調用時需要傳遞任務代碼起始地址(task)、用戶參數指針(pdata)、任務堆棧頂端的地址(堆棧棧頂指針ptos)、返回參數為新任務堆棧棧頂指針,函數原型如下:void OSTaskStkInit()OS_STK*stk;stk=(void *)ptos;opt=opt;*stk-=fINT32U)pdata;用戶數據區*st

12、k-=fINT32U)(task);RETI寄存器*stk-=fINT32U)ptos;FP寄存器(由于需要入棧的寄存器數量比較多,限于篇幅,在此省略其中多數)*stk-=fINT32U)0; SEQSq、AT寄存器*stk-=fINT32U)0;ASTAT寄存器retum(void*)stk);任務建立時調用該函數對新建任務的堆棧進行初始化,初始化后的堆棧結構如圖3所示。4.3編寫OS_CPU_AASM文件COS-II移植的最后還需要用戶編寫4個重要的匯編函數,包括OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()及OSTickISR()。分別介紹如下:4.3.1

13、 OSStartltighRdy()函數該函數由OSStart()調用,用以運行優先級最高的就緒任務,其運行過程:調用用戶定義的OS-TaskSwHook()數獲取任務堆棧指針置位全局變量0SRunning 出棧CPU寄存器 中斷返回。在ADSP-BF531中的實現如下:_OSStartHighRdy:call_OSTaskSwHook;p0.1=_OSTCBHighRdy;p0.h=_0STCBHighRdy;pl=p0;ssync;sp=p1;p0.1=_OSRunning;p0.h=_OSRunning;r0=TRUE;p0=r0;ASTAT=sp+;SEQSTAT=sp+;FP =sp

14、+;RETI=sp+;rti;4.3.2 OSCtxSw()函數實時操作系統內任務級的切換是通過處理器的軟中斷實現的,并且軟中斷服務例程的向量地址必須指向OSCtxSw()函數,因此該函數的匯編程序代碼如下:_OSCtxSw:-sp=RETI;-sp=FP;-sp=SEQTAT;-sp=ASTAT;p0.1=_OSTCBCur;p0.h=_OSTCBCur;pl=p0;ssync;pl=sp;call_OSTaskSwHook;p0.1 =_OSPrioHighRdy;p0.h=_OSPrioHighRdy;r0=p0;p0.1=_0SPrioCur;p0.h=_OSPrioCur;p0=r0

15、;p0.1=_OSTCBHighRdy;p0.h=_OSTCBHighRdy;pl=p0;rO=p0;ssync;sp=p1;p0.1=_OSTCBCur;p0.h=_OSTCBCur;p0:r0; 、ASTAT=sp+;SEQSTAT=sp+;FP:SP+;RETI=sp+;rti;4.3.3 OSIntCtxSw()函數OSIntCtxSw()用于實現中斷級任務切換,由于該函數在中斷服務程序中調用,因此在函數代碼中不需要寄存器入棧,但堆棧結構中還包含了一些用戶不需要的函數調用返回地址,因此該函數必須在最初清理堆棧(調整堆棧指針的位置),其匯編程序代碼如下:_OSIntCtxSw:p0=20

16、;sp=sp+p0;p0.1=_OSTCBCur;p0.h=_OSTCBCur;pl=p0;ssync;p1=sp;call_OSTaskSwHook;p0.1=_OSPrioHighRdy;p0.h=_OSPrioHighRdy;r0=p0;p0.1=_OSPrioCur;p0.h=_OSPfioCur;po=10;p0.1=_OSTCBHighRdy;p0.h=_OSTCBHighRdy;pl=p0;r0=p0;ssync;sp=p1;p0.1=_OSTCBCur;p0.h=_0STCBCur;po】=r0;ASTAT=sp+;SEQSTAT=sp+;FP =sp+;RETI=sp+;rt

17、i;4.3.4 OSTicklSR()函數,COS-II要求用戶提供一個時鐘資源來實現時間的延時和期滿功能。筆者在移植過程中使用內核定時器產生時鐘節拍,并通過定時器中斷服務例程OSTickISR0實現任務切換等功能,該函數的匯編程序代碼如下:_OSTicklSR:-sp】=RETI;-sp=FP;-sp=SEQTAT;-sp=ASTAT;call_OSIntEnter;call_OSTimeTick;call_OSIntExit;ASTAT=sp+;SEQSTAT=sp+;FP =sp+;RETI=sp+;rti;4.4程序下載及調試完成以上文件的修改和編寫之后。就可在Vi-sualDSP+3

18、0環境中對所有的源文件進行編譯和連接,生成處理器可執行的dxe文件,通過JTAG直接下載到處理器內核的程序區運行。由于VisualD-SP+30提供了強大的調試功能,用戶能夠很清楚地了解COS-II在處理器內的運行情況,這無疑也對COS-向ADSPBF531移植提供了強大的支持。5 結束語詳細介紹了向ADSPBF531型處理器移植COS-II實時操作系統的步驟和與處理器相關函數的代碼編寫,并成功地進行移植。通過測試,實時操作系統各任務之間的調用、中斷處理、任務之間的通信等都能夠穩定的運行。COS-II實時操作系統的使用。將程序員從冗繁的流程圖中解放出來,使得應用程序的設計過程大大簡化,并且程序的可讀性、擴展性、可靠性也得到了很大的改善。  -關于C/OS-II系列軟件版權的說明Micrium 公司產品包括C/OS-II,C/GUI,uC/FS,C/TCP-IP,C/USB等。Micrium 公司提供嵌入式系統應用方面的產品,并對其軟件擁有知識產權。Micrium花費了大量的時間和財力為嵌入式領域提供高質量的軟件產品。所有上述產品都以源代碼的形式提供給客戶,具有極大的適用性。產品不是免費軟件,也不是開放源碼的軟件,因此,不能免費使用,需要清楚的闡明C/OS-II和系列的軟件不是開放源

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論