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