久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 嵌入式操作系統(tǒng)μC/OS-III相關(guān)改動(dòng) [打印本頁(yè)]

作者: liuyang    時(shí)間: 2013-11-22 00:19
標(biāo)題: 嵌入式操作系統(tǒng)μC/OS-III相關(guān)改動(dòng)
       邵老師長(zhǎng)期從事單片機(jī)和嵌入式系統(tǒng)教學(xué)和應(yīng)用工作,并負(fù)責(zé)清華大學(xué)飛思卡爾實(shí)驗(yàn)室工作。邵老師與大家分享了μC/OS的發(fā)展經(jīng)歷,即將發(fā)布的μC/OS-III的細(xì)節(jié),以及他對(duì)未來(lái)嵌入式操作系統(tǒng)的認(rèn)識(shí)。
以下是文字實(shí)錄。

       大家好,我講講μC/OS-III,原來(lái)是μC/OS-II,現(xiàn)在到了μC/OS-III。今年第一期《電子產(chǎn)品世界》里有一篇調(diào)查,有627份中國(guó)嵌入式系統(tǒng)工程師的調(diào)查問卷,顯示出現(xiàn)在用的最多的38%使用Linux,排在第二個(gè)就是μC/OS-II占到34%,其中μC/OS-II還是專門為嵌入式設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng),說明μC/OS-II從前幾年進(jìn)到中國(guó)以來(lái),是有影響力的操作系統(tǒng),據(jù)我了解,在美國(guó)好像還沒有這么多的影響。影響力比較大的是中國(guó)和印度這樣大的發(fā)展中國(guó)家,也包括日本和韓國(guó)。我們可以看到幾乎能想到的CPU,在網(wǎng)上都可以下載到、移植的范例,這還不是全部,很多像Altera軟核里面都有μC/OS的移植。
       最早μC/OS是一本書,是93年出的,95年我到意大利國(guó)際物理中心準(zhǔn)備做instructor,開一個(gè)叫做《嵌入式實(shí)時(shí)系統(tǒng)在物理學(xué)應(yīng)用》的一個(gè)講習(xí)班,講習(xí)班大部分是印度人、中國(guó)人等,講課老師大部分從歐洲核研究中心和美國(guó)大學(xué)來(lái)的,其中就拿了這個(gè)東西作為教材。它最早是為摩托羅拉68HC11增強(qiáng)型單片機(jī)寫的,管理四個(gè)任務(wù),用查表的辦法來(lái)確定優(yōu)先級(jí)。90%以上的代碼是自己寫的,和硬件無(wú)關(guān),相關(guān)的代碼不到200行,書上提供了一個(gè)可以在PC上跑的一個(gè)8088范例,可裁剪可固化,其實(shí)μC/OS這本書是個(gè)很好的教材,只有261頁(yè),其中有100頁(yè)是源代碼,解釋了150頁(yè)。后來(lái)這本書,96年以后,在我們實(shí)驗(yàn)室,給研究生用的較多,一直沒找到哪個(gè)出版社愿意買它的版權(quán)。
