《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 實時操作系統μC/OS-II在LPC2114上的移植
實時操作系統μC/OS-II在LPC2114上的移植
廖文良,褚藝斌,陳文薌
廈門大學 機電工程系,福建 廈門361005
摘要: 介紹了實時操作系統μC/OS-II的特點和內核結構,并實現了μC/OS-II在Philips嵌入式處理器LPC2114上的移植。
Abstract:
Key words :

摘   要: 介紹了實時操作系統μC/OS-II的特點和內核結構,并實現了μC/OS-II在Philips嵌入式處理器LPC2114上的移植。
關鍵詞: μC/OS-II  LPC2114  移植

  作為一個實時內核,μC/OS從1992年開始為人們熟悉,到現在已經發展為μC/OS-II。μC/OS-II最多支持56個任務,其內核為占先式,即總是執行就緒態的優先級最高的任務,并支持Semaphore(信號量)、Mailbox(郵箱)、Message Queue(消息隊列)等多種常用的進程間通信機制。與大多數商用RTOS不同的是,μC/OS-II公開其全部源代碼,并可以免費獲得,對商業應用只收取少量的License費用。
  LPC2114是Philips公司開發的一款支持實時仿真和跟蹤的ARM7TDMI-S CPU,并嵌入了128KB的高速Flash存儲器。其內部集成了與片內存儲器控制器接口的ARM7局部總線、與中斷控制器接口的AMBA高性能總線(AHB)和連接片內外設功能的VLSI外設總線(VPB,ARM AMBA總線的兼容超集)。LPC2114將ARM7TDMI-S配置為小端(little-endian)字節順序。128位寬度的存儲器接口和獨特的加速結構使32位代碼能夠在最大時鐘頻率下運行。
  將μC/OS-II移植在LPC2119上不僅有益于ARM和μC/OS-II在車用控制器上的應用,其成果還可以用于其他嵌入式工業控制領域。本次移植中,使用CodeWarrior For ARM Developer Suite v1.2編譯調試環境。
1  μC/OS-II系統結構
  圖1為μC/OS-II的軟硬件體系結構。應用程序處于整個系統的頂層,每個任務都可以認為自己獨占了CPU,因而可以設計成為一個無限循環。μC/OS-II處理器無關的代碼提供了μC/OS-II的系統服務,應用程序可以使用這些API函數進行內存管理、任務間通信以及創建、刪除任務等。

  大部分μC/OS-II代碼是使用ANSI C語言編寫的,因此μC/OS-II的可移植性較好。盡管如此,仍然需要使用C和匯編語言寫一些處理器相關的代碼。μC/OS-II的移植需要滿足下列要求:(1)處理器的C編譯器可以產生可重入代碼。(2)可以使用C調用進入和退出Critical Code(臨界區代碼)。(3)處理器必須支持硬件中斷,并且需要一個定時中斷源。(4)處理器需要能夠容納一定數據的硬件堆棧。(5)處理器需要有能夠在CPU寄存器與內存和堆棧交換數據的指令。
  移植μC/OS-II的主要工作涉及處理器及編譯器相關代碼以及BSP的編寫。
2  μC/OS-II BSP的編寫
  BSP(板級支持包)是介于底層硬件和操作系統之間的軟件層次,它完成系統上電后最初的硬件和軟件初始化,并對底層硬件進行封裝,使得操作系統不再面對具體的硬件。
  為μC/OS-II編寫一個簡單的BSP的方法是:首先設置CPU內部寄存器和系統堆棧,并初始化堆棧指針,建立程序的運行和調用環境;然后使用C語言設置LPC2114向量中斷控制器、GPIO以及SRAM控制器,初始化串口(UART0)作為默認打印口,并向操作系統提供一些硬件相關例程和函數(如dprintf( )),以方便調試;在CPU、板級和程序自身初始化完成后,就可以把CPU的控制權交給操作系統了。
  LPC2114處理器支持七種類型的異常。異常出現后,CPU強制從異常類型對應的固定存儲地址開始執行程序,因此需要在程序頭建立起異常向量表,例如:
 

  向量從上到下依次為復位、未定義指令異常、軟件中斷、預取指令中止、預取數據中止、保留的異常、IRQ和FIQ。保留的異常向量位置所填的數據0xb9205f80是為了使向量表中所有的數據32位累加和為0。這個向量在ARM文件中標識為保留,該位置被Boot裝載程序用作有效的用戶程序關鍵字。當向量表中所有的數據累加為0(且外部硬件禁止進入ISP程序)時,Boot裝載程序將執行用戶程序。
  從異常向量表可知:芯片復位時程序會跳轉到標號Reset處。程序首先調用InitStack初始化各種模式的堆棧,然后調用TargetResetInit對系統進行基本的初始化,最后跳轉到ADS提供的啟動代碼__main。例如:
