新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > μC/OS-Ⅱ在ARM單片機S3C44B0x上的移植

μC/OS-Ⅱ在ARM單片機S3C44B0x上的移植

作者: 時間:2014-10-31 來源:電子產(chǎn)品世界 收藏

  在這些函數(shù)中惟一必須需要編寫的函數(shù)是OSTa-skStkInit(),其他9個函數(shù)必須要聲明,但不一定要包含任何代碼。 OSTaskCreate()和OSTaskCreateExt()通過調(diào)用OSTaskStkInit()函數(shù)來初始化任務的堆棧結構,因此,堆??雌饋砭拖駝偘l(fā)生過中斷,并將所有的寄存器都保存到堆棧中的情形一樣。OSTaskStkInit()的程序代碼如下:

本文引用地址:http://butianyuan.cn/article/264710.htm

  

5.jpg

 

  (3)移植OS_CPU_A.ASM文件

  在移植OS_CPU_A.ASM文件時,要求用戶編寫4個簡單的匯編語言函數(shù),它們分別是:OS-StartHighRdy(),OSCtxSw(),OSIntCtxSw(),OS-TickISR()。

  ①OSStartHighRdy():運行最高優(yōu)先級的就緒任務。此函數(shù)僅在多任務啟動時執(zhí)行一次,用來啟動第1個(也就是最高優(yōu)先級)任務運行。它的程序代碼如下:

  

6.jpg

 

  ②OSCtxSw():任務級任務切換函數(shù)。實現(xiàn)CPU在正常運行時任務間的切換,完成對當前任務堆棧的保存和對最高優(yōu)先級任務堆棧的彈出,使最高優(yōu)先級的任務得到運行。

 ?、跲SIntCtxSw():中斷級的任務切換函數(shù)。在中斷服務程序執(zhí)行完后,如果中斷使得更高優(yōu)先級的任務處于就緒狀態(tài),則該函數(shù)實現(xiàn)對任務的切換:保存中斷發(fā)生之前的那個任務的執(zhí)行現(xiàn)場.恢復已處于就緒態(tài)的那個更高優(yōu)先級任務的執(zhí)行現(xiàn)場,使優(yōu)先級更高的那個任務得以運行,從而完成對任務的切換。

 ?、躉STickISR():是系統(tǒng)時鐘的中斷服務函數(shù)。該函數(shù)的主要功能是檢查是否有由于延時而被掛起的任務轉為就緒態(tài)。如果有,則調(diào)用OSIntCtxSw()函數(shù)進行任務切換,使已處于就緒態(tài)的且具有最高優(yōu)先級的任務運行。

  4 測試移植代碼

  為移植好μC/OS-Ⅱ后,緊接著的工作就是驗證移植好的μC/OS-II是否能正常工作。在這里采用不加任何應用程序代碼的方法測試移植好的μC/OS-Ⅱ,這樣做有兩個優(yōu)點:使測試移植代碼的工作變得更簡單;如果有部分,μC/OS-II代碼不能正常工作,可以明白是被移植代碼本身的問題,而不是應用代碼產(chǎn)生的問題。通過四個步驟來完成對移植代碼的測試:確保C編譯器、匯編編譯器及鏈接器正常工作;驗證 OSTaskStkInit()和OSStartHighRdy()函數(shù);驗證OSCtxSw()函數(shù);驗證OSIntCtxSw()和OSTick- ISR()函數(shù)。經(jīng)測試,以上四個測試過程均能正常通過,表明被移植到系列單片機中的μC/OS-Ⅱ操作系統(tǒng)已經(jīng)能正常工作了。

  5 結束語

  μC/OS-II是一種可配置、可裁剪的嵌入式實時操作系統(tǒng),現(xiàn)已被廣泛的移植應用到多種處理器當中。這里成功地將μC/OS-Ⅱ移植到了系列單片機中,經(jīng)測試,移植好的μC/OS-Ⅱ代碼能正常的在S3C44B0x處理器中穩(wěn)定運行。

c語言相關文章:c語言教程



上一頁 1 2 下一頁

關鍵詞: ARM S3C44B0x μC/OS-Ⅱ

評論


相關推薦

技術專區(qū)

關閉