999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

μC/OS-II系統的移植分析與應用

2013-12-10 14:07:12西安翻譯學院湯宏萍薛根福
電子世界 2013年4期
關鍵詞:嵌入式系統

西安翻譯學院 湯宏萍 薛根福

1.引言

嵌入式系統[1]主要由嵌入式處理器、相關支撐硬件、嵌入式操作系統及應用軟件系統等組成。嵌入式操作系統作為嵌入式系統的核心組成部分,必須具備良好的可移植性才能滿足嵌入式系統的多樣化需求。μC/OSII[1]是用ANSI的C語言編寫的,它是一個完整的、可移植、可固化、可裁剪的占先式實時多任務內核操作系統。至今,從8位到64位,μC/OS-II已經在各種不同架構的微處理器上運行,目前市場上已經有許多應用μC/OS-II的嵌入式產品,因此研究μC/OS-III操作系統及其移植技術很有價值。文章首先對μC/OS-II操作系統的移植可行性進行分析,然后結合基于ARM體系LPC2294處理器的EASYARM開發板闡述了μC/OS-II系統移植的一般過程,最后對μC/OS-II系統的移植進行了測試。

2. C/OS-II操作系統移植的可行性分析

2.1 μC/OS-II操作系統移植的條件

要使μC/OS-II正常運行,處理器必須需滿足以下要求[2]:

①處理器的C編譯器能產生可重入代碼;

②用C語言可以開/關中斷;

③處理器支持中斷,并且能夠產生定時中斷;

④處理器能夠支持容納一定量數據的硬件堆棧;

⑤處理器有將堆棧指針和其他寄存器讀出和存儲到堆棧或內存中的指令。

在采用μC/OS-II系統的移植中,作者采用ARM LPC2294[3]微控制器,該微控制器可以滿足上述②、④、⑤條件,而ADS1.2的C編譯器可以滿足①、③的要求。

2.2 μC/OS-II操作系統軟件的體系結構是移植的基礎

所謂移植[2],就是使一個實時內核能在微處理器或微控制器上運行。在設計之初,μC/OS-II就考慮到嵌入式系統硬件平臺的多樣性和操作系統的可移植性問題,大部分代碼采用C語言開發,只有部分與處理器硬件相關的代碼采用匯編語言編寫,而且整個系統采用模塊化設計,將不同功能的軟件分成不同的組件,分別位于系統的不同層次。這種可復用的層次結構是實現μC/OS-II可配置性、可移植性、兼容性以及可擴展性的基礎,μC/OS-II系統軟件的體系結構如圖1所示[2]。

在圖1中,包含以下三個部分:

核心部分:該部分代碼與處理器的類型無關,包含了1個頭文件和7個用C語言編寫的源文件。主要功能是內核管理、事件管理、消息隊列管理、存儲管理、消息管理、信號量處理、任務調度和定時管理。

配置文件部分:主要功能是配置事件控制塊數目和是否包含消息管理的相關代碼。

移植代碼部分:這部分是與處理器相關的代碼,包含一個頭文件、一個匯編源碼文件和一個C源碼文件。

3. C/OS-II操作系統移植應用

3.1 μC/OS-II移植的硬件資源

在移植系統之前,首先必須了解目標系統的硬件資源,根據目標系統特定的硬件資源完成系統移植。應用中的目標系統采用EASYARM2200開發板,它屬于ARM體系結構,主要硬件資源如下:

處理器:ARM體系16/32位嵌入式處理器LPC2294;

內存:16KB RAM,256KB Flash;

外圍設備控制器:CAN口、RS-232串行口、以太網控制器RTL8019;

調試接口:ARM-ICE JTAG。

3.2 移植具體步驟

與處理器相關代碼是移植過程中最關鍵的部分,內核將應用系統和底層硬件有機的結合成一個實時系統。要使同一個內核能適用于不同的硬件體系,就需要在內核和硬件之間有一個中間層,這就是與處理器相關的代碼,處理器不同,這部分代碼也不同。在μC/OS-II中,這部分代碼分成3個文件:OS_CPU.H,OS_CPU_A.ASM,OS_CPU.C。

