1. 程式人生 > >RTOS 入門資料 整理

RTOS 入門資料 整理

1 . 周航慈有一本基於UCOS 應用的書不錯,可以入門,論壇上也有,你看看吧

2 . AVRX
3 . Small RTOS51原理及應用.rar
http://www.51hei.com/f/small_rtos1.12.1.zip

4.基於Easy51RTOS亮度變化的複雜流水燈.rar

5 . C51多工程式設計思想
6 . 老生常談—一種裸奔多工模型
7 . 基於51微控制器的C語言多工操作 完美版
8. Easy51RTOS的原理
9. 這是一本嵌入式實時作業系統Small RTOS51原理及應用
陳明計 周立功 等編著
北京航空航天大學出版社出版發行

10 . 這個OS據說有bug的,最好不要用在產品上面…
如果對實時性要求不高的話,可以考慮protothread…

11 . 如果RTX51-Tiny也算,我10年前就用了,能夠跑在無擴充套件的AT89C52上,5-6個任務。其他的OS只能望洋興嘆

12 .
第一次用usmartX RTOS,兩個實驗(LED閃爍,歌曲菊花臺)

(WinAVR2007+ATmega16,內部RC 8Mhz)

http://usmartx.sourceforge.net/

What is uSmartX ?

13 .
學習本論壇文章《建立一個屬於自己的AVR的RTOS》,覺得是我目前看過最通俗易懂的RTOS設計講解文章,頓時提起了我重新學習RTOS的興趣!同時也為了方便以後記憶,於是將所學的知識進行積累,沉澱,最終匯聚成自己的寶貴財富。本文只是以圖文的形式對原文內容加以闡述,並順帶自己的一些小總結,文中所使用的原始碼均來自於原文,並無抄襲之意。由於使用Visio編輯,排版佈局欠佳,還請讀者見諒。
uSmartX is a non-preemptive

, multitasking, priority based RTOS. It features necessary mechanisms for inter-task communication and basic task and time control functions. uSmartX is targeted for small foot-print embedded designs. Being a non-preemptive kernel it consumes little memory and it is very simple to use. It is already being used in many designs, proving that a huge, full-preeemptive kernel is not always the best solution.

14 .
如何設計複雜的多工程式,Easy51RTOS【轉載】

15 .
感謝Lisuwei《簡易多工OS設計》一文,我也寫出了我的RaysRTOS(光芒實時系統),

16 .

1 自己做個簡單的RTOS,用一個定時器,不支援任務搶斷,只支援靜態任務數量和靜態的任務.應該比較小.
2 任務中加狀態機或者標誌符號.主程式while(1){處理}

其實usmart基本上就是這種結構。完整的usmartx佔用ram最小也有200多位元組。移植51還是不行。

樓主可以把usmartx進行裁減,只保留任務排程和定時器部分。

不支援搶佔就沒有實時性?那麼前後臺系統呢?有沒有搶佔?實時性如何?

不支援搶佔,只是任務的事實性差了些。任務的實時性差一點,並不意味著整個系統的實時性差,只要保證中斷的實時性夠高就行。
us級實時性有中斷控制,ms級實時性由作業系統控制。
像notos,usmartx就是非搶佔式作業系統。

17 .

用protothreads,很好用的。

買過Small RTOS的書,作者陳明計。但沒用過。keil的tiny51倒是用過。

19
參照<建立自己的avr實時作業系統>第四篇,移植到51,實現多工,LCD/LED,proteus模擬+keil專案

20

回想前二年初次學習uCOS-II時,學完之後,好象什麼也沒有看懂,沒辦法,找了一本陳明計的大作《SMALL RTOS51》,終於清楚的RTOS的實質。
  再回過頭來看uCOS-II,輕鬆多了。
21
用SMALL RTOS(51) 寫的俄羅斯方塊和貪吃蛇。彩屏顯示

https://www.amobbs.com/forum.php?mod=viewthread&tid=4240638&highlight=rtos&_dsign=7da58064

22
rtt不錯的
去年用3.x做過專案 感覺穩定性還行 功能也不弱
用過ucos的很容易上手
現在的功能也越來越豐富了

