天天看點

uCOS-Ⅱ簡介

  • 在嵌入式應用系統的設計中,實時作業系統的應用越來越受到重視。目前市場上可以選擇的實時作業系統很多,一些商用系統為使用者提供了非常豐富的功能,不僅包 括實時核心,同時還包括輸入輸出管理、檔案系統、網絡、調試軟體等。但是對于中小型的嵌入式應用系統來說,商用實時作業系統的成本太高,是以采用免費軟體 是最好的選擇。uC/OS-Ⅱ是一個免費的源代碼公開的實時嵌入式核心,它提供了實時系統所需的基本功能。其包含全部功能的核心部分代碼隻占用8.3K字 節,而且由于uC/OS-Ⅱ是可裁剪的,是以使用者系統中實際的代碼最少可達2.7K位元組,可謂短小精悍。uC/OS-Ⅱ不僅使使用者得到廉價的解決方案,而 且由于uC/OS-Ⅱ的開源特性,使用者還可以針對自己的硬體優化代碼,以獲得更好的性能。,bRM6z
  •        uC/OS-Ⅱ實際上是一個實時作業系統核心,隻包含了任務排程、任務管理、時間管理、記憶體管理和任務間的通信與同步等基本功能。沒有提供輸入輸出管理、 檔案系統、網絡之類的額外服務。但是由于uC/OS-Ⅱ的可移植性和開源性,使用者可以自己添加所需的各種服務。目前,已經出現了第三方為uC/OS-Ⅱ開 發的檔案系統、TCP/IP協定棧、使用者顯示接口等。;C`wO
  •        uC/OS-Ⅱ的任務排程是按搶占式多任務系統設計的,即它總是執行處于就緒條件下優先級最高的任務。為了簡化系統的設計,uC/OS-Ⅱ規定所有任務的 優先級必須不同,任務的優先級同時也唯一地辨別了該任務。即使兩個任務的重要性是相同的,它們也必須有優先級上的差異,這也就意味着高優先級的任務在處理 完成後必須進入等待或挂起狀态,否則低優先級的任務永遠也不可能執行。系統通過兩種方法進行任務排程:一是時鐘節拍或其它硬體中斷到來後,系統會調用函數 OSIntCtxSw()執行切換功能;二是任務主動進入挂起或等待狀态,這時系統通過發軟中斷指令或依靠處理器執行陷阱指令來完成任務切換,中斷服務例 程或陷阱處理程式的向量位址必須指向函數OSCtxSw()。;3yL
  •          uC/OS-Ⅱ最多可以管理64個任務,這些任務通常都是一個無限循環的函數。在目前的版本中,作者保留了優先級為0、1、2、3、 OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1、OS_LOWEST_PRIO的任務,是以用 戶可以同時擁有56個任務。uC/OS-Ⅱ提供了任務管理的各種函數調用,包括建立任務、删除任務、改變任務的優先級、挂起和恢複任務等。系統初始化時會 自動産生兩個任務:一是空閑任務OSTaskIdle(),它的優先級最低為OS_LOWEST_PRIO,該任務隻是不停地給一個32位的整型變量加 一;另一個是統計任務OSTaskStat(),它的優先級為OS_LOWEST_PRIO-1,該任務每秒運作一次,負責計算目前CPU的使用率。 XfIj
  •         uC/OS-Ⅱ要求使用者提供一個稱為時鐘節拍的定時中斷,該中斷每秒發生10至100次,時鐘節拍的實際頻率是由使用者控制的。任務申請延時或逾時控制的計 時基準就是該時鐘節拍。該時鐘節拍同時還是任務排程的時間基準。uC/OS-Ⅱ提供了與時鐘節拍相關的系統服務,允許任務延時一定數量的時鐘節拍或按時、 分、秒、毫秒進行延時。")fT
  •         對于一個多任務作業系統來說,任務間的通信與同步是必不可少的。uC/OS-Ⅱ提供了四種同步對象,分别是信号量、郵箱、消息隊列和事件。通過郵箱和消息 隊列還可以進行任務間的通信。所有的同步對象都有相應的建立、等待、發送的函數。但這些對象一旦建立就不能删除,是以要避免建立過多的同步對象以節約系統 資源。QLc6,]
  •        為了消除多次動态配置設定與釋放記憶體所引起的記憶體碎片,uC/OS-Ⅱ把連續的大塊記憶體按分區來管理。每個分區中都包含整數個大小相同的記憶體塊,但不同分區之 間記憶體塊的大小可以不同。使用者需要動态配置設定記憶體時,選擇一個适當的分區,按塊來配置設定記憶體。釋放記憶體時将該塊放回它以前所屬的分區。這樣,就能有效解決記憶體 碎片的問題。Qq.
  •         uC/OS-Ⅱ的大部分代碼是用ANSI C寫成的,隻有與處理器硬體相關的一部分代碼用彙編語言編寫。是以uC/OS-Ⅱ的移植性很強,可以在絕大多數8位、16位、32位微處理器、數字信号處 理器上運作。uC/OS-Ⅱ的移植并不複雜,隻要編寫4個彙編語言的函數、6個C函數再定義3個宏和1個常量,這些宏和函數都非常簡單,其中的5個C函數 甚至隻需聲明不必包含代碼。使用者可以根據需要自己編寫移植代碼。uC/OS-Ⅱ的網站上(www.uCOS-II.com ) 有 針對不同微處理器的移植代碼可供下載下傳。目前網站上提供的移植執行個體包括Intel公司的80x86、8051、80196等,Motorola公司的 PowerPC、68K、CPU32等,TI公司的TMS320系列,Zilog公司的z-80、z-180,還包括Analog Device公司、ARM公司、日立公司、三菱公司、飛利浦公司和西門子公司的各種微處理器。a"WFu
  • ?    uC/OS-Ⅱ是在PC機上開發的,C編譯器使用的是Borland C/C++ 3.1版,而且PC機是大家最熟悉的開發環境,是以在PC機上學習和使用uC/OS-Ⅱ是非常友善的。uC/OS-Ⅱ的網站上也提供了在PC機上運作uC /OS-Ⅱ的源代碼。但是由于C/C++運作庫和DOS本身的限制,在PC上運作uC/OS-Ⅱ時需要注意兩個問題。3y=k1@
  •         第一,由于DOS下的C編譯器提供的運作庫沒有考慮多線程應用的問題,運作庫中的全局變量和部分函數隻适用于單線程。這些變量和函數包括:errno、 _doserrno、strtok、strerror、tmpnam、tmpfile、asctime、gmtime、ecvt、fcvt等。在 uC/OS-Ⅱ中使用這些函數時要小心,要避免兩個任務同時調用這些函數,或者用信号量同步對這些函數的調用。+&i
  • ?     第二,DOS是不能重入的,就是說正在調用DOS服務期間,是不能再次調用DOS的,如果又進行了DOS調用,那麼肯定會引起系統崩潰。uC/OS-Ⅱ啟 動多任務後,如果兩個以上的任務進行了DOS調用或者調用了需要DOS的C/C++運作庫(如:printf、scanf等等),就有可能引起DOS重 入。是以在uC/OS-Ⅱ中,可以調用BIOS或直接操縱硬體,但要盡量減少DOS調用。如果必須要用DOS,最好隻有一個調用DOS的任務,或者用信号 量進行同步。.
  • ?    uC/OS-Ⅱ作為一個源代碼公開的實時嵌入式核心,對我們學習和使用實時作業系統提供了極大的幫助。而uC/OS-Ⅱ自身也是以獲得了快速的發展,許多 開發者已經成功地把uC/OS-Ⅱ應用于自己的系統之中。随着uC/OS-Ⅱ的不斷完善,它必将會有更加廣闊的應用空間