




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 第24卷第2期2009 年6月安徽工程科技學院學報Journal of Anhui University of Technology and Science Vol. 24. No. 2J un. ,2009文章編號:167222477(2009 0220055203基于ARM7的嵌入式操作系統c/OS 2平臺的剖析與實現陶保壯(淮南聯合大學計算機系, 安徽淮南232038摘要:嵌入式操作系統發展的運用, 能夠簡化嵌入式系統的應用開發, 有效地確保系統的穩定性、安全性和可靠性. 因此嵌入式實時操作系統在目標處理器平臺上的移植就成為嵌入式軟件開發的基礎, 以此為背景, 從算法實現和運行測試的角
2、度出發, 系統闡述了嵌入式操作系統c/OS 2移植到S3C44B0X 的芯片的移植過程和步驟. 最終使嵌入式系統開發平臺得以實現.關鍵詞:嵌入式;S3C44B0X; 實時內核c/OS 2; 移植中圖分類號:TP391文獻標識碼:A隨著后PC 時代的到來, , 嵌入式系統硬件的規模越來越大, 功能越來越強, 進行統一協調、指揮和有效控制, 要的. 而操作系統是一個通用的程序, 必須結合所用處理器的性能指標進行修改、移植, 嵌入式操作系統c/OS 2平臺的實現的移, .1c/OS 2c/OS 2, 是一個源代碼公開、可固化、可裁剪占先式的實時多任務操作系統, 它運行就緒狀態下優先級最高的任務,其絕
3、大部分源碼是用便于移植的C 語言編寫, 小部分匯編語言代碼已被壓縮到最低限度, 使之可供不同構架的微處理器上使用1.c/OS 2屬于可剝奪型實時內核, 結構小巧, 最小內核可編譯至2K. 系統內核提供的基本服務主要是負責多任務間的的共享數據, 同步與通信等. c/OS 2所具有執行效率高, 占用空間小, 實時性能好和可擴展性能強等特點受到廣大用戶的青睞. 圖1說明了c/OS 2文件組織與硬件的關系. c/OS 2圖1軟件體系結構2c/OS 2II 在S3C44B0X 上的移植2移植就是指使一個實時內核能在多個微處理器或微控制器上運行. 本文采用了SAMSUN 公司的S3C44B0X 芯片, 開
4、發環境采用Keil uVision3, 基本滿足開發要求.S3C44BOX 是一款基于ARM7D TM I (內核 16/32位的SOC 芯片. 該芯片片上功能很強大, 技術成熟, 應用廣泛,160管腳L Q FP 封裝;8K 字節的Cache , 外部擴充存儲器(FP/EDO/SRAM/SRAM/ROM/SDRAM 控制 ;8個外部中斷源; 向量中斷控制器可配置優先級和向量地址等, 具有低成本、低功耗、高性能等優點3.移植工作主要集中在與處理器相關的3個文件中:OS_CPU.H 、OS_CPU_C.C 、OS_CPU _A.S. 其中:OS_CPU.H 文件主要包含與編譯器相關的數據類型定義
5、、堆棧類型定義、兩個宏定義和幾個函數說明;OS_CPU_C.C 包含與移植有關6個C 函數, 為OSTaskInit ( ,OSTaskCreate Hook ( ,OSTaskDel 2收稿日期:2009202220作者簡介:陶保壯(19722 , 男, 安徽淮南人, 碩士, 講師. 56安徽工程科技學院學報第24卷Hook ( ,OSTaskSw Hook ( ,OSTaskStat Hook ( ,OSTime Tick_Hook ( , 除第一個任務堆棧初始化函數外的其它5個函數為鉤子函數, 可以沒有實際內容, 但必須要聲明, 由系統函數調用, 用于擴充自己需要的功能. OS_CPU_
6、A.S 中包含與移植有關的4個匯編語言函數, 為OSStart HighRdy ( ,OSCt xSw ( , OSInt Ct xSw ( ,OSTickISR ( .2. 1OS_CPU.H 文件移植c/OS 2II 不使用C 語言中short ,int 和long 等數據類型定義, 因為它們與處理器類型相關, 隱含不可移植性. 此文件中主要包含與編譯器相關數據類型定義、堆棧類型定義、兩個宏定義和幾個函數說明. 數據類型定義部分代碼如下1:typedef unsigned short IN T16U ;/316位有符號整數3/typedef unsigned long IN T32U ;/
7、332位無符號整數#define OS_STK_GROWT H 1/3堆棧增長方向從上向3/typedef signed long IN T32S ;/332位有符號整數3/typedef float FP32;/3單精度浮點數3/typedef unsigned int OS_ST K;/3堆棧入口寬度為16位3/下滿遞減堆棧3/#define OS_EN TER_CRITICAL( cpu_sr=OS_CPU_SR_Save( ;/3關中斷, 執行臨界代碼3/#define OS_EXIT_CRITICAL( OS_CPU_SR_Restore (cpu_sr ;/3開中斷3/在本例移植中
8、, 使用軟中斷指令SWI 作為底層接口, . 在Keil uVision3中, 用關鍵字_swi聲明一個不存在的函數, 能號. SWI 函數部分代碼如下5:_swi(0x00 void OS_TASK_SW (void ;/3(OS_EN TER_CRITICAL(void ;/3關中換函數3/_swi(0x01 void ;/3最高的任務3/3/_swi(0x03 void OS_EXIT_CRITICAL (void ;/3開中斷3/2. 2文件移植c/OS 2中, 每個任務要有自己的堆棧空間, 以便進行任務切換時能將當時處理器現場保存到任務堆棧空間中, 在下次執行時再恢復出來. 因此必先
9、確定任務堆棧結構, 而任務堆棧結構與CPU 體系結構、編譯器密切關聯. 本移植堆棧結構如圖2所示. OSEnterSum 用于任務切換時保存和恢復各自OSEnter 2Sum 值, 以便實現中斷的嵌套.OSTaskSt k Init ( 函數關鍵代碼如下:3-stk =(unsigned int task ;/3pc 3/3-stk =(unsigned int task/3lr 3/3-stk =0;/3r12. . . . . r1, 其它同理3/3-stk =(unsigned int pdata ;/3r0, 第一個參數用r0傳遞3/3-stk =(SVC32MODE|0x0| ;/3
10、cp sr 關閉irq ,fiq 3/3-stk =(SVC32MODE|0x0 ;/3spsr IRQ , 關閉FIQ 3/return (OS_STK 3 stk ;/3堆棧指針保存在任務的OS_TCB 中3/此文件中的幾個系統規定的hook 函數在本移植將它們都設為空函數.2. 3OS_CPU_A.S 文件移植OSStart HighRdy ( 、OSCtxSw ( 、OSIntCtxSw ( 、OSTickISR ( . 圖2任務的堆棧結構4OS_CPU_A.ASM 的改寫是移植的難點, 它需要用戶主要編寫4個匯編語言函數5:多任務啟動函數OSStart ( 調用OSStart Hig
11、ht Rdy ( 函數, 運行優先級最高的任務. 用戶在調用該函數之前, 必須至少建立一個或更多任務. OSCt xSw ( 函數是由任務級任務切換函數OS_TAS K_SW( 調用, 實現從低優先級向高優先級切換. 文中任務級切換是通過SWI 軟中斷來實現的. 軟中斷的異常處理程序掛接到CPU 內核, 通過修改啟動代碼里的異常向量表實現. 中斷服務程序與CPU 芯片相關, 中斷源的掛接通過增加匯編接口的支持來實現, 即在文件IRQ. S 的適當位置添加如下的程序代碼4:IRQ. Handler HANDL ER IRQ. Exception ; IRQ 中斷OSInt Ct xSw ( 是中
12、斷級任務切換函數, 在中斷退出時由函數OSInt Exit ( 調用. 此函數基本原理與任務級切換相同, 只是由于進入中斷時已保存了被中斷任務的環境變量, 就不進行類似操作, 只需要對堆棧指針進行調整即可. 部分代碼如下: 第2期陶保壯:基于ARM7的嵌入式操作系統c/OS 2平臺的剖析與實現57LDR r4,addr_OSTCBCur;/3得到當前任務的TCB 地址STR r5,r4;/3設置新的當前任務的TCB 地址3/LDMFD sp ! ,r4/3新任務cpsr 出棧3/MSR CPSR_cxsf,r4LDMFD sp ! ,r0-r12,lr ,pc;/3r0-r12,lr &
13、;pc出棧, 運3/LDR r5,addr_OSTCB HighRdy ;/3得到高優先級任務的TCB 地址3/LDR r5,r5;/3得到堆棧指針3/LDR sp ,r5;/3切換到新的堆棧3/行新任務3/系統時鐘節拍中斷函數OSTickISR ( 是一個周期性中斷, 為內核提供時鐘節拍. 其周期決定了內核所能給應用系統提供的最小時間間隔服務. 本移植中,IRQ 是受c/OS 2II 管理的中斷, 對FIQ 不處理. 時鐘節拍的移植可通過匯編宏完成. 完成上述工作后, c/OS 2II 就可以運行在A RM 處理器上了.3移植測試測試操作系統移植代碼的正確性可以在沒有應用程序的情況下進行.
14、換句話說, 就是讓內核自己測試自己. 在Keil uVision3下編譯、鏈接成可執行的. axf 文件后, 通過SU PERJ TA G 下載到目標板中(博創44B0X 實驗箱 . 筆者通過以下測試用例(編寫了OSTaskIdle Hook ( 函數, 每2000L ED , 驗證了系統移植是成功的.void OSTaskIdle Hook (void static i =0;if (i %20000=0 /3每20000, 3/(i L ED i +;(SE 3L ED 3/4結束語c/OS 2II 是一個有優勢的嵌入式實時操作系統, 有良好的應用前景. 本文通過具體事例, 實現了實時內核
15、c/OS 2II 在S3C44B0X 上的移植. 通過簡單的任務例程, 在Keil uV_ision3及開發板下進行了調試, 從而驗證了移植的準確性, 此移植的成功為c/OS 2II 嵌入式實時系統的復雜應用, 提供了基本條件. 參考文獻:1杜春雷. ARM 體系結構與編程M .北京:清華大學出版社,2003:792181.2J ean J ,L sbrosse ,. c/OS 2II :the Real Time KernelM .北京:中國電力出版社,2001:902168.3K irk Zurell. 嵌入式系統的C 程序設計M .北京:機械工業出版社,1272259.4周立功. ARM
16、 微處理器基礎與實踐:2版M .北京:北京航空航天大學出版社,2005:1352261.5黃燕平. c/OS ARM 移植要點詳解M .北京:北京航空航天大學出版社. 2005.6曹巧媛. 單片機原理及應用M .北京:電子工業出版社,2001:432159,73289.R esearch of c/OS 2platform B ased on ARM 7TAO Bao 2zhuang(Dept. of comp. , Huainan Unit University , Huainan 232038,China Abstract :Atp resent , t he t raditional f
17、oreground/background system has become a major bottleneck t hat hinder t he develop ment of embedded systems. But t he int roduction of Embedded Operating System , can simplify t he application develop ment of embedded system and can also insure a system sstability , relia 2bility. Takes t his as background , t he transplant
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通力電梯t1試題及答案
- 教師資格證考試試題
- 疫苗的面試題及答案
- 大數據在2025年信息系統中的應用試題及答案
- 公共政策實施中的隱性成本與效益分析試題及答案
- 職業規劃中的軟件設計師考試及試題及答案建議
- 網絡工程師考試趨勢分析試題及答案
- 西方政治制度2025年發展試題及答案
- 剖析西方政治制度的變遷軌跡試題及答案
- 網絡技術與服務模型試題及答案
- 危重患者護理課件(完整版)
- 臨床試驗流程培訓
- 《常德津市牛肉粉》課件
- 智聯招聘國企行測
- 宜賓學院《操作系統原理》2022-2023學年第一學期期末試卷
- 中考語文真題專題復習 名著導讀(第03期)(解析版)
- 【MOOC】工業設計面面觀-鄭州大學 中國大學慕課MOOC答案
- 術中獲得性壓力性損傷預防專家共識2023
- 2023年高考真題-物理(福建卷) 含答案
- 微專業合作建設協議
- 第五單元 探索1 互聯網安全風險及其產生原因教學設計-2023-2024學年蘇科版(2023)初中信息科技七年級下冊
評論
0/150
提交評論