到了2000年的時(shí)候,再想回到μC/OS的時(shí)候,已經(jīng)不太可能,μC/OS-II出來(lái)了,后來(lái)第二年,電力出版社買了版權(quán),我們就翻譯了一下,到了第三本書,μC/OS-II這本書,這個(gè)就有了差不多600頁(yè),而且把源碼附在光盤上,就被美國(guó)航空航天管理局認(rèn)可的可以上直升飛機(jī)的一個(gè)操作系統(tǒng),是一個(gè)很好用的操作系統(tǒng),對(duì)于學(xué)校教學(xué)來(lái)說,這個(gè)功能很強(qiáng),又很復(fù)雜。在教學(xué)上不如老版本了。這是第三本書的中譯文,2003年出的。我們看它的發(fā)展,在μC/OS一開始,書上有個(gè)μC/OS的故事,講到他寫的這個(gè)東西,當(dāng)時(shí)發(fā)表文章都沒人理他,后來(lái)放到網(wǎng)上,下載的人很多,慢慢得到認(rèn)可,所以最早1.08的版本,是放在網(wǎng)上,是不要版權(quán)的。到了1.10版本以后,被認(rèn)可了,如果想要拿去牟利的話,就要給他一些回報(bào)。但作為教學(xué)研究,不謀利的時(shí)候,還是可以使用的。μC/OS也好,μC/OS-II也好,它是基于優(yōu)先級(jí)的,用查表的算法去管理64個(gè)任務(wù),只能取0~63這64個(gè)優(yōu)先級(jí)。今年3月,已經(jīng)有μC/OS-III發(fā)布可以使用了。
       那么從μC/OS-II到μC/OS-III有哪些不同的地方呢?增加了什么,我們看改動(dòng)還是很大的。一個(gè)是原來(lái)只有0~63個(gè)優(yōu)先級(jí),而且優(yōu)先級(jí)不能重復(fù),現(xiàn)在允許幾個(gè)任務(wù)使用同一個(gè)優(yōu)先級(jí),在同一個(gè)優(yōu)先級(jí)里面,支持時(shí)間片調(diào)度法;第二個(gè)是允許用戶在程序運(yùn)行中動(dòng)態(tài)配置實(shí)時(shí)操作系統(tǒng)內(nèi)核資源,比如,任務(wù)、任務(wù)棧、信號(hào)量、事件標(biāo)志組、消息隊(duì)列、消息數(shù)、互斥型信號(hào)量、存儲(chǔ)塊劃分和定時(shí)器,可以在程序運(yùn)行中變更。這樣,用戶可以避免在程序編譯過程中出現(xiàn)資源不夠分配的問題。在資源復(fù)用上,也做了一些改進(jìn)。μC/OS-II中,最多任務(wù)數(shù)有64個(gè),到了版本2.82以后是256個(gè),μC/OS-III中,用戶可以由任意多的任務(wù)、任意多的信號(hào)量、互斥型信號(hào)量、事件標(biāo)志、消息列表、定時(shí)器和任意分配的存儲(chǔ)塊容量,僅受限于用戶CPU可以使用的RAM量。這個(gè)也是一個(gè)很大的擴(kuò)展。(問:邵老師,它的這個(gè)數(shù)是啟動(dòng)時(shí)就固定的,還是啟動(dòng)后隨便定?)它是配置的時(shí)候可以自由定義的,只有你的RAM足夠大的話。第四點(diǎn)是增加了很多功能,功能總是越來(lái)越多的,大伙可以看一下的。原來(lái)這些功能在μC/OS-II里面是沒有的。  
       下面一點(diǎn):除每個(gè)任務(wù)的最長(zhǎng)關(guān)中斷時(shí)間,內(nèi)在性能測(cè)試允許用戶測(cè)得系統(tǒng)的最長(zhǎng)關(guān)中斷時(shí)間。就是它提供了一些工具可以測(cè)量每個(gè)任務(wù)關(guān)中斷的時(shí)間;用戶在測(cè)得每個(gè)任務(wù)的最長(zhǎng)禁止調(diào)度時(shí)間基礎(chǔ)上,可以測(cè)得系統(tǒng)禁止任務(wù)調(diào)度的最長(zhǎng)時(shí)間,也是說做了個(gè)測(cè)量;每次發(fā)出的信息都帶有時(shí)間戳,用戶也容易得到任務(wù)級(jí)的響應(yīng)時(shí)間;性能測(cè)試還包括任務(wù)切換次數(shù)計(jì)數(shù)器和每個(gè)任務(wù)的CPU使用率等,這個(gè)在調(diào)試的時(shí)候,還是蠻有用的。第六,μC/OS-III設(shè)計(jì)成能方便地按照CPU架構(gòu)優(yōu)化,特別是其數(shù)據(jù)類型可按照CPU能適應(yīng)的最佳位數(shù)寬度修改(8-16-32);選擇和確定優(yōu)先級(jí)的算法可以用匯編語(yǔ)言寫,以發(fā)揮一些有特殊指令的CPU的優(yōu)勢(shì),有很多CPU有置位和復(fù)位指令,計(jì)數(shù)器計(jì)到零,還有就是找出第一個(gè)不為零位指令等。第七條,有很多數(shù)需要自行處理的內(nèi)部據(jù)結(jié)構(gòu)和變量,是通過給調(diào)度器上鎖的方式保護(hù)這些臨界段代碼的,不使用關(guān)中斷的方式,內(nèi)核關(guān)中斷的時(shí)鐘周期幾乎為零,這就保證了μC/OS-III能夠響應(yīng)哪些最快的中斷等。第八,μC/OS-III還支持內(nèi)核覺察式調(diào)試,用戶友好地使內(nèi)置內(nèi)核覺察調(diào)試器檢查、顯示μC/OS-III的變量、數(shù)據(jù)結(jié)構(gòu)、支持μC/Probe工具在程序運(yùn)行過程中動(dòng)態(tài)顯示修改各種變量。從這些改動(dòng)上來(lái)看,μC/OS-III還是比以前做了很大的優(yōu)化的,和以前的產(chǎn)品有很多的區(qū)別。
       我覺得從小內(nèi)核μC/OS-II到μC/OS-III,已經(jīng)有17年過去了,很多性能在往大的比較出名的操作系統(tǒng),像VxWorks、Wind River上靠攏,何小慶告訴我Wind River最近被Intel收購(gòu)了,看了Wind River的基本情況,應(yīng)該說VxWorks是公認(rèn)的最好的嵌入式RTOS,是一個(gè)完整的自成體系的軟件包,但是在過去很多年,它曾經(jīng)是一個(gè)靠BSP支持的黑盒子,用戶可以不關(guān)心這些源碼,它是這樣一種思路。近年來(lái)也在公開源碼。
       看到消息說,Wind River打算進(jìn)一步轉(zhuǎn)向Linux用于ARM和PowerPC,Intel為支持多核設(shè)計(jì),打算發(fā)展軟件,如嵌入式應(yīng)用、Linux。多核應(yīng)用是為了INTEL的重點(diǎn)。面前μC/OS-II的商業(yè)模式還是主要靠出書,讓學(xué)生學(xué)習(xí)使用,現(xiàn)在它的團(tuán)隊(duì)有10人左右,比較小。我們知道如果一個(gè)軟件沒人維護(hù),也是沒有生命力的,它僅僅維護(hù)一個(gè)內(nèi)核,在第三方有很多單位和它合作,做很多其他的事情,像人機(jī)界面、文件系統(tǒng)、TCP/IP等等,從網(wǎng)站上我們看到,大部分都是第三方合作開發(fā)的,我看第三方的報(bào)價(jià)也都不便宜,都在6000美元以上,當(dāng)然有很多自由軟件也在和它在結(jié)合。用戶根據(jù)自己需要可以去組合。商業(yè)模式這些事情,其實(shí)我并不是很懂,我教書就想用老的,教書挺好的,所以商業(yè)模式這一塊我也是瞎說,呵呵。  
       思考和體會(huì),經(jīng)過17年,從1個(gè)小內(nèi)核發(fā)展成為1個(gè)可以和大的商業(yè)RTOS媲美的專門用于嵌入式系統(tǒng)的成熟的RTOS體系,一個(gè)特點(diǎn)就是開放源代碼,讓很多工程師,從學(xué)習(xí),到認(rèn)識(shí),到使用。作為一個(gè)軟件,一個(gè)內(nèi)核,就需要維護(hù),需要團(tuán)隊(duì),它的團(tuán)隊(duì)現(xiàn)在很小,大概有10人;需要第三方的支持,靠這樣的形式來(lái)組織起來(lái)的;也需要和它發(fā)展相適應(yīng)的商業(yè)模式;也會(huì)是對(duì)VxWorks等大公司產(chǎn)品的一種沖擊。我就總結(jié)了這么幾條。關(guān)于μC/OS的實(shí)時(shí)性問題,其實(shí)有一個(gè)函數(shù)就是delay這個(gè)函數(shù),如果有64個(gè)任務(wù)的話,就有64個(gè)需要delay的計(jì)數(shù)器,每次時(shí)間中斷的時(shí)候,都要來(lái)查這張表,一個(gè)一個(gè)地把它去delay,任務(wù)多的時(shí)候,時(shí)間就長(zhǎng),任務(wù)少的時(shí)候,時(shí)間就少,這是μC/OS唯一達(dá)不到硬實(shí)時(shí)的地方,。在這個(gè)地方上,還不能說實(shí)時(shí)性還是硬實(shí)時(shí),除非你把時(shí)間定義為這個(gè)表上的時(shí)間,解決辦法呢?這是我們最近做的一些工作,就是用雙核16位的freescale的HC12S這樣一個(gè)單片機(jī),它有一個(gè)協(xié)處理器是專門來(lái)響應(yīng)中斷的,把定時(shí)這個(gè)功能放到協(xié)處理器來(lái)做,一個(gè)是定時(shí)器timer可以很短,從10毫秒可以到微秒級(jí),可以到50微秒,我們做了一個(gè)測(cè)試,就是把時(shí)鐘節(jié)拍放到33微秒或者62微秒這樣來(lái)處理的話,如果不加協(xié)處理器的話,時(shí)鐘節(jié)拍就占到53%,那就沒法用了。如果用協(xié)處理器做這些事,協(xié)處理器處理這些事大概在75微秒,這樣就把硬實(shí)時(shí)用雙內(nèi)核就實(shí)現(xiàn)了,所以雙內(nèi)核對(duì)這個(gè)還是很有好處的。
