1. 程式人生 > >uCOS III 和 uCOS II的區別

uCOS III 和 uCOS II的區別

邵貝貝:嵌入式作業系統μ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微秒,這樣就把硬實時用雙核心就實現了,所以雙核心對這個還是很有好處的。

       我就介紹到這,最後是Jean Labrosse他們兩口子4月7號到中國玩,到我們實驗室看看,照片是Labrosse和他夫人,其他是我們實驗室青年教師和學生。我就說到這,謝謝!


相關推薦

uCOS III uCOS II區別

邵貝貝:嵌入式作業系統μC/OS-III 作者:邵貝貝 來源:嵌入式系統聯誼會        邵老師長期從事微控制器和嵌入式系統教學和應用工作,並負責清華大學飛思卡爾實驗室工作。邵老師與大家分享了μC/OS的發展經歷,即將釋出的μC/OS-III的細節,以及他對未來嵌入式作業系統的認識。 以下是文字實錄。

emWin萬年歷,含uCOS-IIIFreeRTOS兩個版本

src free 鬧鐘 font ont 技術分享 ucos-ii 實驗 tro 第8期:萬年歷配套例子:V6-914_STemWin提高篇實驗_萬年歷(uCOS-III)V6-915_STemWin提高篇實驗_萬年歷(FreeRTOS) 例程下載地址: http://

基於emWin的WAV,MP3軟解軟件播放器,帶類似千千靜聽頻譜,含uCOS-IIIFreeRTOS兩個版本

歌曲列表 span 事件 分享圖片 info 復制粘貼 說明 模態 界面 第9期:WAV,MP3軟解播放器,帶類似千千靜聽頻譜配套例子:V6-916_STemWin提高篇實驗_WAV,MP3軟解播放器,帶類似千千靜聽頻譜(uCOS-III)V6-917_STemWin提高篇

UCOS-III 的問題:關鍵字 OSPend OSPost 的使用

在使用UCOS-III的過程中,在一個函式中,首先OSPend 一個訊息佇列是成功的,接著OSPost另一個訊息佇列一直不成功,在另外一個函式中測試post    訊息佇列是成功的,由於本人也是新手,這可能是一個bug吧

ucos-III基礎教程匯總

html -s ont 基礎教程 ucos-ii htm itl .html post 目錄:  1.ucos-III前言 ucos-III基礎教程匯總

《基於Cortex-M4的ucOS-III的應用》課程設計 結題報告

設計思路 分享 流程圖 處理 肩膀 wstring ID eva 概念 《基於Cortex-M4的ucOS-III的應用》課程設計 結題報告 小組成員姓名:20155211 解雪瑩 20155217 楊笛 20155227 辜彥霖 指導教師:婁嘉鵬 一、設計方案及可行性

uCOS-III任務堆疊溢位檢測及統計任務堆疊使用量的方法【轉載】

此文章轉載於點選進入原創地址 uCOS-III任務堆疊溢位檢測及統計任務堆疊使用量的方法 在作業系統任務設計的時候,通常會遇到一個比較麻煩的問題,也就是任務堆疊大小設定的問題,為此我們我需要知道一些問題: 1.1. 任務堆疊一但溢位,意味著系統的崩潰,在有MMU或者MPU的

Modelsim SE Quartus II 編譯器(綜合器)的區別

        當對目標模組進行RTL描述後,習慣先會用Modelsim做一下功能模擬。當我們寫好Tensbench檔案,直接在Modelsim SE中對原始檔(design和Testbench)進行編譯時,如果原始檔中存在相應的語法錯誤或

STM32F103移植uCOS-III,keil4除錯卡在CPU_TS_TmrRd函式過不去

最近專案需要在STM32F103板子上移植uCOS-III系統,移植過程參考安富萊STM32F407之uCOS-III教程,參考網址 移植uCOS-III系統 雖然教程是關於F407的板子,但大體是相同的。為了省事,我直接在原來的工程中加上uCOS-III原始碼。首先在工程目錄下

uCOS-III學習筆記——LPC1768移植

4.在bsp.h中,將部分巨集和函式宣告刪除,包括按鍵的巨集,LED的函式,PB的函式,按鍵的函式,只保留BSP_Init函式和BSP_Start函式.BSP_Init()函式對硬體進行配置,在主要函式CPU初始化之後進行呼叫; BSP_Start()函式獲取CPU時鐘,並進行systick初始化,在初始任務

UCOS-III學習筆記——OS獲取CPU控制權深入理解

μC/ OS III Version: v3.03.01 μC/ CPU Version: v1.29.01 μC/ LIB Version: v1.37.00 FOR: NXP LPC1768 CPU 在UCOS-III學習筆記——main函式中的配

ucos iii學習筆記——為什麼選擇ucos iii

首先我們得先討論前後臺系統和RTOS(Real Time OS)的區別。前後臺系統,也即是我們所說的裸機程式,它的結構通常包括一個死迴圈和若干個中斷服務程式,直接上圖,我們有一個直觀認識: 假如Task2是一個延時任務,當程式執行到Task2時,CPU只能乾等,這樣就浪費

【 專欄 】- 嵌入式實時作業系統UCOS-III

我的學校:東南大學(福建大三本) [注1:如有疑問,歡迎郵件或QQ交流] [注2:CSDN登入頻繁,也可直接在部落格評論處留言] The best preparation for tomorrow is doing your best today!

ucos-iii學習之就緒列表以及新增任務到就緒佇列

1.就緒列表 準備好執行的任務就被放到就緒列表中。 就緒列表是一個數組(OSRdyList[]),共有OS_CFG_PRIO_MAX條記錄,記錄的資料型別為OS_RDY_LIST,其中包含三個變數:

ucos-iii學習之實時作業系統(RTOS)

1.實時作業系統的概念? 實時作業系統除了包含一個實時多工核心外,還提供了其他的高層系統服務函式,如檔案系統,協議棧,圖形使用者介面庫(GUI)等。 2.關於Micrium? Micrium提供了

IAR cortex-M3 +ucos-III問題集

移植:IAR cortex-M3 +ucos-III 時遇到的一些問題,歸根到底是編譯器不是很熟悉,這裡記錄下.... 下載方式: IAR設定的下載連結方式 與 板子的實際環境不統一,同樣報錯:"Failed to get CPU status after 4 retrie

ucos-iii學習之目錄與檔案

ucos-iii的應用具體需要哪些原始檔? 1.軟體(韌體) (1)應用程式 通常能在應用程式碼中找到main()函式。 (2)CPU 半導體廠商通常以原始碼的形式提供庫函式,用於訪問他們生產

uCOS-III的任務狀態詳解

OS_TASK_STATE_SUSPENDED : 任務通過呼叫 OSTaskSuspend()函式能夠掛起自己或其他任務,呼叫 OSTaskResume()是使被掛起的任務回覆執行的唯一的方法。掛起一任務意味著該任務再被恢復執行以前不能夠取得CPU的使用權,類似強行暫停一個任務。OS_TASK_STATE_

UCOS iii 任務創建_刪除_掛起_恢復

大小 suspend 沒有 tick 恢復 gif 時間片 堆棧 時間 任務創建: 1 //創建開始任務函數 2 OSTaskCreate((OS_TCB * )&StartTaskTCB, //任務控制

cookie session 的區別詳解

重復 處理方式 一行 所有 有效 依據 是把 存儲 一個 二者的定義: 當你在瀏覽網站的時候,WEB 服務器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇, 都紀錄下來。當下次你再光臨同一個網站,WEB 服務器會先看看有沒有它上次留下的