《嵌入式實時操作系統(tǒng)概要設計說明書》由會員分享,可在線閱讀,更多相關《嵌入式實時操作系統(tǒng)概要設計說明書(9頁珍藏版)》請在裝配圖網上搜索。
1、
分 類:軟件項目設計
使用者:E-fanciers
概要設計說明書
Version: 1.0
項 目 承 擔 隊伍:煙臺大學
計算機學院
E-fanciers小組
撰 寫 人(簽名): 孝瑞
完 成 日 期: 2009-7-16
本文檔使用小組: E-fanciers小組
評審負責人(簽名): 孝瑞
評 審 日 期: 2009-8-19
2、
目 錄
一、引言 4
1.1編寫目的 4
1.2項目背景 4
1.3定義 4
1.4參考資料: 5
二、任務概述 5
2.1目標 5
2.2運行環(huán)境 6
2.3 需求概述..........................................6
2.4條件與限制 6
三、總體設計 6
3.1處理流程 6
3.2總體結構和模塊外部設計 6
3.3. 功能分配.........................................7
四、接口設計 7
4.
3、1外部接口 7
4.2內部接口 7
五、數(shù)據結構設計 8
5.1 ?邏輯結構設計.....................................8
5.2物理結構設計......................................8
5.2物理結構設計......................................8
六、運行設計 8
6.1運行模塊的組合.....................................8
6.2運行控制.....................................
4、......8
6.3運行時間...........................................8
七、出錯處理設計 9
八、安全保密設計 9
九、維護設計 9
概要設計說明書
(Architectural Design Specification)
?一.引言
1.編寫目的
MyRTOS是E-fanciers小組通過開源的微型操作系統(tǒng)ucos-ii開發(fā)的嵌入式實時操作系統(tǒng),目標板選用周立功ARMLPC2138+
5、JLINK調試頭,開發(fā)環(huán)境選用RealView 公司的MDK.
MyRTOS的設計采用ucos-ii的設計思想,并在其基礎上進行了擴展和創(chuàng)新.尤其設計解決了優(yōu)先級反轉問題和同級時間片輪詢調度機制.
2.項目背景
嵌入式實時操作系統(tǒng)是09年山東省齊魯軟件大賽新增的題目,本題目迎合了目前非常熱門的嵌入式產業(yè)的人才需求,讓學生了解嵌入式開發(fā)的方方面面.并逐漸進入嵌入式開發(fā)的領域.
E-fanciers小組經過分析本次大賽的題目,最后決定選擇這個具有挑戰(zhàn)性的題目.后來經過學習和陳老師的指導,認識到選擇此題目的必要性:目前市場上有很多嵌入式產品,嵌入式實時操作系統(tǒng)也是層出不窮,
6、如何開發(fā)出一個功能完善、而又高效的嵌入式實時操作系統(tǒng)成為一大熱點課題.
3.定義
3.1嵌入式實時操作系統(tǒng)
嵌入式實時操作系統(tǒng)(Embedded Real Time OS,簡稱 RTOS)是嵌入式系統(tǒng)應用開發(fā)的核心軟件,是嵌入式系統(tǒng)的靈魂,就像我們日常所用計算機桌面系統(tǒng)中,微軟公司的 Windows 操作系統(tǒng)一樣重要。市場上有很多著名的商業(yè)化嵌入式操作系統(tǒng),如VxWorks、Pam OS、Windows CE、嵌入式 Linux和μC/OS-II等上千種RTOS。
3.2臨界區(qū)
和其它內核一樣,MyRtos為了處理臨界段代碼需要關中斷,處理完畢后再開中斷。這使得MyRtos能夠避免
7、同時有其它任務或中斷服務進入臨界段代碼。關中斷的時間是實時內核開發(fā)商應提供的最重要的指標之一,因為這個指標影響用戶系統(tǒng)對實時事件的響應性。MyRtos努力使關中斷時間降至最短,但就使用MyRtos而言,關中斷的時間很大程度上取決于微處理器的架構以及編譯器所生成的代碼質量。
3.3任務
一個任務通常是一個無限的循環(huán)。一個任務看起來像其它C的函數(shù)一樣,有函數(shù)返回類型,有形式參數(shù)變量,返回任務編號.
3.4任務調度
確定哪個任務優(yōu)先級最高,下面該哪個任務運行了的工作是由調度器(Scheduer)完成的。
3.5空閑任務
系統(tǒng)的空閑任務OS_TaskIdle(),MyRtos總是建立一個
8、空閑任務,這個任務在沒有其它任務進入就緒態(tài)時投入運行。這個空閑任務永遠設為最低優(yōu)先級,即OS_LOWEST_PRI0??臻e任務OS_TaskIdle ()什么也不做,只是在不停地給一個32位的名叫OSIdeCtr的計數(shù)器加1,注意空閑任務不可能被應用軟件刪除。屬于系統(tǒng)服務.
3.6統(tǒng)計任務
統(tǒng)計任務用來根據計數(shù)器的值計算cpu利用率,屬于系統(tǒng)服務.
3.7任務管理
對任務進行的操作,包括任務創(chuàng)建、刪除、阻塞睡眠、掛起、恢復等操作。屬于內核部分。
3.8任務堆棧
每個任務都有自己的堆??臻g。堆棧必須聲明為OS_STK類型,并且由連續(xù)的內存空間組成。用戶可以靜態(tài)分配堆??臻g(在編譯
9、的時候分配)也可以動態(tài)地分配堆棧空間(在運行的時候分配)。
3.9優(yōu)先級
在用戶建立任務的時候會分配給任務一個優(yōu)先級。優(yōu)先級決定了任務的運行次序和調度次序。
3.10互斥信號量
使用互斥信號量進行任務間通信,避免了優(yōu)先級反轉問題的發(fā)生?;コ庑盘柫康牟僮靼ǎ簞?chuàng)建互斥信號量、等待信號量、發(fā)送信號量.
3.11 Shell
Shell是用來進行人機交互的界面。供操作系統(tǒng)的用戶對系統(tǒng)進行操作.用戶可以通過Shell查看任務運行情況、可以掛起、恢復任務,查看信號量的使用情況等操作.
4.參考資料(列出這些資料的作者、標題、編號、發(fā)表日期、出版單位或資料來源,可包括:
編號
10、 名稱 作者/來源
(1) 項目開發(fā)計劃; E-fanciers
(2) 需求規(guī)格說明書; E-fanciers
(3) 測試計劃(初稿); E-fanciers
(4) 用戶操作手冊(初稿); E-fanciers
(5) 《ucos-ii中文版》
(6) 《自己動手做操作系統(tǒng)》
二.任務概述
1.目標:
實現(xiàn)大賽要求的基本功能,并著手實現(xiàn)一些擴展功能
2.運行環(huán)境
實驗板:lpc2138 調試頭:JLINK 開發(fā)環(huán)境:RealView
11、MDk3.5
3.需求概述
本賽題要求完成一個小型微內核嵌入式實時操作系統(tǒng)的設計和實現(xiàn)。 需提交實際可運行代碼,并在參考硬件平臺上演示功能。軟件實現(xiàn)過程應遵循敏捷性方法的指導,注意代碼和文檔的質量和版本控制,編寫測試用例驗證軟件功能和重構代碼。
4.條件與限制
1. 參考硬件平臺為:周立功EasyArm2138。實際上,也可用其他LPC系列CPU和實驗板,只要CPU有足夠的RAM、Flash存儲器和一個串口擴展就可以了。但與LPC2138區(qū)別越小越好,最終的驗證都統(tǒng)一在LPC2138上進行。
2. 硬件抽象層的接口遵循uc/OS的接口規(guī)范。這樣現(xiàn)存的大量的uC/OS硬件抽象層可為新
12、操作系統(tǒng)提供服務,減少移植工作量。硬件抽象層可以直接借用uC/OS的代碼,但最好自己實現(xiàn),只是接口兼容。
3. 操作系統(tǒng)的調用采用函數(shù)調用方式,不用中斷陷入方式;
4. 將各任務棧獨立,作為任務的私有存儲區(qū);
5. 同時支持任務數(shù)不小于255個。空閑任務占用編號0。
6. 同級任務的輪詢時間片大小可以調節(jié),單位為10毫秒(稱為tick)。
7. 串口接口參數(shù):波特率9600,8位數(shù)據,1位停止,無硬件流控制。
8. 任務優(yōu)先級不小于255級,最高優(yōu)先級為0,最低優(yōu)先級為255??臻e任務優(yōu)先級為255。
9. 操作系統(tǒng)的應用接口的應遵循題目的規(guī)范,見后面的描述。
10. 對于代碼
13、移植性驗證,參賽者可自行選擇硬件平臺。該硬件平臺與LPC2138或ARM之間的區(qū)別越大越好。
三.總體設計
?1.處理流程
設計和實現(xiàn)一個小型微內核嵌入式實時操作系統(tǒng), 硬件抽象層的接口遵循uc/OS的接口規(guī)范。操作系統(tǒng)的調用采用函數(shù)調用方式,不用中斷陷入方式,同時支持任務數(shù)不小于255個??臻e任務占用編號0。同級任務的調度采用時間片輪詢的方式,不同優(yōu)先級任務采用按優(yōu)先計調度的方式,及時對請求的任務進行處理。
?2.總體結構和模塊外部設計
1.任務管理模塊
對任務進行的操作,包括任務創(chuàng)建、刪除、阻塞睡眠、掛起、恢復等操作。屬于內核部分。
2.任務堆棧模塊
每個任務都
14、有自己的堆棧空間。堆棧必須聲明為OS_STK類型,并且由連續(xù)的內存空間組成。用戶可以靜態(tài)分配堆棧空間(在編譯的時候分配)也可以動態(tài)地分配堆棧空間(在運行的時候分配)。
3.優(yōu)先級模塊
在用戶建立任務的時候會分配給任務一個優(yōu)先級。優(yōu)先級決定了任務的運行次序和調度次序。
4.互斥信號量模塊
使用互斥信號量進行任務間通信,避免了優(yōu)先級反轉問題的發(fā)生。互斥信號量的操作包括:創(chuàng)建互斥信號量、等待信號量、發(fā)送信號量.
5. Shell
Shell是用來進行人機交互的界面。供操作系統(tǒng)的用戶對系統(tǒng)進行操作.用戶可以通過Shell查看任務運行情況、可以掛起、恢復任務,查看信號量的使用情況等操作.
15、
?3.功能分配(表明各項功能與程序結構的關系。)
各個模塊既是相互獨立的又是互相關聯(lián)的,各個模塊的互相調用配合共同使得系統(tǒng)得以穩(wěn)定的工作。
四.接口設計
1.外部接口
遵循uc/OS的底層接口規(guī)范,參考代碼文件OS_CPU.H, OS_CPU_A.C, OS_CPU_A.S
2.內部接口
內部各模塊間設計容易訪問的接口。
下面為os.h頭文件內容, 該文件為對外應用接口說明文件。若需使用操作系統(tǒng)服務,需引用該文件。列出為基本部分,參賽者必須遵循,根據需要可擴展。
/*初始化操作系統(tǒng),建立多任務環(huán)境. 該函數(shù)調用后,其他系統(tǒng)調用則可用*/
/
16、*返回: 0: 成功, -1: 失敗. 后面返回無說明則同*/
int taskInit(void);
/*創(chuàng)建一個任務*/
/*返回: 返回任務編號tid, >0: 成功, 其他: 失敗.*/
/*name: 任務名稱, entryPtr : 任務函數(shù)入口, stack_size: 任務棧大小, priority: 任務優(yōu)先級*/
int taskCreate(char *name, void *entryPtr, int stack_size, int priority);
/*啟動一個任務, 讓taskCreat創(chuàng)建的任務參加調度*/
/*tid: 任務編號, 由tas
17、kCreate返回*/
int taskStart(unsigned char tid);
/*獲取和設置任務優(yōu)先級, 用于動態(tài)調整*/
int taskPriorityGet(unsigned char tid);
int taskPrioritySet(unsigned char tid, int newPriority);
/*將任務掛起, 該任務退出調度*/
int taskSuspend(unsigned char tid);
/*將任務刪除 該任務退出調度且回收任務分配的資源*/
int taskDelete(unsigned char tid);
18、
/*互斥信號量創(chuàng)建, 返回信號量標識sid, <0: 失敗*/
int semCreate(void);
/*互斥信號量獲取和釋放*/
int semTake(int sid);
int semGive(int sid);
/*任務睡眠(非忙等), 由任務自己調用, 主動阻塞一段時間. 時間單位為tick, 即10毫秒*/
int taskSleep(int ticks);
五.數(shù)據結構設計
1.?邏輯結構設計
1.1任務狀態(tài)
任務共有五種狀態(tài),在任一給定的時刻,任務的狀態(tài)一定是在這五種狀態(tài)之一.
1.2任務控制塊
一旦任務建立了,任務控制塊將被賦值。任務控
19、制塊是一個數(shù)據結構,當任務的CPU使用權被剝奪時,系統(tǒng)用它來保存該任務的狀態(tài)。當任務重新得到CPU使用權時,任務控制塊能確保任務從當時被中斷的那一點絲毫不差地繼續(xù)執(zhí)行??刂茐K全部駐留在RAM中。讀者將會注意到筆者在組織這個數(shù)據結構時,考慮到了各成員的邏輯分組。任務建立的時候,控制塊就被初始化了
2.?物理結構設計
硬件抽象層的建立,遵循ucos-ii的規(guī)范.
3.?數(shù)據結構與程序的關系
就緒隊列使用鏈表數(shù)據結構,查找最高優(yōu)先級任務時遍歷鏈表查詢.
六.運行設計
1.運行模塊的組合
各模塊互相配合共同完成對任務的實時調度。
2.運行控制
通過Shel
20、l來控制任務的運行,可以對任務進行掛起、恢復、運行、刪除等操作。
3.運行時間
通過以時鐘心跳tick為單位對任務狀態(tài)計時,任務調度有同級時間片輪詢和不同優(yōu)先級按優(yōu)先級調度,完成對任務的實時調度。
七.出錯處理設計
1.出錯輸出信息
宏定義相應的錯誤編碼,程序出錯時輸出錯誤信息。
2.出錯處理對策
提示用戶系統(tǒng)出錯,等待用戶處理.
八.安全保密設計
設置登陸界面,以此來限制用戶,保證操作該系統(tǒng)的都是合法用戶,保護系統(tǒng)安全。
21、
九.維護設計
可移植性強(Portable),MyRtos絕大部分使用ANSI C編寫,而而與微處理器硬件相關的那部分利用了μC/OS-II的函數(shù)層,所以MyRtos和μC/OS-II一樣有很強的可移植性的
可固化,可裁減,可確定性。
9