實(shí)時(shí)多任務(wù)操作系統(tǒng)uCOS-III的特點(diǎn)
       uCOS-III是一個(gè)全新的實(shí)時(shí)內(nèi)核,源于世界上最流行的實(shí)時(shí)內(nèi)核uC/OS-II,除了提供熟悉的一系列系統(tǒng)服務(wù),全面修訂了API接口,使uC/OS-III更直觀,更容易使用。該產(chǎn)品可以廣泛應(yīng)用于通信,工業(yè)控制,儀器儀表,汽車電子,消費(fèi)電子,辦公自動(dòng)化設(shè)備等的設(shè)計(jì)開發(fā)。
       uCOS-III是一個(gè)搶占的多任務(wù)內(nèi)核,支持優(yōu)先級(jí)相同的任務(wù)輪詢調(diào)度。它可以移植到許多不同的CPU架構(gòu)。uC/OS-III是專為嵌入式系統(tǒng)設(shè)計(jì),可以與應(yīng)用程序代碼一起固化到ROM中。
       uCOS-III可在運(yùn)行時(shí)配置實(shí)時(shí)操作系統(tǒng)。所有內(nèi)核對(duì)象,如任務(wù),堆棧,信號(hào)量,事件標(biāo)志組,消息隊(duì)列,消息數(shù)量,互斥信號(hào)量,內(nèi)存分區(qū)和定時(shí)器,由用戶在運(yùn)行時(shí)進(jìn)行分配。這可以防止在編譯的時(shí)候分配過多資源。
      uCOS-III允許有任意數(shù)量的任務(wù),信號(hào)量,互斥信號(hào)量,事件標(biāo)志,消息隊(duì)列,定時(shí)器和內(nèi)存分區(qū)(僅受限于處理器可用的RAM大小)。
       uCOS-III添加了許多非常有用的功能,如:可嵌套互斥信號(hào)量,可嵌套任務(wù)暫停,不需要信號(hào)量可發(fā)信號(hào)給任務(wù),不需要消息隊(duì)列可發(fā)送消息給任務(wù),等待多個(gè)內(nèi)核對(duì)象,針對(duì)'errno'或其他任務(wù)的特定狀況的任務(wù)注冊(cè),內(nèi)置的性能測(cè)量,死鎖預(yù)防,用戶定義的鉤函數(shù)等。
       uCOS-III還內(nèi)置了支持內(nèi)核感知調(diào)試。允許內(nèi)核感知調(diào)試器以用戶友好的方式檢測(cè)和顯示uC/OS-III的變量和數(shù)據(jù)結(jié)構(gòu),也允許uC/Probe在運(yùn)行時(shí)顯示和改變變量。
       μCOS-III是可以搶占的多任務(wù)內(nèi)核,始終運(yùn)行進(jìn)入就緒態(tài)的最重要的任務(wù)。μC/OS-III支持無(wú)限數(shù)量的任務(wù),并允許在運(yùn)行時(shí),監(jiān)測(cè)堆棧增長(zhǎng)的任務(wù)。它還支持無(wú)限數(shù)量的優(yōu)先級(jí)。然而,通常情況下,對(duì)于大多數(shù)應(yīng)用,32至256個(gè)不同的優(yōu)先級(jí)是足夠的。
       對(duì)于今天的設(shè)計(jì),特別有用的是具有同等優(yōu)先級(jí)的輪轉(zhuǎn)調(diào)度的任務(wù)。μC/OS-III允許多個(gè)任務(wù)運(yùn)行在同一優(yōu)先級(jí),每一個(gè)任務(wù)運(yùn)行由用戶指定的時(shí)間片。每個(gè)任務(wù)可以定義自己的時(shí)間單元,如果其完整的時(shí)間單元并不是必需的,每個(gè)任務(wù)可以放棄時(shí)間片。μC/OS-III還允許無(wú)限數(shù)量的內(nèi)核對(duì)象,如任務(wù),信號(hào)量,互斥,信號(hào)旗,消息隊(duì)列,計(jì)時(shí)器和內(nèi)存分區(qū)。μC/OS-III大部分是運(yùn)行時(shí)可以配置。
       μC/OS-III提供接近零的中斷停用時(shí)間。μC/OS-III有一些內(nèi)部數(shù)據(jù)結(jié)構(gòu)和變量,需要獲得原子訪問權(quán)(不能夠被打斷的)。這些關(guān)鍵區(qū)域的保護(hù)由鎖調(diào)度,而不是由禁用中斷實(shí)現(xiàn)。中斷被禁用的時(shí)鐘周期幾乎為零,確保了實(shí)時(shí)操作系統(tǒng)將能夠響應(yīng)一些最快的中斷源。
       允許任務(wù)使用同一優(yōu)先級(jí)。對(duì)同一優(yōu)先級(jí)的多個(gè)任務(wù),采用時(shí)間片調(diào)度法。
       可以有任意多的任務(wù),任意多的信號(hào)量(semaphore)、互斥型信號(hào)量(mutex)、事件標(biāo)志(event flag)、消息隊(duì)列(queue)、定時(shí)器(timer)和任意分配的存儲(chǔ)塊容量(僅受限于用戶 CPU 可以使用的 RAM 量)
       可嵌套的互斥型信號(hào)量,可嵌套的任務(wù)掛起。
       向無(wú)信號(hào)量請(qǐng)求的任務(wù)發(fā)送信號(hào)量,向無(wú)消息隊(duì)列請(qǐng)求的任務(wù)發(fā)送消息。
       任務(wù)可被內(nèi)核的多個(gè)元素掛起(多重掛起)。
       增加為其他任務(wù)的狀態(tài)或“出錯(cuò)代碼”服務(wù)的任務(wù)。
       內(nèi)在的性能測(cè)試。不僅能得到每個(gè)任務(wù)的最長(zhǎng)關(guān)中斷時(shí)間和最長(zhǎng)禁止調(diào)度時(shí)間,還能得到系統(tǒng)的最長(zhǎng)關(guān)中斷時(shí)間和最長(zhǎng)禁止調(diào)度時(shí)間。
       選擇和確定優(yōu)先級(jí)的算法可以用匯編語(yǔ)言寫,以發(fā)揮一些有特殊指令的CPU的優(yōu)勢(shì),如:置位和復(fù)位指令;計(jì)數(shù)器清零(CLZ);找出第一個(gè)不為零位(FF1)指令等。
       訪問臨界資源的方法由關(guān)中斷改為給調(diào)度器上鎖的方式,使得內(nèi)核關(guān)中斷的時(shí)鐘周期數(shù)幾乎為零,保證了 μC/OS-III 能以最快的速度響應(yīng)中斷。


