基于某nios軟核cpu地ucos-ii和lwip移植

基于某nios軟核cpu地ucos-ii和lwip移植

ID:35935862

大?。?11.00 KB

頁數(shù):11頁

時(shí)間:2019-04-25

基于某nios軟核cpu地ucos-ii和lwip移植_第1頁
基于某nios軟核cpu地ucos-ii和lwip移植_第2頁
基于某nios軟核cpu地ucos-ii和lwip移植_第3頁
基于某nios軟核cpu地ucos-ii和lwip移植_第4頁
基于某nios軟核cpu地ucos-ii和lwip移植_第5頁
資源描述:

《基于某nios軟核cpu地ucos-ii和lwip移植》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、實(shí)用標(biāo)準(zhǔn)文案Altera公司推出的Nios軟核CPU是一種可配置的通用精簡指令集計(jì)算RISC(ReducedInstructionSetComputing)嵌入式處理器。它可以與各種外設(shè)相結(jié)合,構(gòu)成一個(gè)定制的可編程片上系統(tǒng)SOPC(SystemonProgramableChip)。嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-II是一個(gè)非常優(yōu)秀的實(shí)時(shí)操作系統(tǒng)RTOS(RealTimeOperatingSystem),其性能已得到廣泛認(rèn)可。uC/OS-II的特點(diǎn)有:公開的源代碼、可移植、可裁剪、可固化、搶占式內(nèi)核。T

2、CP/IP是Interenet的基本協(xié)議。嵌入式設(shè)備  要與Internet網(wǎng)絡(luò)交換信息,就必須支持TCP/IP協(xié)議。盡管uC/OS-II是一個(gè)開放源碼的RTOS,但是目前它的第三方TCP/IP支持都是商業(yè)化的,很少給出源代碼。用戶需要付費(fèi)才能獲得。通過在Nios上移植uC/OS-II和開放源碼的TCP/IP協(xié)議棧-LwIP輕量級網(wǎng)絡(luò)協(xié)議(Light-weightInternetProtocol),就可以實(shí)現(xiàn)uC/OS-II的網(wǎng)絡(luò)功能,并建立一套嵌入式網(wǎng)絡(luò)開發(fā)平臺。該系統(tǒng)模型示于圖1。uC/OS-I

3、I在Nios上的移植  uC/OS-II可以看作是一個(gè)多任務(wù)的調(diào)度器,在這個(gè)任務(wù)調(diào)度器上添加了和多任務(wù)操作系統(tǒng)相關(guān)的一些系統(tǒng)服務(wù),如信號量、郵箱、消息隊(duì)列等。uC/OS-II的設(shè)計(jì)分為與處理器類型無關(guān)的代碼、與處理器類型相關(guān)的代碼和與應(yīng)用程序有關(guān)的配置代碼三部分。這也是uC/OS-II具有良好的可移植性的原因。移植工作主要集中在多任務(wù)切換的實(shí)現(xiàn)上。這部分代碼主要是用來保存和恢復(fù)處理器現(xiàn)場(即相關(guān)寄存器),因此不能用c語言,只能使用特定處理器的匯編語言完成。在Nios上移植uC/OS-II非常簡單,只

4、需修改三個(gè)和Nios體系結(jié)構(gòu)相關(guān)的文件即可。下面分別介紹這三個(gè)文件的移植工作?!  ∥臋n實(shí)用標(biāo)準(zhǔn)文案1.1OS_CPU.H文件  數(shù)據(jù)類型定義這部分的移植是和所用的編譯器相關(guān)的,我們使用的編譯器是nios-elf-gcc。需要定義的數(shù)據(jù)類型包括無符號和有符號的8位、16位和32位整型變量等。  堆棧單位因?yàn)樘幚砥鳜F(xiàn)場的寄存器在任務(wù)切換時(shí)都將被保存在當(dāng)前運(yùn)行任務(wù)的堆棧中,所以O(shè)S_STK數(shù)據(jù)類型應(yīng)該與處理器的寄存器長度一致。typedefunsignedintOS_STK;堆棧增長方向堆棧由高地址向低