23
系統介紹:
(名字還沒想好)
系統小巧,佔用ROM約1.1KB.
參考了"51圈圈作業系統",
任務排程機制有點像FreeRTOS:
是可剝奪型核心,既支援優先順序排程演算法也支援輪換排程演算法
允許不同的任務使用相同的優先順序,在沒有更高優先順序任務就
緒的情況下,同一優先順序的任務共享CPU的使用時間.
在STC12C4052AD微控制器上執行通過.
缺點:
功能簡單,沒有郵箱\訊號量\刪除任務等功能.
任務排程函式由C編寫,可能會佔用較長的時間.
可靠性有待觀察.

注意:
建立任務時,高優先順序的任務要先建立.
有些地方貌似需要加volatile.
工程結構及編譯結果

下載了看一下,最近在用《時間觸發嵌入式OS》中的思路和例子做一個例項,感覺還不錯,485通訊(100k bps)+DS18B20都調通了。

24
如果大家讀過黃健昌先生的《建立一個屬於自己的AVR的RTOS》一文,相信一定會佩服他對OS的見解,可見水平之高。據我所知,這篇文章是黃先生在很短時間內完成的,黃先生是一位擅長Java、JavaEE和Web服務技術的顧問,目前就職於Sun中國工程研究院,任職Technical Consultant,負責Sun Java Enterprise System(JES)產品支援和Java技術諮詢. 您可以通過[email protected]m與他聯絡。另他的著作有《GlassFish——開源的 JAVA EE應用伺服器》,喜歡開源的朋友可以看一下。

不管是哪家OS,,3個功能足矣,任務排程,資訊和延時。
相比而言,我並不太看重核心的這些東東,
我看重的是:有沒有豐富的外圍框架元件,所以自打 RT-Thread 出世後,就中意上了 RT-Thread。

25

其實還是跟專案有關,我原來做電機控制,都是裸奔,自己做個簡單的程式框架。
夠用,但是可移植性不算太強,後來選系統。
rtt還是太繁瑣了,一個usart驅動一層層巢狀,也不利於學習。
跟ST 的HAL有得一比。
rtx5貌似有人說有bug,沒敢用,最後選用了freertos。
說了這麼多,是想說明選用那個rtos跟你的專案有很大關係。
如果需要各種元件,比如ip,usb等,我覺得rtt是最方便的,因為它的介面標準化。
但是如果這要操作各種晶片內部的外設,還是rtx5或者freertos這種微核心比較方便。
介面標準化勢必帶來程式碼的複雜化以及初學的困難度。

那是你沒還有真正的應用需求,目前的需求只是學習,點點燈、打列印也是可以的。
等你遇到真正的應用需求時,有這段前期的鋪墊學習,到時自然會較快的懂的。

你可以去 RT-Thread 的官網論壇,裡面有一些開源專案,就是現成的參考。
我這邊都是商業專案,不能公開的,看上面說的那些也是一樣。

作業系統執行緒之間通訊使用訊息佇列可以降低執行緒之間的耦合度,方便擴充套件任務

https://www.osrtos.com/

2 WinAVR裡介紹的RTOS

While an Operating System, or RTOS, isn’t necessary to write software for the AVR, there may be times when it is desirable. Below, are some links for free or open source operating systems / kernels for the AVR. Note that this may not be a complete list.

Femto OS
The Femto OS is a very concise portable real time - preemptive operating system (RTOS) for embedded microcontrollers with minimal ram and flash.

AvrX
AvrX is a Real-Time Multitasking Kernel.

EtherNut - Nut/OS
Ethernut is an Open Source Hardware and Software Project for building Embedded Ethernet Devices. It contains Nut/OS which is an intentionally simple RTOS for the ATmega128, which provides a minimum of services to run Nut/Net, the TCP/IP stack.

FreeRTOS
FreeRTOS is a portable, open source, mini Real Time Scheduler (or mini RTOS kernel).

TinyOS
TinyOS is a component-based runtime environment designed to provide support for deeply embedded systems which require concurrency intensive operations while constrained by minimal hardware resources.

Contiki
Contiki is an Internet-enabled operating system and desktop environment for a number of smallish systems.

XMK - eXtreme Minimal Kernel
XMK is a preemptive multitasking scheduler/kernel for 8bit microcontrollers. Its goal is to provide a bare bones RTOS with a small enough footprint (RAM+ROM) to run on 8bit microcontrollers.