(1)OS_CPU.H包括用#define定義的與處理器相關的常量、宏和類型定義。依據LPC2294所支持的數據類型定義相關常量,定義棧增長的方向為1,即從高地址往低地址遞減生長;開關中斷這里采用的是定義的函數OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL();定義用系統的軟中斷OS-TASKSW()進行任務切換。

(2)OS_CPU_A.ASM這部分需要對處理器的寄存器進行操作,所以必須由匯編語言來編寫,主要編寫4個函數OSStartHighRdy(0,OSCtxSw(),OSIntCtxSw(0,OSTickISR()。

OSStartHighRdy()功能:通過設置系統運行標志位OSRunning=TRUE,將就緒表中最高優先級任務的棧指針裝載到SP中,并強制中斷返回。

OSCtxSw()功能:通過先前在OS_CPU.H中定義的軟中斷指令進行任務級切換。中斷服務子程序、陷阱、異常處理的向量地址必須指向OSCtxSw()

圖1 C/OS-II系統軟件的體系結構

OSIntCtxSw()功能:實現中斷級任務切換。與OSCtxSw()函數類似,只是少了一些保存某些寄存器的工作。

OSTickISR()是系統時鐘節拍中斷服務函數。這是一個周期性中斷,為內核提供時鐘節拍,頻率越高,負擔越重。必須是在調用OSStart()之后啟動時鐘節拍中斷。

(3)OS_CPU.C這部分定義了6個函數。其中最重要的是OSTaskStkInit(),它是用戶建立任務時系統內部自己調用的,對用戶任務的堆棧進行初始化,使建立好的進入就緒態任務的堆棧與系統發生中斷并且與環境變量保存完畢時的堆棧結構一致。其余函數必須聲明,但可以不包含任何代碼,這些函數可以作為內核函數的補充。為了使程序執行效率高,在本次移植中OSTaskStkInit()是用匯編編寫的。

4.測試移植代碼[2]

完成將μC/OS-II移植到處理器上后,下一步工作就是驗證移植后μC/OS-II操作系統是否正常工作,這也是移植中最復雜的一步。測試分為2種情況:首先不加任何應用代碼來測試移植好μC/OS-II,即首先測試內核自身的運行狀況。這樣做有兩個好處:首先,用戶不希望將事情復雜化;其次,如果有些部分沒有正常工作,可以明白是移植本身的問題,而不是應用代碼產生的問題。如果已經將2個基本的任務和節拍中斷運行起來,那么接下來的添加應用任務是非常簡單的。其次是建立基于信號量進行通信的幾個任務,在此基礎上驗證內核的多任務調度是否正確,從而驗證系統移植成功與否。本文通過4個步驟測試移植代碼:

(1)確保C編譯器、匯編編譯器及鏈接器正常工作

當修改完需要根據CPU更改的文件后,緊接著要把這些文件和μC/OS-II中與處理器無關的文件一同編譯和鏈接。顯然,這個步驟取決于使用的編譯器。測試需要用到3個文件:TEST.C、INCLUDES.H、OS-CFG.H。TEST.C程序如下:

(2)驗證OSTaskStkInit()和OSStart-HighRdy()函數

首先,修改OS-CFG.H,設置OS-TASKSTAT-EN為0,以禁止統計任務。在TEST.C里并沒有添加任何應用任務,所以惟一的任務是UC/OS-II的空閑任務OS-TaskIdle()。一直單步執行,直到UC/OS-II運行到調用OSStartHighRdy()。這時,編譯器應該切換到匯編模式下,因為OSStartHighRdy()是用匯編語言實現的。OSStartHighRdy()會開始運行第一個任務;而此時并沒有任何應用任務,只有OS-TaskIdle()可以運行。繼續單步執行,同時檢查是否出錯。實際上,OSStartHighRdy()會將OSTaskStkInit()推入堆棧的CPU寄存器,并按照相反的方向順序彈出。如果這一點不正確,堆棧指針就會出錯。這時應該校正OSTaskStkInit()函數。OSStartHighRdy()的最后一條語句會從中斷中返回。一旦執行這條語句,調試器就應該指向OS-TaskIdle()的第一條指令。如果這一步沒有發生,那么可能是因為沒有將正確的任務起始指針放在任務堆棧中,這時也需要修改OSTaskStkInit()函數。如果調試器在OSTaskStkInit()的循環中執行,且在無限循環中已經執行幾次,那么就驗證了OSTaskStkInit()和OSStartHighRdy()是正確的。

(3)驗證OSCtxSw()函數

在這一步的測試中,添加了一個應用程序,并不斷切換到空閑任務。

可以單步執行進入OSTimeDly()函數。當調用OSTimeDly(1)時,會發生任務切換。如果OSTimeDly()代碼正確,LED會快速閃爍。

(4)驗證OSIntCtxSw()函數和OSTick-ISR()函數。

5.結束語

嵌入式系統是一個軟硬件集合體,而作為嵌入式系統的核心組件嵌入式操作系統必須具備良好的可移植性以適應各種不同處理器體系結構的嵌入式應用需求。本文成功地將嵌入式操作系統μC/OS-II移植到了LPC2294上,并詳細闡述了μC/OS-II的系統移植的一般過程,為嵌入式開發者提供參考。

[1]唐恒娟等.eCos系統移植分析與應用[J].微電子學與計算機,2006,23(3).

[2]Jean J.Labrosse.邵貝貝.嵌入式實時操作系統μCOS-Ⅱ[M].北京:北京航空航天大學出版社,2003:72-115.

[3]周立功.ARM嵌入式系統基礎教程[M].北京航空航天大學出版社,2005.

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 中文字幕在线欧美| 精品乱码久久久久久久| 麻豆精品视频在线原创| 国产精品密蕾丝视频| 99热最新在线| 国产精品国产三级国产专业不| 国产精品福利尤物youwu| 日韩免费毛片视频| 色综合天天综合| 久久这里只有精品国产99| 国产午夜看片| 免费福利视频网站| 亚洲福利一区二区三区| 亚洲精品国产精品乱码不卞| 老色鬼久久亚洲AV综合| 成人精品午夜福利在线播放| 女人18毛片久久| 天堂网亚洲系列亚洲系列| 无码国产伊人| 一区二区理伦视频| 亚洲男人天堂久久| 久久综合色视频| 欧美日韩久久综合| 内射人妻无码色AV天堂| 97在线免费| 老司机精品99在线播放| 久久99精品国产麻豆宅宅| 久久无码高潮喷水| 一级全黄毛片| 蜜桃臀无码内射一区二区三区 | 色悠久久综合| 美女内射视频WWW网站午夜| 天堂成人在线| 在线观看国产网址你懂的| 午夜限制老子影院888| 亚洲三级色| 在线观看无码av免费不卡网站 | 久草视频福利在线观看| 成人在线观看一区| 国产午夜精品一区二区三区软件| 久久久久久尹人网香蕉| 日韩精品成人在线| 青青青国产视频手机| 国产欧美日韩免费| 欧美精品一二三区| 伊人91在线| 国产福利在线免费| 亚洲成人网在线观看| 嫩草在线视频| 欧美黑人欧美精品刺激| 国产三级毛片| 麻豆国产在线观看一区二区| 国产成人高清精品免费| 国产国模一区二区三区四区| 亚洲国产高清精品线久久| 九九九精品成人免费视频7| 亚洲福利视频网址| 亚洲一级毛片免费观看| 日本人妻丰满熟妇区| 国产成人久久777777| 视频一区视频二区日韩专区 | 91美女视频在线| 五月婷婷亚洲综合| 国产午夜不卡| 国产精品久线在线观看| 国产成人综合亚洲欧洲色就色| 自拍亚洲欧美精品| 色妺妺在线视频喷水| 亚洲女同一区二区| av天堂最新版在线| 国产精品欧美在线观看| 色综合久久88| 成人在线观看一区| 欧美成人A视频| 日韩在线1| 成人在线观看一区| 欧美日韩在线国产| 在线国产你懂的| 欧美激情视频在线观看一区| 国产精品精品视频| 精品国产成人a在线观看| 一本一道波多野结衣一区二区|