Reset
  BL InitStack
  BL TargetResetInit
  B__main
  同時在每個硬件時鐘到來后,μC/OS-II會在中斷服務例程中調用OSIntCtxSw( )進行任務調度。另外,當某個任務因等待資源而被掛起時,它可以自己主動放棄CPU,而沒有必要等到自己的時間片全都用完。這可以通過調用一個任務級的任務調度函數OSCtxSw( )來實現,其中相對復雜的是OSIntCtxSw( )。由于OSLickISR( )調用了 OSIntExit( ),OSIntExit( )又再次調用了OSIntCtxSw( ),如果進行任務切換,則二次調用都不會返回,而不同的C編譯器、不同的編譯選項處理C調用時對堆棧的使用也不盡相同。因此OSIntCtxSw( )是與編譯器相關的。在ADS編譯環境下,OSIntCtxSw的軟件流程如圖2所示。

3  μC/OS-II 任務堆棧初始化
  μC/OS-II中每個任務都有自己的任務堆棧。在任務創建初期由OSTaskStkInit( )初始化。初始化堆棧的目的就是模擬一次中斷。任務堆棧中保存了任務代碼的起始地址和一些CPU寄存器(初值是無關緊要的),這樣一旦條件滿足,就可以執行任務了。LPC2114在中斷發生時,會自動保存程序指針PC、狀態寄存器SR以及其他一些信息。圖3為針對LPC2114編程結構設計的堆棧結構。

  本次移植的函數OSTaskStkInt( )代碼為:

4  μC/OS-II系統時鐘管理
  μC/OS-II需要在系統初始化時開始一個系統時鐘節拍,它是OS系統的時間基準。該時鐘節拍一般由時間中斷產生。LPC2114中可產生時鐘節拍的模塊很多,本次移植采用定時器0異常。因為它與外部中斷使用不同的異常向量,便于對異常事件的管理,有利于提高OS的穩定性。32位定時器TC的計數頻率由plck經過PR分頻控制得到,而定時器的啟動/停止、計數復位由TCR控制。當有捕獲事件或比較匹配事件發生時,IR會設置相關的中斷標志,若已打開中斷允許,則會產生中斷。
  本次移植設置系統時鐘頻率為11.0592MHz,代碼在時鐘初始化和每次進入定時器0異常時,將定時器0的計數器PWMTC設置為11.0592M/OS_TICKS_PER_SEC,這樣可使OS每秒鐘產生OS_TICKS_PER_SEC的時鐘節拍。
5  應用方法
  在使用移植后的OS時,用戶需要編寫自己的主程序main( ),其流程圖如圖4。在適當的初始化后即可啟動OS。

  另外,用戶需在TaskStart任務中啟動時鐘節拍,調用OS_StartInit( )函數初始化統計任務,創建所需的其他任務,最后調用OSTaskDel( )函數刪除TaskStart任務。OS在該函數調用結束后,會自動允許異常和中斷,OS正常運轉,不斷調度任務,響應中斷。
參考文獻
1   LABROSSE J J.μC/OS-II:the  Real Time Kernel.RS:R&D
     Books,1999