5、地址增長,這和選擇的編譯器有關(guān)。#defineOS_STK_GROWTH1宏定義(包括開、關(guān)中斷的宏定義,以及進(jìn)行任務(wù)切換的宏定義)#defineOS_ENTER_CRITICAL()disable_interrupt();#defineOS_EXIT_CRITICAL()enable_interrupt()#defineOS_TASK_SW()OSCtxSw1.2OS_CPU_C.C文件  文檔實(shí)用標(biāo)準(zhǔn)文案該文件必須實(shí)現(xiàn)任務(wù)初始化時(shí)的堆棧設(shè)計(jì),也就是在堆棧增長方向上如何定義每個(gè)需要保存的寄存器的位

6、置。我們將堆棧空間設(shè)計(jì)為按任務(wù)堆??臻g由高至低依次保存寄存器ra、ISTATUS、r1~r31。該文件還需要實(shí)現(xiàn)幾個(gè)操作系統(tǒng)規(guī)定的hook函數(shù)。通常都實(shí)現(xiàn)為空函數(shù)。1.3OS_CPUA.S文件(由匯編語言實(shí)現(xiàn))  (1)OSStartHighRdy()函數(shù)此函數(shù)是在OSStart()多任務(wù)啟動(dòng)后,負(fù)責(zé)從最高優(yōu)先級任務(wù)的TCB控制塊中獲得該任務(wù)的堆棧指針sp,通過sp依次將CPU現(xiàn)場恢復(fù)。這時(shí)系統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務(wù)進(jìn)程,直到該任務(wù)被阻塞或者被其他更高優(yōu)先級的任務(wù)搶占CPU。該函數(shù)僅僅在多任

7、務(wù)啟動(dòng)時(shí)被執(zhí)行一次,用來啟動(dòng)優(yōu)先級最高的任務(wù)執(zhí)行,以后多任務(wù)的調(diào)度和切換就由下面的函數(shù)來實(shí)現(xiàn)?! ?2)OSCtxSw()函數(shù)任務(wù)級的上下文切換。它是當(dāng)任務(wù)因被阻塞而主動(dòng)請求CPU調(diào)度時(shí)被執(zhí)行的。它的工作是先將當(dāng)前任務(wù)的CPU現(xiàn)場保存到該任務(wù)堆棧中,然后獲得最高優(yōu)先級任務(wù)的堆棧指針,從該堆棧中恢復(fù)此任務(wù)的CPU現(xiàn)場,使之繼續(xù)執(zhí)行?! ?3)OSIntCtxSw()函數(shù)中斷級的任務(wù)切換,它是在ISR(中斷服務(wù)例程)中執(zhí)行任務(wù)切換。當(dāng)發(fā)現(xiàn)有高優(yōu)先級任務(wù)就緒,則在中斷退出后并不返回被中斷任務(wù),而是直接調(diào)度

8、就緒的最高優(yōu)先級任務(wù)執(zhí)行。這樣做的目的是能夠盡快地讓高優(yōu)先級的任務(wù)得到響應(yīng),保證系統(tǒng)的實(shí)時(shí)性。它的原理基本上與任務(wù)級的切換相同,但是由于進(jìn)入中斷時(shí)已經(jīng)保存過被中斷任務(wù)的CPU現(xiàn)場,因此這里就不用再保存?! ∥臋n實(shí)用標(biāo)準(zhǔn)文案(4)OSTickISR()函數(shù)時(shí)鐘中斷處理函數(shù)。它的主要任務(wù)是負(fù)責(zé)處理時(shí)鐘中斷,調(diào)用系統(tǒng)實(shí)現(xiàn)的OSTimeTick函數(shù),如果有等待時(shí)鐘信號的高優(yōu)先級任務(wù),則需要在中斷級別上調(diào)度其執(zhí)行。  (5)OS_ENTER_CRITICAL()函數(shù)和OS_EX

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。