塘廈鎮(zhèn)仿做網(wǎng)站接app推廣的單子在哪接
文章目錄
- 一、為什么要學(xué)習(xí)μC/OS-III
- 二、嵌入式操作系統(tǒng)的發(fā)展歷史
- 三、實(shí)時(shí)操作系統(tǒng)的特點(diǎn)
- 四、基本概念
- 1. 前后臺(tái)系統(tǒng)
- 2. 操作系統(tǒng)
- 3. 實(shí)時(shí)操作系統(tǒng)(RTOS)
- 4. 內(nèi)核
- 5. 任務(wù)
- 6. 任務(wù)優(yōu)先級(jí)
- 7. 任務(wù)切換
- 8. 調(diào)度
- 9. 非搶占式(合作式)內(nèi)核
- 10. 搶占式(可剝奪式)內(nèi)核
- 11. 中斷
- 12. 時(shí)鐘節(jié)拍
- 五、使用嵌入式操作系統(tǒng)的優(yōu)缺點(diǎn)
- 六、嵌入式操作系統(tǒng)分類
- 七、μC/OS簡(jiǎn)介
- 八、Jean J. Labrosse的故事
- 九、μC/OS 的幾個(gè)典型應(yīng)用
- 十、μC/OS-III的特點(diǎn)
- 十一、μC/OS-III的結(jié)構(gòu)及其與硬件的關(guān)系
- <center> μC/OS-III不是自由軟件和免費(fèi)軟件,用于商業(yè)目的時(shí)須取得許可證
一、為什么要學(xué)習(xí)μC/OS-III
一. 凡從事嵌入式系統(tǒng)開發(fā)工作的人,必須對(duì)嵌入式操作系統(tǒng)有足夠的了解。
二. 對(duì)于初學(xué)者,從μC/OS-III開始是個(gè)明智的選擇。
-
μC/OS-III麻雀雖小,卻五臟基本全(它是個(gè)微內(nèi)核)。
-
可以把操作系統(tǒng)抽象概念具體化。
-
可以學(xué)習(xí)實(shí)時(shí)系統(tǒng)的一些編程技巧。
-
具有很強(qiáng)的實(shí)用性。
-
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)應(yīng)用的好例子。
二、嵌入式操作系統(tǒng)的發(fā)展歷史
1981年Ready System發(fā)展了世界上第1個(gè)商業(yè)嵌入式實(shí)時(shí)內(nèi)核(VTRX32)包含了許多傳統(tǒng)操作系統(tǒng)的特征,包括任務(wù)管理、任務(wù)間通訊、同步與相互排斥、中斷支持、內(nèi)存管理等功能。
隨后,出現(xiàn)了如Integrated System Incorporation (ISI)的PSOS
、IMG的VxWorks
、QNX公司的QNX
等,Palm OS
,WinCE
,嵌入式Linux
,Lynx
, μCOS
、Nucleus
,以及國(guó)內(nèi)的Hopen
、Delta OS
等嵌入式操作系統(tǒng)。
今天RTOS
已經(jīng)在全球形成了一個(gè)產(chǎn)業(yè)。
三、實(shí)時(shí)操作系統(tǒng)的特點(diǎn)
IEEE
的實(shí)時(shí)UNIX
分委會(huì)認(rèn)為實(shí)時(shí)操作系統(tǒng)應(yīng)具備以下的幾點(diǎn):
- 異步的事件響應(yīng)
- 切換時(shí)間和中斷延遲時(shí)間確定
- 優(yōu)先級(jí)中斷和調(diào)度
- 搶占式調(diào)度
- 同步
總的來說實(shí)時(shí)操作系統(tǒng)是事件驅(qū)動(dòng)的,能對(duì)來自外界的作用和信號(hào)在限定的時(shí)間范圍內(nèi)作出響應(yīng)。它強(qiáng)調(diào)的是實(shí)時(shí)性、可靠性和靈活性,與實(shí)時(shí)應(yīng)用軟件相結(jié)合成為有機(jī)的整體起著核心作用,由它來管理和協(xié)調(diào)各項(xiàng)工作,為應(yīng)用軟件提供良好的運(yùn)行軟件環(huán)境及開發(fā)環(huán)境。
從實(shí)時(shí)系統(tǒng)的應(yīng)用特點(diǎn)來看,實(shí)時(shí)操作系統(tǒng)可以分為兩種:一般實(shí)時(shí)操作系統(tǒng)和嵌入式實(shí)時(shí)操作系統(tǒng)。
-
一般實(shí)時(shí)操作系統(tǒng)應(yīng)用于實(shí)時(shí)處理系統(tǒng)的上位機(jī)和實(shí)時(shí)查詢系統(tǒng)等實(shí)時(shí)性較弱的實(shí)時(shí)系統(tǒng),并且提供了開發(fā)、調(diào)試、運(yùn)用一致的環(huán)境。
-
嵌入式實(shí)時(shí)操作系統(tǒng)應(yīng)用于實(shí)時(shí)性要求高的實(shí)時(shí)控制系統(tǒng),而且應(yīng)用程序的開發(fā)過程是通過交叉開發(fā)來完成的,即開發(fā)環(huán)境與運(yùn)行環(huán)境是不一致的。嵌入式實(shí)時(shí)操作系統(tǒng)具有規(guī)模小(一般在幾K~幾十KB 內(nèi))、可固化使用實(shí)時(shí)性強(qiáng)(在毫秒或微秒數(shù)量級(jí)上)等特點(diǎn) 。
四、基本概念
1. 前后臺(tái)系統(tǒng)
對(duì)基于芯片的開發(fā)來說,應(yīng)用程序一般是一個(gè)無限的循環(huán),可稱為前后臺(tái)系統(tǒng)或超循環(huán)系統(tǒng)。
前后臺(tái)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,很多基于微處理器的產(chǎn)品都采用了前后臺(tái)系統(tǒng)設(shè)計(jì),例如微波爐、電話機(jī)、玩具等。而在一些基于微處理器的應(yīng)用中,從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有事都靠中斷服務(wù)來完成。
2. 操作系統(tǒng)
操作系統(tǒng)是計(jì)算機(jī)中最基本的程序。操作系統(tǒng)負(fù)責(zé)計(jì)算機(jī)系統(tǒng)中全部軟硬資源的分配與回收、控制與協(xié)調(diào)等并發(fā)的活動(dòng);操作系統(tǒng)提供應(yīng)用程序接口,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴(kuò)展新的系統(tǒng)功能提供軟件平臺(tái)。
3. 實(shí)時(shí)操作系統(tǒng)(RTOS)
實(shí)時(shí)操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動(dòng)后首先執(zhí)行的背景程序,用戶的應(yīng)用程序是運(yùn)行于RTOS之上的各個(gè)任務(wù),RTOS根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源(包括CPU、存儲(chǔ)器、外設(shè)等)管理、消息管理、任務(wù)調(diào)度、異常處理等工作。
在RTOS支持的系統(tǒng)中, 每個(gè)任務(wù)均有一個(gè)優(yōu)先級(jí),RTOS根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí),動(dòng)態(tài)地切換各個(gè)任務(wù),保證對(duì)實(shí)時(shí)性的要求。
實(shí)時(shí)操作系統(tǒng)包含實(shí)時(shí)內(nèi)核,以及其它高級(jí)的服務(wù)如:文件管理、協(xié)議棧、圖形用戶接口(GUI)等。
4. 內(nèi)核
多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說為每個(gè)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通信。內(nèi)核提供的最基本服務(wù)是任務(wù)切換。使用實(shí)時(shí)內(nèi)核可以大大簡(jiǎn)化應(yīng)用系統(tǒng)的設(shè)計(jì),因?yàn)閷?shí)時(shí)內(nèi)核允許將應(yīng)用分成若干個(gè)任務(wù),由實(shí)時(shí)內(nèi)核來管理它們。
內(nèi)核需要消耗一定的系統(tǒng)資源,比如2%~5%的CPU運(yùn)行時(shí)間、RAM和ROM等。
內(nèi)核還提供一些必不可少的系統(tǒng)服務(wù),如信號(hào)量、消息隊(duì)列、延時(shí)等。
5. 任務(wù)
一個(gè)任務(wù),也稱作一個(gè)線程,是一段簡(jiǎn)單的程序,該程序可以認(rèn)為CPU完全屬于該程序自己。每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套CPU寄存器和自己的棧空間。
實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)過程,包括如何把問題分割成多個(gè)任務(wù),每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分。
6. 任務(wù)優(yōu)先級(jí)
任務(wù)的優(yōu)先級(jí)是表示任務(wù)被調(diào)度的優(yōu)先程度。每個(gè)任務(wù)都具有優(yōu)先級(jí)。任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高,越容易被調(diào)度進(jìn)入運(yùn)行態(tài)。
7. 任務(wù)切換
當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài),即CPU寄存器中的全部?jī)?nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀態(tài)保存區(qū),即任務(wù)自已的棧之中。入棧工作完成以后,就把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀態(tài)從其棧中重新裝入CPU的寄存器,并開始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過程就稱為任務(wù)切換。
這個(gè)過程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧。
8. 調(diào)度
調(diào)度是內(nèi)核的主要職責(zé)之一。調(diào)度就是決定該輪到哪個(gè)任務(wù)運(yùn)行了。多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級(jí)調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程序的不同被賦予一定的優(yōu)先級(jí)?;趦?yōu)先級(jí)的調(diào)度法指CPU總是讓處在就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。
然而究竟何時(shí)讓高優(yōu)先級(jí)任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是非搶占式的還是搶占式的內(nèi)核。
9. 非搶占式(合作式)內(nèi)核
非搶占式內(nèi)核要求每個(gè)任務(wù)自我放棄CPU 的所有權(quán)。非搶占式調(diào)度法也稱作合作型多任務(wù),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。
異步事件還是由中斷服務(wù)來處理。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起(Pending,或譯為“等待” )狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后CPU控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)。
10. 搶占式(可剝奪式)內(nèi)核
當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用搶占式內(nèi)核。因此絕大多數(shù)商業(yè)上銷售的實(shí)時(shí)內(nèi)核都是搶占式內(nèi)核。最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒狀態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。
如果是中斷服務(wù)程序使一個(gè)高優(yōu)先級(jí)的任務(wù)進(jìn)入就緒態(tài),中斷完成時(shí),中斷了的任務(wù)將被掛起,優(yōu)先級(jí)高的那個(gè)任務(wù)開始運(yùn)行。
11. 中斷
中斷是一種硬件機(jī)制,用于通知CPU有個(gè)異步事件發(fā)生了。中斷一旦被識(shí)別,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳轉(zhuǎn)到專門的子程序,稱為中斷服務(wù)程序(ISR)。中斷服務(wù)程序做事件處理,處理完成后,程序回到:
- 在前后臺(tái)系統(tǒng)中,程序回到后臺(tái)程序;
- 對(duì)非搶占式內(nèi)核而言,程序回到被中斷了的任務(wù);
- 對(duì)搶占式內(nèi)核而言,讓進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)開始運(yùn)行。
12. 時(shí)鐘節(jié)拍
時(shí)鐘節(jié)拍是特定的周期性中斷。這個(gè)中斷可以看作是系統(tǒng)心臟的脈動(dòng)。中斷之間的時(shí)間間隔取決于不同應(yīng)用,一般在10ms到200ms之間。時(shí)鐘的節(jié)拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘節(jié)拍,以及當(dāng)任務(wù)在等待事件發(fā)生時(shí),提供等待超時(shí)的依據(jù)。
時(shí)鐘節(jié)拍率越快,系統(tǒng)的額外開銷就越大。
五、使用嵌入式操作系統(tǒng)的優(yōu)缺點(diǎn)
-
優(yōu)點(diǎn)
- 使程序的設(shè)計(jì)和擴(kuò)展變得容易,大大提高了開發(fā)效率。
- 充分發(fā)揮32位CPU多任務(wù)的潛力,實(shí)現(xiàn)多任務(wù)設(shè)計(jì),能夠充分利用硬件資源和實(shí)現(xiàn)資源共享。
- 實(shí)時(shí)性和健壯性能夠得到更好的保證。
-
缺點(diǎn)
- 嵌入式操作系統(tǒng)占用ROM/RAM等額外開銷,5~10%的CPU額外負(fù)荷。
六、嵌入式操作系統(tǒng)分類
- 按收費(fèi)模式劃分
- 商用型:
Vxworks, Nucleus, PlamOS, Symbian, WinCE, QNX, pSOS, VRTX, Lynx OS, Hopen, Delta OS - 免費(fèi)型:
Linux, μCLinux, μC/OS-III(非商用時(shí)), eCos, uITRON
- 商用型:
- 按實(shí)時(shí)性劃分
- 硬實(shí)時(shí):
Vxworks、μC/OS-III
軟實(shí)時(shí)
WinCE, RTLinux - 無實(shí)時(shí):
Embedded Linux
- 硬實(shí)時(shí):
七、μC/OS簡(jiǎn)介
-
μC/OS—Micro Controller OS
-
美國(guó)人Jean Labrosse 1992年完成,已應(yīng)用于眾多產(chǎn)品中。
-
應(yīng)用面覆蓋了諸多領(lǐng)域,如照相機(jī)、醫(yī)療器械、音響設(shè)備、發(fā)動(dòng)機(jī)控制、高速公路電話系統(tǒng)、自動(dòng)提款機(jī)等。
-
1998年μC/OS-II、2009年μC/OS-III
-
滿足航空電子、工業(yè)控制、醫(yī)療等市場(chǎng)的針對(duì)可靠性/安全性的認(rèn)證標(biāo)準(zhǔn)。
-
是一個(gè)源碼公開、可移植、可裁減、可固化、占用資源少、搶占式的實(shí)時(shí)多任務(wù)操作系統(tǒng)內(nèi)核。其絕大部分源碼采用ANSI C編寫,可移植性好。高校教學(xué)可免費(fèi)使用。
八、Jean J. Labrosse的故事
- 80年代末,我設(shè)計(jì)了一個(gè)基于Intel 80C188的產(chǎn)品,需要一個(gè)實(shí)時(shí)內(nèi)核。
- 使用一個(gè)知名的內(nèi)核太貴了,廉價(jià)的內(nèi)核B(當(dāng)時(shí)大約1000美元以下)讓我總給該廠商打電話求援。該廠商聲稱內(nèi)核B是用C語(yǔ)言寫的,可我還得用匯編語(yǔ)言初始化程序的每個(gè)對(duì)象,實(shí)在是煩透了,產(chǎn)品的開發(fā)也耽誤了。
- 后來我得知我是該廠商的第一個(gè)客戶
九、μC/OS 的幾個(gè)典型應(yīng)用
- NSA2010便攜式電話,在日本大約有15000臺(tái)投入市場(chǎng)。使用μC/OS實(shí)時(shí)操作系統(tǒng)。
- CYCLONE移動(dòng)電話,Hitachi H8S/2318k微程序控制器,256K閃存和8K Ram, μC/OS 實(shí)時(shí)操作系統(tǒng)。
選擇μC/OS的原因:
INFEA R&D的職員從1996年以來開始應(yīng)用Micriμm實(shí)時(shí)操作系統(tǒng)。通過比較,還沒有發(fā)現(xiàn)比μC/OS更好的實(shí)時(shí)操作系統(tǒng)。
十、μC/OS-III的特點(diǎn)
-
源代碼開放
-
便捷的應(yīng)用程序編程接口(API)
-
搶占式多任務(wù)管理
-
同優(yōu)先級(jí)任務(wù)的時(shí)間片輪轉(zhuǎn)調(diào)度
-
極短的關(guān)中斷時(shí)間
-
確定性
-
可裁剪
-
可移植
-
可固化
-
可動(dòng)態(tài)配置
-
任務(wù)數(shù)目不受限制
-
內(nèi)核對(duì)象數(shù)目不受限制
-
豐富的系統(tǒng)服務(wù)
-
互斥型信號(hào)量
-
軟件定時(shí)器
-
同時(shí)等待多個(gè)內(nèi)核對(duì)象
-
直接向任務(wù)發(fā)信號(hào)、消息
-
任務(wù)寄存器
-
出錯(cuò)檢驗(yàn)
-
內(nèi)置性能測(cè)試
-
易于優(yōu)化
-
防止死鎖
-
內(nèi)置的內(nèi)核察覺式調(diào)試
十一、μC/OS-III的結(jié)構(gòu)及其與硬件的關(guān)系
按照每個(gè)模塊的標(biāo)記順序,對(duì)內(nèi)核每個(gè)模塊的功能進(jìn)行說明:
(1)應(yīng)用程序代碼。為了方便起見,將其簡(jiǎn)稱為APP.C和APP.H,然而,一個(gè)應(yīng)用可包含任意數(shù)量的文件,這些文件并不一定叫APP.*。通常在應(yīng)用程序代碼中可找到主函數(shù)main()。
(2)半導(dǎo)體制造商通常以源代碼的形式提供庫(kù)函數(shù),用于訪問他們生產(chǎn)的CPU或者M(jìn)CU的外設(shè)。這些庫(kù)非常的有用。
(3)板級(jí)支持包(Board Support Package,BSP)是操作系統(tǒng)與目標(biāo)板外設(shè)的交互代碼。比如,這些代碼可用于打開或者關(guān)閉LED燈、繼電器,讀開關(guān)狀態(tài)、讀溫度傳感器等。
(4)這是μC/OS-III中與CPU無關(guān)的代碼,這部分代碼是用高度可移植的ANSI C編寫的。
(5)這部分μC/OS-III代碼需要根據(jù)特定的CPU架構(gòu)進(jìn)行修改,該過程稱為移植(porting)。
(6)Micrium公司將CPU相關(guān)功能代碼封裝起來。這些文件定義了禁止和使能中斷的函數(shù),與CPU和使用的編譯器有關(guān)的CPU_???數(shù)據(jù)類型,和一些其它的函數(shù)。
(7)μC/LIB是一系列提供通用函數(shù)的源文件,比如內(nèi)存復(fù)制、字符串和ASCII碼的相關(guān)函數(shù)。其中一部分函數(shù)用來代替編譯器所提供的stdlib庫(kù)里的函數(shù)。這些函數(shù)代碼的提供確保了應(yīng)用程序之間,特別是編譯器之間的可移植性。μC/OS-III并不使用這些文件,但μC/CPU會(huì)用到。
(8)這部分是μC/OS-III的配置文件。OS_CFG.H配置μC/OS-III的功能;OS_CFG_APP.H配置μC/OS-III特定變量或數(shù)據(jù)結(jié)構(gòu)的大小,比如:空閑任務(wù)的棧大小,時(shí)鐘節(jié)拍的頻率、消息緩沖池的大小等; CPU_CFG.H用來配置應(yīng)用程序編程人員可用的μC/CPU功能;LIB _CFG.H用來配置μC/LIB選項(xiàng)。