small rtos51

RTOS51是為51系列單片機而編寫的。 RTOS51的工作原理。 RTOS51下驅動程式的原始碼。

Small RTOS51是為51系列單片機而編寫的。它是完全免費的、原始碼公開的多任務實時作業系統。它可在無任何外部數據存儲器的單片80C51系統上運行,並且是可移植的。全書分兩部分。第一部分為基礎篇,介紹Small RTOS51和一些基本概念,並詳細分析Small RTOS51的工作原理。第二部分為套用篇,給出部分常用硬體在Small RTOS51下驅動程式的原始碼。這些原始碼在DP51單片機仿真實驗儀上全部調試通過,且只要經過很少的改動,或是不改動,就可以在其他環境下使用。套用篇還通過對這些原始碼的分析,讓讀者理解基於RTOS的編程方法,並給出完整的例子讓讀者全面掌握基於RTOS的編程方法。

在激烈的競爭下,公司(特別是小公司)往往因為市場的壓力,要求開發人員在較短的時間內把產品開發出來,從而導致產品不穩定和維護困難。我使用8051系列單片機,在當時是用彙編語言編寫程式。我於1998年開始接觸C51高級語言,從1999年開始直到現在,一直使用C語言編寫8051的程式。在此期間,我經常思考如何在保證性能的前提下提高開發效率,並降低程式的維護難度。根據我的經驗,使用C語言的確會提高開發效率,也能提高軟體的可維護性;但僅僅依靠程式語言還遠遠不夠,應該要建立自己的開發平台。在平台上開發,才能事半功倍。嵌入式實時作業系統(RTOS)就是一個很好的嵌入式軟體的開發平台。近年來,隨著半導體工業的發展,32位單片機的價格持續降低。在某些套用中,使用32位單片機的總體成本更低,而在32位單片機中不使用RTOS幾乎是不可能的。因而,在嵌入式系統中使用RTOS是大勢所趨。
到2001年,我下決心學習RTOS。當時我仍舊是用8051系列單片機開發產品,於是想通過一個基於51單片機的RTOS來學習它。當時基於51單片機的RTOS中比較有名氣的有Keil C51所帶的RTX Full和RTX Tiny及網友移植的μC/OSII。以下對這幾個RTOS進行簡單的介紹。
RTX51是一個用於8051系列單片機的多任務實時作業系統。有兩個不同的RTX51版本可以利用。其中RTX51 Full使用四個任務優先權完成同時存在時間片輪轉調度和搶先的任務切換。RTX51工作在與中斷功能相似的狀態下,信號和信息可以通過信箱系統在任務之間互相傳遞。您可以從一存儲池中分配和釋放記憶體;可以強迫一個任務等待中斷、逾時,或者是從另一個任務或中斷髮出信號、信息。而RTX51 Tiny是一個 RTX51的子集,可以很容易地在沒有任何外部存儲器的單片8051系統上運轉;但它僅支持時間片輪轉任務切換和使用信號進行任務切換(即非搶占式的),不支持搶占式的任務切換,不包括訊息佇列,沒有存儲器池分配程式。
μC/OSII是著名的、源碼公開的實時核心,可用於各類8位、16位和32位單片機或DSP。從μC/OS算起,該核心已有10餘年套用史,並在諸多領域得到廣泛套用。μC/OSII是一個完整、可移植、可固化和可剪裁的占先式實時多任務核心。μC/OSII是用ANSI的C語言編寫的,包含一小部分彙編代碼,使之可以供不同架構的微處理器使用。至今,從8位到64位,μC/OSII已在超過40種不同架構的微處理器上運行。
8051系列單片機一般只有很少的ROM和RAM資源,如P89C51隻有4 KB Flash和128位元組RAM。但RTX51 Full自身代碼有6 K多位元組,且需要大量外部RAM,又無原始碼,很多時候不實用,不利於學習。RTX Tiny雖然小(自身占用900多位元組ROM),但是任務沒有優先權和中斷管理,也無原始碼,也不太實用(目前Keil已經把RTX Tiny的源碼提供給其正版用戶,全部是彙編代碼),也不利於學習。而μC/OSII有原始碼,也有配套圖書,比較利於學習。但是它規模太大,又需要大量外部RAM,而且所有函式都必須是可重入函式,用在8051這類小片內RAM的單片機上有點勉強,在8051系列單片機上不太實用。
於是為了學習RTOS,也為了建立自己的開發平台,到2002年春節,我下決心自己編寫一個基於8051系列單片機的RTOS,這就是Small RTOS51 V 0.50版。它使用了RTX51 Tiny的堆疊管理機制,並像μC/OSII一樣是搶占式的。雖然它為51系列單片機編寫,但比較容易移植到其他CPU上。
到2002年6月,經過一些實踐的檢驗,Small RTOS51升級到 V 1.00版,這也是公開發布的第一個版本。目前Small RTOS51最新版本為V 1.12.1版,V 120.0版本也已基本完成,在本書發售時應該已經發布,讀者可以到http://www.zlgmcu.com/philips/philipsembedsys.asp下載最新版。目前Small RTOS51的所有版本均可以免費在任何領域使用,詳細情況請參考使用許可證(見附錄A)。V 1.20.0版與V 1.12.1版相比,主要有以下改變:
支持任務動態建立與刪除,函式功能向一般的RTOS靠攏;支持C51的重入函式(用關鍵字reentrant定義的函式);支持動態記憶體分配(使用動態記憶體分配的任務必須使用重入棧),並增加一個對PHILIPS公司的ARM(LPC2106/LPC2105/LPC2104)的移植。

相關詞條

熱門詞條

聯絡我們