μCos-ii学习笔记1_概述
一、μCos-ii _概述
? ? ? 網(wǎng)上關(guān)于μCosii的文章多不勝數(shù),本人學(xué)習(xí)的過程中也參考了很多人的理解和想法,看的是盧有亮老師的《嵌入式實(shí)時(shí)操作系統(tǒng)-μC/OS原理與實(shí)踐》(第2版),同時(shí)也參考了邵貝貝老師的《嵌入式實(shí)時(shí)操作系統(tǒng)μCOS-II》,斷斷續(xù)續(xù)一個(gè)月看了幾遍書,也在stm32上簡(jiǎn)單移植了μCos-ii,這里也談下自己的理解,如有紕漏,敬請(qǐng)指教。
1.什么是操作系統(tǒng),為什么要學(xué)操作系統(tǒng)?
? ? ?生活中PC上最常見的無非Windows、Mac OS、Linux等操作系統(tǒng),移動(dòng)設(shè)備上的Android、ios等。我們發(fā)現(xiàn)在這樣一個(gè)操作系統(tǒng)的平臺(tái)上,可以方便的進(jìn)行各種應(yīng)用程序的開發(fā),而可以不用考慮對(duì)底層硬件的操作。
? ? ?因此,操作系統(tǒng)是建立在系統(tǒng)硬件與用戶程序之間的一層重要的系統(tǒng)軟件,,是對(duì)硬件的第一層抽象與封裝,它向上層提供封裝好的API(應(yīng)用程序接口),同時(shí)還承擔(dān)著任務(wù)管理、事件管理、內(nèi)存管理、文件管理、CPU管理、內(nèi)存管理、I/O管理等核心功能。
? ? ?我認(rèn)為學(xué)習(xí)操作系統(tǒng)可以幫助我們避免抽象,更深入的理解計(jì)算機(jī)運(yùn)行方式,從而構(gòu)建出更加完整的知識(shí)體系。人們通過不斷的抽象和創(chuàng)造,從晶體管到門電路,發(fā)展到集成電路,再到硬件平臺(tái)和操作系統(tǒng)、人機(jī)接口,最后到與人打交道的應(yīng)用程序,一步步實(shí)現(xiàn)了計(jì)算機(jī)的應(yīng)用和普及。操作系統(tǒng)作為其中極其重要的一環(huán)是不可或缺的。
2.實(shí)時(shí)操作系統(tǒng)μCOS-II
? ? ? μCOS-II作為實(shí)時(shí)操作系統(tǒng)(RTOS),最大的特點(diǎn)顧名思義就是實(shí)時(shí)性,即操作系統(tǒng)從接收任務(wù)到完成任務(wù)所需要的時(shí)間是基本確定的,其中又分為硬實(shí)時(shí)系統(tǒng)(規(guī)定時(shí)間內(nèi)必須完成操作)和軟實(shí)時(shí)系統(tǒng)(按優(yōu)先級(jí)盡快完成造作即可)。其特點(diǎn)還包括多任務(wù)、多級(jí)中斷和優(yōu)先級(jí)調(diào)度機(jī)制。當(dāng)然,μCOS-II也可能是實(shí)時(shí)操作系統(tǒng)里代碼最精簡(jiǎn),最適合入門選手的操作系統(tǒng)了,不過麻雀雖小,五臟俱全,對(duì)于學(xué)習(xí)和了解整個(gè)操作系統(tǒng)的框架還是基本夠用的。盧老師書中指出的學(xué)習(xí)路徑值得推薦:
? ? ? ? ? ? 圖 1 ?μCos-ii嵌入式操作系統(tǒng)學(xué)習(xí)路徑
3. μCOS-II系統(tǒng)基本構(gòu)成
? ? ?先明確幾個(gè)重要概念:
1> 任務(wù):在μCos-ii中體現(xiàn)為一個(gè)進(jìn)程,是CPU執(zhí)行調(diào)度和分配的最小單元,在程序中一般就體現(xiàn)為一個(gè)相對(duì)獨(dú)立的函數(shù)。一般以循環(huán)的方式運(yùn)行,當(dāng)然運(yùn)行需要滿足一定的條件(包括處于就緒狀態(tài)并且在就緒任務(wù)中優(yōu)先級(jí)最高,不用等待其他事件發(fā)生或者需要等待的事件已經(jīng)發(fā)生,系統(tǒng)進(jìn)行了任務(wù)調(diào)度),其中任務(wù)調(diào)度也是μCos-ii的靈魂所在。需要說明的是,μCos-ii是多任務(wù)操作系統(tǒng),每個(gè)任務(wù)也會(huì)有很多不同的狀態(tài),這點(diǎn)后續(xù)還會(huì)再說明。
2> 事件:事件指在操作系統(tǒng)運(yùn)行過程中發(fā)生的重要事情,在μCos-ii中包括信號(hào)量、互斥信號(hào)量、事件標(biāo)志組、消息郵箱、消息隊(duì)列等5種,所有這5種事件或者說機(jī)制的設(shè)立都是為了一個(gè)目的:實(shí)現(xiàn)任務(wù)間的合作和無沖突的運(yùn)行,或者也叫作“任務(wù)間同步”。如果把各個(gè)任務(wù)比作一條產(chǎn)線上的工人,那么事件的機(jī)制就是總控臺(tái)下達(dá)的指令,只有所有工人按照指令工作,產(chǎn)線才能正常運(yùn)行。當(dāng)然,總控臺(tái)需要了解各個(gè)崗位上的狀況,所以這些信息也許要各個(gè)工人(任務(wù))來提供。
3> 時(shí)鐘:這個(gè)理解起來比較簡(jiǎn)單,就像單片機(jī)的晶振一樣,操作系統(tǒng)也需要這樣一個(gè)節(jié)拍信號(hào),作為系統(tǒng)的時(shí)鐘,也叫作時(shí)鐘節(jié)拍μCos-ii中這種機(jī)制一般都是設(shè)定好固定的定時(shí)器中斷(例如10ms一次),每次進(jìn)入中斷系統(tǒng)時(shí)鐘加1。這個(gè)10ms就是操作系統(tǒng)執(zhí)行任務(wù)調(diào)度和延時(shí)等操作的最小事件單位。
4> 中斷:與裸機(jī)開發(fā)中斷相應(yīng)類似,也是保證實(shí)時(shí)性的基礎(chǔ)。事實(shí)上,任務(wù)調(diào)度大多依靠中斷,更多的任務(wù)切換也發(fā)生在中斷中,例如中斷服務(wù)程序中執(zhí)行提交信號(hào)量或消息之類的代碼,就會(huì)時(shí)一些等待信號(hào)量和消息的代碼就緒,并在任務(wù)調(diào)度后得到運(yùn)行。
5> 臨界區(qū):任務(wù)中訪問共享資源的那一段程序稱為臨界區(qū),因?yàn)楣蚕碣Y源需要互斥訪問,即不允許兩個(gè)任務(wù)同時(shí)訪問互斥資源。這里有兩個(gè)重要的要求:
(1)臨界區(qū)不予許任務(wù)切換;
(2)臨界區(qū)代碼必須盡量短來保證實(shí)時(shí)性。
實(shí)現(xiàn)臨界區(qū)互斥訪問的機(jī)制一般有三種,后續(xù)還會(huì)再分析。
? ? ?概述就講到這里,簡(jiǎn)單總結(jié)下:
???? μCos-ii是一種多任務(wù)輕量化的實(shí)時(shí)嵌入式操作系統(tǒng),它通多任務(wù)管理(μCos-ii靈魂)實(shí)現(xiàn)多任務(wù)的調(diào)度和切換,利用事件管理,包括信號(hào)量、互斥信號(hào)量、事件標(biāo)志組、消息郵箱、消息隊(duì)列等機(jī)制實(shí)現(xiàn)任務(wù)間通信,從而確保多任務(wù)的合作和無沖突運(yùn)行。
轉(zhuǎn)載于:https://www.cnblogs.com/yunbianluoye/p/6183089.html
總結(jié)
以上是生活随笔為你收集整理的μCos-ii学习笔记1_概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 最简单的基于FFmpeg
- 下一篇: Linux 主机被入侵后的处理案例