pico OS
pico OS is a highly configurable and very fast real time operating system (RTOS). It targets a wide range of architectures, from very small 8 bit processors and microcontrollers up to very huge platforms. An AVR port is available.

uSmartX
uSmartX is a non-preemptive, multitasking, priority based RTOS. It features mechanisms for inter-task communication and basic task and time control functions.

Super Simple Tasker (SST)
This is an implementation of a lightweight scheduler so called “Super Simple Tasker” - SST. The idea is taken from the Robert Ward’s article - “Practical Real-Time Techniques” http://www.quantum-leaps.com/resources/Ward03.pdf. The SST allows to significantly reduce needs for precious RAM and ROM and still allows to keep a real time characteristic of the scheduler (e.g. tasks prioritization and preemption).

ChibiOS/RT
ChibiOS/RT is a compact and fast RTOS designed for embedded applications. It offers threads, mutexes, semaphores, messages, events, timers, flexible I/O with timeout capability.

3 參考了那個教程《 建立一個屬於自己的AVR的RTOS》

4 small rtos51學習資料收集

small rtos51學習資料收集

雖然說small rtos51可能是最簡單的作業系統,是學習作業系統最容易入門的,但是,還是有一定難度。

對於一個只學會了51微控制器簡單開發的工程師來說,也許會熟練應用keil除錯程式,但可能沒有寫過作業系統這麼複雜的程式。

所以,只看陳明傑的書,可能也會糊糊塗塗。

誠懇的說,陳明傑的書寫作風格是模仿邵貝貝那本,完全是一種大學教材那種枯燥乏味的寫法。

沒有一定作業系統基礎的初學者一定會大受打擊。

推薦一些學習samll rtos51的參考資料:

1 電子園一個斑竹的系列文章:

基於51微控制器的實時作業系統的研究

http://bbs.cepark.com/forum.php?mod=viewthread&tid=13228&highlight=

2 一個簡單的51微控制器作業系統的實現:雖然不是small rtos51的文章,但是這麼小的作業系統實現程式碼,是初學者絕好的學習案例。

http://www.51hei.com/mcu/1325.html

3 建立一個屬於自己的AVR的RTOS:熟悉一下avr微控制器,不難讀懂這篇文章。這篇文章寫得通俗易懂,比陳明傑的好讀多了。

http://wenku.baidu.com/view/f28e5c7da26925c52cc5bf37.html

4 51簡單作業系統OS:講得比較詳細的很小的作業系統

http://wenku.baidu.com/view/7bedbfc758f5f61fb7366602.html

5 51最簡作業系統演變:講多工實現的ppt

http://wenku.baidu.com/view/eea5b087ec3a87c24028c4ae.html

6 簡單的多工作業系統:

http://wenku.baidu.com/view/376af543a8956bec0975e390.html

7 給51 DIY超輕量級多工作業系統:最適合初學者看

http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=1398508

8 老古寫的51作業系統:

http://www.laogu.com/ssw_698.htm

9
STACK
51微控制器keil提供的啟動程式碼解析(STARTUP.A51)

10
1、大師Michael J. Pont在嵌入式領域有很深的造詣,他寫的那本時間觸發嵌入式系統設計模(Patterns for time-triggered embedded systems)深受讀者們的喜愛。
2014年寫的uCOS-III教程裡面基於時間觸發的合作式排程和混合式排程就是來自他的分享。

2、大師真正的將時間觸發架構發揚光大,推出一款晶片,自帶硬體邏輯的時間觸發排程器,應用領域包括航空航天,醫療,工業,汽車,船舶,國防,衛星系統以及高階消費品。
這個時間觸發排程要遠比書籍中講解的要複雜的多。

3、早期就有自己的研發團隊,後來成立了公司。他們早期的網站是http://www.tte-systems.com/,從2007年到2013年,之後的2014到2018升級到新的網站。
4、他們新成立的公司,在嵌入式系統的安全可靠性方便有非常強大的功底,各種航空航天,工業,醫療,汽車,家電等方面的安全認證都搞的很溜。

2、另一本書籍是《The Engineering of Reliable Embedded Systems’ (Ed. 2)》
內容是基於第二代時間觸發(TT)架構的使用,記錄了一種經過行業驗證的可靠嵌入式系統軟體開發方法。
時間觸發架構可以精確地模擬預期的系統行為。 這意味著:
(1)在開發過程中,我們可以證明所有要求都已得到滿足;
(2)在執行時,我們可以很快發現問題。