作者: hclin    時(shí)間: 2015-1-7 00:28
Good job !!!




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久免费高清视频 | 五月婷婷综合网 | 欧美日韩a | 国产免费一级片 | 日韩久久一区 | 日本三级韩国三级美三级91 | 黄色a毛片 | 青青国产 | 日韩欧美三级 | 天天舔天天干 | 欧美精品一区二区三区四区 | 中文字幕免费在线 | 国产操操操 | 精品国产乱码久久久久久蜜柚 | 国产乱码一区二区 | www.夜夜操| 久久机热这里只有精品 | av手机在线观看 | 日日干干| 国产一区在线视频 | 欧美一级做性受免费大片免费 | 久久免费精品 | 欧美一级日韩一级 | 国产午夜一区二区 | 欧美色图一区二区三区 | 日韩一区中文字幕 | www.亚洲国产| 精品国产久 | 玖玖视频在线 | 精品国产欧美一区二区三区成人 | 日韩女优在线 | 91精品国产综合久久久久久 | 秋霞福利视频 | 日本成人一区二区 | 久久久久成人网 | 成人a视频| 蜜臀久久99精品久久久久宅男 | 糖心vlog精品一区二区 | 日韩一区二区免费视频 | 午夜视频一区 | 天天干天天操天天爽 |