2   周立功.ARM微控制器基礎與實戰.北京:北京航空航天大學出版社,2003
3   Labrosse J著,邵貝貝譯.嵌入式實時操作系統μC/OS-II(第二版).北京:北京航空航天大學出版社,2003

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          午夜视频一区二区| 欧美日本一区二区三区| 欧美一区二区三区的| 一区视频在线播放| 欧美激情精品久久久久| 今天的高清视频免费播放成人| 国产伦精品一区| 亚洲一区二区免费| 国产一区二区电影在线观看| 国产精品一区二区三区久久久| 欧美亚洲免费| 亚洲精选视频免费看| 亚洲伊人久久综合| 美女999久久久精品视频| 久久国产综合精品| 欧美视频一区二区在线观看| 亚洲欧洲综合另类| 久久久99国产精品免费| 亚洲五月婷婷| 国产欧美精品日韩精品| 亚洲视频专区在线| 欧美午夜一区二区三区免费大片| 国产精品久久二区| 国产自产v一区二区三区c| 久久天天躁狠狠躁夜夜爽蜜月| 日韩亚洲国产精品| 亚洲国产精品久久久| 欧美成人精品在线| 亚洲图片激情小说| 欧美日韩一视频区二区| 一区二区三区产品免费精品久久75| 亚洲性线免费观看视频成熟| 亚洲国产高清aⅴ视频| 欧美精品粉嫩高潮一区二区| 国产精品swag| 欧美噜噜久久久xxx| 久久se精品一区二区| 国产精品实拍| 欧美日韩 国产精品| 中文一区字幕| 91久久在线视频| 欧美午夜精品久久久久久超碰| 亚洲国产福利在线| 亚洲一区二区在线播放| 久久一区二区三区超碰国产精品| 一区二区三区欧美在线观看| 国产精品人人爽人人做我的可爱| 欧美午夜久久久| 国产亚洲高清视频| 狠狠色香婷婷久久亚洲精品| 亚洲第一色中文字幕| 欧美日韩国产探花| 久久福利电影| 国产精品推荐精品| 亚洲一区二区伦理| 999亚洲国产精| 国产毛片精品国产一区二区三区| 亚洲国产精品免费| 国产一区91精品张津瑜| 国产九区一区在线| 亚洲成人在线网站| 亚洲成色777777女色窝| 亚洲国产日韩一级| 亚洲视频在线观看网站| 红桃视频国产精品| 最新69国产成人精品视频免费| 尤物99国产成人精品视频| 一本色道久久综合| 国内成+人亚洲+欧美+综合在线| 久久精品国产亚洲a| 欧美午夜电影在线观看| 先锋资源久久| 好吊视频一区二区三区四区| 欧美一区二区三区啪啪| 国产精品剧情在线亚洲| 先锋影音网一区二区| 日韩午夜高潮| 日韩午夜激情电影| 亚洲精品欧美日韩专区| 欧美丰满高潮xxxx喷水动漫| 农村妇女精品| 久久精品夜色噜噜亚洲aⅴ| 99精品国产在热久久婷婷| 国产精品免费在线| 国产精品初高中精品久久| 久久久久久久久久久久久女国产乱| 欧美日本一道本在线视频| 午夜精品久久久久久久99黑人| 欧美一区二区三区久久精品| 国产日韩视频| 亚洲电影在线免费观看| 影音先锋久久久| 久久精品免费看| 欧美日韩在线播放| 欧美黄色一区| 久久夜精品va视频免费观看| 国产精品电影在线观看| 国产一区二区三区久久精品| 亚洲美女精品一区| 欧美77777| 尤妮丝一区二区裸体视频| 欧美极品在线播放| 亚洲高清视频在线观看| 亚洲国产精品一区| 亚洲欧美成aⅴ人在线观看| 久久亚洲精选| 欧美午夜精品久久久久免费视| 欧美精品久久一区二区| 亚洲黄色小视频| 嫩草伊人久久精品少妇av杨幂| 亚洲精品日本| 欧美日韩午夜| 国产日韩亚洲欧美综合| 久久国产精品亚洲va麻豆| 美女爽到呻吟久久久久| 亚洲美女啪啪| 欧美美女福利视频| 中文在线一区| 亚洲一区二区三区免费在线观看| 欧美一级视频| 亚洲欧美国产制服动漫| 久久伊伊香蕉| 欧美一区二区三区免费大片| 一区二区欧美在线观看| 欧美日韩一区二区三区在线看| 亚洲一区一卡| 国产欧美婷婷中文| 亚洲国产精品久久久久久女王| 国产亚洲综合性久久久影院| 亚洲制服av| 亚洲一级片在线观看| 亚洲第一黄色网| 久久视频在线看| 亚洲一区二区高清视频| 欧美在线亚洲综合一区| 国产精品日韩一区二区| 国产精品久久久久久久久久久久久久| 久久精品男女| 亚洲欧洲日夜超级视频| 夜夜嗨av色一区二区不卡| 韩国女主播一区二区三区| 黄色影院成人| 黄色精品一区二区| 国产日韩欧美精品| 亚洲剧情一区二区| 国产精品国产三级国产普通话蜜臀| 欧美精品久久天天躁| 黄色精品一区二区| 中文亚洲字幕| 欧美精品在线观看一区二区| 国产精品theporn| 欧美日韩国产bt| 久久精品日产第一区二区| 国产精品国产三级国产专区53| 亚洲大胆人体视频| 国产精品日韩一区二区三区| 亚洲欧美激情视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品区免费视频| 亚洲欧洲一区二区在线观看| 香港成人在线视频| 国产综合第一页| 亚洲国产天堂网精品网站| 亚洲视频一二| 欧美日韩综合另类| 亚洲免费观看高清完整版在线观看| 欧美性大战久久久久久久| 一区二区三区日韩欧美精品| 亚洲在线网站| 久久伊人亚洲| 欧美性视频网站| 国产亚洲一级高清| 欧美激情二区三区| 亚洲午夜久久久久久久久电影网| 欧美日韩在线精品一区二区三区| 亚洲综合色激情五月| 国产一区二区三区在线观看网站| 久久久久se| 精品成人在线| 在线播放日韩| 欧美国产一区视频在线观看| 亚洲影视综合| 亚洲美女精品一区| 欧美激情精品久久久久久蜜臀| 国产日韩欧美一区| 国产日韩精品一区二区| 欧美精品在线观看| 亚洲综合国产| 久久精品毛片| 午夜在线电影亚洲一区| 国产欧美一区视频| 亚洲四色影视在线观看| 国产精品黄视频| 欧美视频在线不卡| 99热精品在线观看| 欧美精品一区二区三区在线播放| 亚洲美女中出| 亚洲高清视频中文字幕| 亚洲国产高清视频| 久久精品视频在线观看| 久久视频在线免费观看| 久久精品国产精品| 欧美日韩国产高清视频| 亚洲欧美精品在线观看| 亚洲二区视频| 国产一区二区三区黄| 99国产精品私拍| 蜜桃精品一区二区三区| 欧美成人一区二区三区片免费| 亚洲小视频在线| 午夜精品在线| 亚洲美女黄色片| 国产精品一区二区黑丝| 国产精品日韩一区| 欧美激情欧美激情在线五月| 一区二区三区免费网站| 影音先锋日韩有码| 欧美jizz19hd性欧美| 亚洲视频一区二区免费在线观看| 欧美日产一区二区三区在线观看| 欧美久久一级| 国产精品扒开腿做爽爽爽软件| 欧美激情91| 在线免费观看成人网| 亚洲高清色综合| 午夜精品久久| 91久久精品国产| 欧美午夜寂寞影院| 一区二区三区四区五区在线| 国产一区二区精品丝袜| 欧美日韩一本到| 亚洲三级免费| 亚洲乱码久久| 91久久香蕉国产日韩欧美9色| 欧美伦理a级免费电影| 欧美人交a欧美精品| 欧美日本在线视频| 亚洲影院污污.| 亚洲欧美日韩另类精品一区二区三区| 亚洲午夜三级在线| 影音先锋久久资源网| 亚洲一区欧美| 亚洲国产日韩一区| 午夜视频一区在线观看| 免费观看亚洲视频大全| 欧美成年人网站| 久久免费99精品久久久久久| 亚洲综合成人婷婷小说| 欧美日韩高清免费| 亚洲欧洲日本专区| 夜色激情一区二区| 国产农村妇女精品| 欧美**字幕| 久久漫画官网| 亚洲免费在线视频| 国产精品成人va在线观看| 一区二区三区在线不卡| 亚洲国产精品第一区二区三区| 欧美一级二级三级蜜桃| 欧美三区免费完整视频在线观看| 欧美日韩国产成人| 国产资源精品在线观看| 亚洲人成网站777色婷婷| 欧美顶级艳妇交换群宴| 久久国产精品99久久久久久老狼| 午夜久久美女| 这里只有视频精品| 国内成+人亚洲+欧美+综合在线| 久久精品国产99国产精品澳门| 欧美成人激情视频免费观看| 一区二区三区久久网| 一区二区三区欧美激情| 亚洲伦理久久| 亚洲一区二区三区四区中文| 亚洲精品一区二区三区av| 国产欧美一区二区精品仙草咪| 久久精品一区二区国产| 亚洲一区二区欧美| 一本色道婷婷久久欧美| 欧美日韩免费观看一区二区三区| 欧美精品一区视频| 亚洲欧美精品在线观看| 久久手机精品视频| 日韩午夜精品| 亚洲天堂激情| aaa亚洲精品一二三区| 国产精品ⅴa在线观看h| 国产日韩欧美一区二区三区在线观看| 亚洲视频在线一区观看| 久久综合九色欧美综合狠狠| 免费在线播放第一区高清av| 国产精品入口日韩视频大尺度| 久久久久久亚洲综合影院红桃| 欧美一区二区三区免费视频| 美女国内精品自产拍在线播放| 欧美一区国产二区| 亚洲成在人线av| 亚洲毛片网站| 亚洲深夜影院| 亚洲人屁股眼子交8| 蜜桃av久久久亚洲精品| 狠狠色丁香久久婷婷综合_中| 亚洲日本中文字幕| 欧美日韩日本视频| 国产伦精品一区二区| 国产亚洲精品v| 国产精品免费视频观看| 夜夜嗨av一区二区三区网站四季av| 亚洲观看高清完整版在线观看| 欧美日韩免费观看一区| 女人香蕉久久**毛片精品| 久久久久久久久岛国免费| av成人免费| 一区二区三区在线视频观看| 黄色影院成人| 蜜桃av噜噜一区二区三区| 一区二区欧美日韩视频| 欧美日韩免费一区二区三区| 99riav1国产精品视频| 欧美区国产区| 欧美日韩国产一区二区三区地区| 亚洲欧美一区二区三区极速播放| 国产一区二区三区久久精品| 欧美福利视频在线观看| 欧美日韩综合久久| 宅男在线国产精品| 欧美二区在线| 国产精品一区二区三区免费观看|