最終的結果是,我們可以高度確信TT系統:
(1)按要求精確操作;
(2)如果出現問題則進入適當的狀態。

上述特徵意味著TT系統提供了滿足各種國際安全標準要求的特別有效的手段,包括IEC 61508(工業認證),ISO 26262(汽車認證),IEC 62304(醫療認證),IEC 60730(家電認證)和DO-178C(航空航天)。

發一個自制的RTOS,適合學習和極簡開發
下載地址:
github.com/EDI-Systems/M5P1_MuProkaron
整個系統一個檔案,原始碼壓縮包2MB以內
僅支援郵箱和訊號量,不帶其他任何雜七雜八東西
2k ROM佔用,128B RAM佔用
帶使用者手冊,非常適合初學者
支援Cortex-M,MSP430,MIPS,也支援Linux模擬

和其他RTOS的對比見附件圖

*核心物件管理、記憶體分配、裝置框架實際上並不實用,因為深度嵌入式應用常常靜態分配它們
*互斥訊號量可以用一個執行緒+一個計數訊號量實現
*訊息佇列可以用一個執行緒+一個郵箱實現
*GUI,Shell和檔案系統要用可以外加,不必作為標準實現
*不常用的架構(如正在死亡的AVR32和凌陽等)用不著支援

本系統主要適合初學者和小型微控制器開發,尤其是需要短平快多於需要全功能者。

M0支援,STM8是8位的不支援。過會開一個貼講下STM8的狀態機作業系統實現,那個更簡單些,可以在github.com/EDI-Systems/M2A1_MuSimpron找到。這個是實際上在8位機上實用的基於協程和狀態機的作業系統。

我還有一個更簡單的適合4位和8位機的OS,就是和那個排程器類似的原理,而且還可以省下一個定時器,並且利用了處理器的硬體中斷優先順序來實現OS中的優先順序(也即一部分任務當成了中斷向量來跑)。比那個小小排程器多提供了幾個巨集,用起來更方便些。可以在github.com/EDI-Systems/M2A1_MuSimpron找到。
這個我還是再開個帖子講吧

看了一下,與小小排程器原理是類似的, 都是以PT為原型的

  1. “並且利用了處理器的硬體中斷優先順序來實現OS中的優先順序(也即一部分任務當成了中斷向量來跑)。”
    坐等大神詳解,感謝!

  2. “比那個小小排程器多提供了幾個巨集,用起來更方便些。”
    眼比較拙,沒看到是哪幾個

是指這個嗎?
#define INT_TASK_BEGIN(X) switch(X){
#define INT_YIELD() return;
#define INT_TASK_END() };
複製程式碼

  1. 正好樓上所說, 如果不用定時器, A任務執行要每10ms排程一次,B任務要每5ms排程一次, 是否要在 大while中加入 delay_ms(1)來作時間控制?

我的MSimpron由於多提供了那幾個巨集(實際上就只多這些就可以),即實現了搶佔式協程。關於如何用中斷實現不同優先順序的協程,請看附件中的文章。

網址打不開的話直接用這個吧
https://github.com/EDI-Systems/M5P1_MuProkaron

這個其實就是小小排程器的改進版本,可以在https://github.com/EDI-Systems/M2A1_MuSimpron 找到。允許使用系統的硬體優先順序執行多個協程。

rtx51tny在keil的安裝目錄下,這個還帶偵錯程式,參考資料也很全面。

8.CoOS不是開源軟體。它使用一個修改過的、要求保護私有部分的BSD協議,但是並非完全Copyleft。One OS的三個許可證中包括了原版LGPLv3,所以沒有這個問題。

9.One OS不支援Mutex,Queue等額外的通訊方式。如果你更喜歡大量的IPC模型,那麼CoOS勝出。但是,OneOS之所以不支援這些,是在系統設計時就決定的,因為這些IPC方式都不是很實用。

可以試試這個系統
https://github.com/EDI-Systems/M2A1_MuSimpron。
陳明計也有個51的RTOS,那個也是一個選項,就是實用性比較差。

請問 是那個啊 我去學習一下

再出個排程器,極小資源微控制器值得一用 https://www.amobbs.com/thread-5508723-1-1.html