RT-ThreadRTOS是一款來自(zi)中國的開源實時操作系(xi)統(tong),由RT-Thread工作室的專業開發(fa)人員開發(fa)、維(wei)護。
起(qi)初RT-Thread是一(yi)個實(shi)時的(de)(de)內(nei)(nei)核(he)(全搶(qiang)占(zhan)優先級(ji)調(diao)度,調(diao)度器時間復(fu)雜度O(1)),但在發展過程(cheng)中,RT-Thread實(shi)時操作系(xi)統(tong)得到了來自全國嵌入式開發工程(cheng)師的(de)(de)鼎(ding)力支持,為RT-Thread添磚加瓦,現在它不僅(jin)僅(jin)是一(yi)款高效、穩定的(de)(de)實(shi)時核(he)心,也是一(yi)套面(mian)(mian)向嵌入式系(xi)統(tong)的(de)(de)軟件平臺(tai),覆蓋了全搶(qiang)占(zhan)的(de)(de)實(shi)時操作系(xi)統(tong)內(nei)(nei)核(he),小巧而與底層具體實(shi)現無(wu)關的(de)(de)文件系(xi)統(tong),輕型的(de)(de)TCP/IP協議棧以及輕型的(de)(de)多窗口(kou)多線程(cheng)圖形用戶界(jie)面(mian)(mian)。
RT-Thread是(shi)一個平臺,您可以把您的創意匯聚在一起(qi),小平臺大社區(qu),RT-Thread的開發人(ren)員就在您的身(shen)邊。
1、誕生
一切東西還得(de)從(cong)頭談起。
RT-Thread RTOS,Kernel部分完(wan)成于2006年(nian)上(shang)(shang)半年(nian),其IPC部分甚至是年(nian)中(zhong)時才具備(bei)相應的(de)(de)雛形。最開(kai)始(shi)時是因(yin)為(wei)要為(wei)朋(peng)友做一(yi)(yi)個(ge)小型的(de)(de)手持設(she)備(bei),而我(wo)本人(ren)起初又是另一(yi)(yi)國內老牌RTOS:DOOLOO RTOS開(kai)發人(ren)員,但這個(ge)團隊在2005年(nian)底已經解(jie)散。但朋(peng)友的(de)(de)系統要上(shang)(shang),用ucos嗎,一(yi)(yi)不熟悉,二看不上(shang)(shang)。答應朋(peng)友的(de)(de)事(shi),總得(de)有解(jie)決方法吧,即使是原來的(de)(de)DOOLOO RTOS,因(yin)為(wei)其仿VxWorks結構,導致它的(de)(de)核心太(tai)大,包括(kuo)太(tai)多不必要的(de)(de)東西(一(yi)(yi)套完(wan)整的(de)(de)libc庫),這些方案都否決了(le)(le)(le)(le)。怎么辦(ban)?當時朋(peng)友那邊也不算太(tai)急(ji),先自己寫一(yi)(yi)套內核吧。這個(ge)就是源(yuan)頭!(后來雖然朋(peng)友的(de)(de)項目夭(yao)折了(le)(le)(le)(le),但這套OS則保留下來了(le)(le)(le)(le),并開(kai)源(yuan)了(le)(le)(le)(le),萬幸)
當然RT-Thread和原來的(de)DOOLOO RTOS差別還(huan)是(shi)很大的(de)。DOOLOO RTOS是(shi)一(yi)種(zhong)(zhong)類VxWorks風格的(de),而RT-Thread則(ze)是(shi)一(yi)種(zhong)(zhong)類NucluesPlus風格的(de),小型、實(shi)時、可(ke)剪裁。這三個方面RT-Thread可(ke)以驕傲的(de)說做得比DOOLOO RTOS都要好很多(duo),小型:RT-Thread核心能夠小到4K ROM,1K RAM;實(shi)時:線程(cheng)調度核心是(shi)完(wan)全bitmap方式,計算時間是(shi)完(wan)全固定的(de);可(ke)剪裁性,配置(zhi)文件rtconfig.h包含多(duo)種(zhong)(zhong)選(xuan)項,對(dui)(dui)Kernel細節進行精(jing)細調整,對(dui)(dui)各種(zhong)(zhong)組件(文件系統,使(shi)用EFSL、ELM FatFs;網絡協議棧,finsh shell)進行可(ke)選(xuan)配置(zhi)。
2、艱(jian)難的發(fa)展(zhan)期
在第一(yi)個(ge)公開(kai)板發布后(0.1),RT-Thread意識(shi)到了一(yi)個(ge)問題,光有核(he)心不(bu)行(xing)。別人(ren)如(ru)何使用(yong):雖然采(cai)用(yong)了doxygen風格(ge)的(de)(de)(de)注(zhu)釋,并自動產生相(xiang)應的(de)(de)(de)API文檔,但(dan)能夠使用(yong)的(de)(de)(de)人(ren)寥寥,有這(zhe)個(ge)功(gong)底(di)的(de)(de)(de)人(ren)不(bu)見得認可(ke)你(ni)的(de)(de)(de)系統,沒相(xiang)應功(gong)底(di)的(de)(de)(de)人(ren)也玩不(bu)轉你(ni)的(de)(de)(de)系統。所以下一(yi)個(ge)系列,考慮(lv)如(ru)何讓系統能夠支持更多的(de)(de)(de)平(ping)(ping)臺(tai)(tai)。首選(xuan)ARM,為什么?應為ARM正處于發展(zhan)的(de)(de)(de)前期,使用(yong)的(de)(de)(de)人(ren)也廣泛,而RT-Thread第一(yi)個(ge)支持的(de)(de)(de)平(ping)(ping)臺(tai)(tai)就是s3c4510,這(zhe)個(ge)是lumit開(kai)源項(xiang)目贈送的(de)(de)(de)平(ping)(ping)臺(tai)(tai)。在其后,支持了包(bao)括s3c44b0,AT91SAM7S64,AT91SAM7X256,s3c2410,AT91SAM9200,coldfire,x86等一(yi)系列平(ping)(ping)臺(tai)(tai),編(bian)譯(yi)器統一(yi)使用(yong)GCC,這(zhe)個(ge)時(shi)期無疑是最艱(jian)難(nan)的(de)(de)(de)時(shi)期(真的(de)(de)(de)艱(jian)難(nan)嗎?呵呵,但(dan)肯定(ding)是迷茫的(de)(de)(de)),這(zhe)個(ge)就是0.2.0、0.2.1、0.2.3、0.2.4版(ban)本等,不(bu)同的(de)(de)(de)版(ban)本支持不(bu)同的(de)(de)(de)平(ping)(ping)臺(tai)(tai)。
猜猜我這段時間是(shi)(shi)干什(shen)么工作的(de)(de)(de)?不知(zhi)道大家對(dui)這個領域是(shi)(shi)否熟(shu)悉,手機2G,3G協議棧(zhan)開發(fa)。每天都和協議棧(zhan)打交道,而(er)且最痛苦(ku)的(de)(de)(de)是(shi)(shi)上千(qian)頁的(de)(de)(de)25.331 RRC協議,都是(shi)(shi)英文的(de)(de)(de),所以(yi)RT-Thread算做是(shi)(shi)工作之(zhi)外的(de)(de)(de)苦(ku)中作樂吧。而(er)也正是(shi)(shi)這個時候,shaolin同學出現了(le),幫(bang)助完成了(le)RT-Thread/x86的(de)(de)(de)移(yi)植,他當時還是(shi)(shi)學生。
這其(qi)中還有(you)一(yi)件郁悶的(de)(de)(de)(de)事,當時RT-Thread團(tuan)(tuan)隊還有(you)幾(ji)個人(ren)(ren),只不過主要是(shi)shaolin和(he)我。當0.2.3發布時,我建議開(kai)(kai)始(shi)微內(nei)核(he)(he)(he)(he)的(de)(de)(de)(de)道路,嗯,可能很(hen)(hen)多人(ren)(ren)還比(bi)較困惑,RT-Thread后面跟著(zhu)的(de)(de)(de)(de)為(wei)什么是(shi)“啟動下一(yi)代RTOS演化(hua)”,當時就是(shi)因它而(er)感慨:把(ba)微內(nei)核(he)(he)(he)(he)引入進來,把(ba)內(nei)核(he)(he)(he)(he)態和(he)用(yong)戶態分(fen)開(kai)(kai)來,并且建立一(yi)個類似于L4的(de)(de)(de)(de)微內(nei)核(he)(he)(he)(he)。當然最重要的(de)(de)(de)(de)是(shi),其(qi)中有(you)一(yi)個強實時核(he)(he)(he)(he)心(xin)。而(er)且L4實際上是(shi)把(ba)頁(ye)表操作放到內(nei)核(he)(he)(he)(he)之(zhi)外的(de)(de)(de)(de),如果內(nei)核(he)(he)(he)(he)是(shi)一(yi)個強實時內(nei)核(he)(he)(he)(he)將對(dui)整個系(xi)統的(de)(de)(de)(de)實時性(xing)提(ti)升很(hen)(hen)大,而(er)因為(wei)微內(nei)核(he)(he)(he)(he)的(de)(de)(de)(de)緣故,也(ye)能夠(gou)運行linux的(de)(de)(de)(de)應用(yong)程序,并且當時RT-Thread也(ye)提(ti)出了(le)一(yi)種,線程即(ji)IPC的(de)(de)(de)(de)概(gai)念。。。只是(shi),最后的(de)(de)(de)(de)提(ti)案被大家(jia)否(fou)決了(le)。團(tuan)(tuan)隊開(kai)(kai)始(shi)有(you)數人(ren)(ren),只是(shi)能夠(gou)堅(jian)持的(de)(de)(de)(de)沒幾(ji)個。
3、一年增加0.0.1
本(ben)人(ren)很早就(jiu)接觸(chu)了(le)Linux,算是國內資深(shen)的(de)(de)(de)Linux接觸(chu)者(zhe)(早期(qi)也算一(yi)個(ge)(ge)(ge)Linux開發人(ren)員吧),KDE 1.0幾(ji)乎是看著發展(zhan)起來的(de)(de)(de)(大(da)家有誰用過RedHat 5.1?)。個(ge)(ge)(ge)人(ren)算是很多方面有一(yi)些自由(you)軟(ruan)件的(de)(de)(de)習(xi)慣:軟(ruan)件的(de)(de)(de)版(ban)(ban)(ban)本(ben)號(hao)是非常重要的(de)(de)(de)一(yi)個(ge)(ge)(ge)標志,寧(ning)愿增加一(yi)個(ge)(ge)(ge)細微的(de)(de)(de)版(ban)(ban)(ban)本(ben)號(hao)也不輕(qing)易(yi)的(de)(de)(de)增加一(yi)個(ge)(ge)(ge)大(da)的(de)(de)(de)版(ban)(ban)(ban)本(ben)號(hao),因(yin)為大(da)的(de)(de)(de)版(ban)(ban)(ban)本(ben)號(hao)是需要對用戶負(fu)責的(de)(de)(de)。1.0版(ban)(ban)(ban)本(ben)更代(dai)表了(le)系統的(de)(de)(de)穩定性,健(jian)全性。例(li)如mplayer到1.0版(ban)(ban)(ban)本(ben)就(jiu)經歷眾多小(xiao)版(ban)(ban)(ban)本(ben),0.99的(de)(de)(de)beta版(ban)(ban)(ban)本(ben)亦(yi)無數。
RT-Thread也(ye)把這(zhe)(zhe)(zhe)點體現(xian)得淋漓盡致,0.2.2到(dao)0.2.3一(yi)個(ge)(ge)版(ban)本(ben)的(de)(de)(de)(de)增加,整整花(hua)了(le)一(yi)年多的(de)(de)(de)(de)時(shi)(shi)間。但這(zhe)(zhe)(zhe)個(ge)(ge)小版(ban)本(ben)號(hao)的(de)(de)(de)(de)增加,卻(que)帶來了(le)開源社區嵌入式(shi)環(huan)境中(zhong)最完善的(de)(de)(de)(de)TCP/IP協(xie)議棧(zhan):LwIP。當然,開始時(shi)(shi)并(bing)不算穩定。在這(zhe)(zhe)(zhe)幾個(ge)(ge)版(ban)本(ben)中(zhong),RT-Thread也(ye)終于從迷茫中(zhong)走出(chu)來,RT-Thread需要自己的(de)(de)(de)(de)特(te)色,一(yi)個(ge)(ge)單獨的(de)(de)(de)(de)RTOS Kernel沒太大的(de)(de)(de)(de)用處,因為(wei)你并(bing)沒有(you)上(shang)(shang)層應用代(dai)碼(ma)的(de)(de)(de)(de)積累,并(bing)且一(yi)些(xie)基礎組件也(ye)非常重要,有(you)這(zhe)(zhe)(zhe)些(xie)基礎組件基本(ben)上(shang)(shang)意味著,在這(zhe)(zhe)(zhe)個(ge)(ge)平(ping)臺(tai)上(shang)(shang)寫代(dai)碼(ma),這(zhe)(zhe)(zhe)些(xie)代(dai)碼(ma)就是(shi)你的(de)(de)(de)(de),甚至是(shi)你哪天也(ye)可以把它放(fang)到(dao)另外(wai)一(yi)個(ge)(ge)硬件平(ping)臺(tai)上(shang)(shang)運(yun)行。
同樣,0.2到(dao)0.3版本號的(de)變更,花(hua)費的(de)時間會更長^-^版本號的(de)長短,是和計(ji)劃(hua)的(de)feature實現是密切(qie)相(xiang)關的(de),沒到(dao)設(she)定的(de)目標如何可能進行(xing)發布呢?
4、Cortex-M3的變革
RT-Thread的(de)(de)變革因為(wei)(wei)Cortex-M3而來(lai),因為(wei)(wei)ST的(de)(de)STM32使(shi)用(yong)(yong)的(de)(de)人(ren)太(tai)廣了(le)(le),當然還有(you)非常重要(yao)的(de)(de)一點。RT-Thread已經(jing)開(kai)始(shi)支持(chi)Keil MDK,armcc了(le)(le)。GNU GCC確實(shi)好,并且也由衷的(de)(de)推(tui)崇它(ta)(ta),使(shi)用(yong)(yong)它(ta)(ta),只是調試確實(shi)麻煩,阻礙(ai)了(le)(le)更多人(ren)使(shi)用(yong)(yong)它(ta)(ta)(ARM平臺上)。當RT-Thread+Cortex-M3+Keil MDK碰(peng)撞在一起的(de)(de)時候,火(huo)花(hua)因它(ta)(ta)而生,越來(lai)越多人(ren)使(shi)用(yong)(yong)RT-Thread了(le)(le),當然這和RT-Thread厚積(ji)薄發是離不開(kai)的(de)(de),因為(wei)(wei)這個時候,RT-Thread已經(jing)有(you)一個穩定的(de)(de)內核(he),shell方式的(de)(de)調試利器finsh,DFS虛擬(ni)設備文件系統,以及LwIP協議棧(zhan)。而RT-Thread/GUI則在密集的(de)(de)移植到(dao)CM3上,RT-Thread/GUI成型(xing)于2008年底,但為(wei)(wei)了(le)(le)Cortex-M3分支,這個組件停下來(lai)很(hen)多,但這種停留是值得的(de)(de)。另外就(jiu)是特別感(gan)謝UET贈送的(de)(de)STM32開(kai)發板(ban)了(le)(le),RT-Thread/STM32的(de)(de)分支都是在UET贈送的(de)(de)STM32開(kai)發板(ban)上驗證的(de)(de)。
5、RT-Thread為什么(me)是對象化的設計方法(fa)
可能(neng)這個話題太偏(pian)技術化(hua)了,說說其他(ta),呵呵。
面向對象編(bian)程有它的(de)好(hao)處(chu),例(li)如繼(ji)承。可以讓具備相同父類(lei)的(de)子類(lei)共享使用(yong)父類(lei)的(de)方法,基本(ben)可以說是不用(yong)寫代碼就憑空多(duo)出了很多(duo)函數,何樂(le)而不為呢。另外(wai),對象的(de)好(hao)處(chu)在于(yu)封裝(zhuang)。當(dang)一個(ge)(ge)對象封裝(zhuang)好(hao)了以后,并測(ce)試完成(cheng)后,基本(ben)上就代表(biao)這(zhe)個(ge)(ge)類(lei)是健全的(de),從這(zhe)個(ge)(ge)類(lei)派生的(de)子類(lei)不需要(yao)過(guo)多(duo)考慮父類(lei)的(de)不穩(wen)定性(xing)。
這里著重提(ti)提(ti)另(ling)外一(yi)個(ge)人,我工作后的(de)(de)第三年(nian),曾向(xiang)當時的(de)(de)同事(shi)也是(shi)好(hao)友(you),L.Huray學習面(mian)向(xiang)對象(xiang)的(de)(de)實(shi)時設(she)計(ji)方法:Octpus II。深刻體會到了面(mian)向(xiang)對象(xiang)設(she)計(ji)的(de)(de)好(hao)處(需求分析(xi),體系(xi)(xi)(xi)(xi)結構(gou)設(she)計(ji),子(zi)系(xi)(xi)(xi)(xi)統(tong)分析(xi),子(zi)系(xi)(xi)(xi)(xi)統(tong)設(she)計(ji),測試,實(shi)時性分析(xi)),但鑒于嵌入式系(xi)(xi)(xi)(xi)統(tong)中C++的(de)(de)不(bu)確定性,所以(yi)個(ge)人更偏向(xiang)于使(shi)用(yong)C來實(shi)現。所以(yi),L.Huray算是(shi)我的(de)(de)老(lao)師了,一(yi)直希(xi)望能(neng)夠有(you)時間把他老(lao)人家(jia)的(de)(de)思想更進一(yi)步的(de)(de)發揚光大,希(xi)望以(yi)后有(you)這個(ge)機會。(Octpus I最初(chu)起源于Nokia,然后由M.Award, L.Huray發展(zhan)成Octpus II,現在幾乎見不(bu)到蹤影了,唉)。
(作者(zhe)原文:實時線程操作系統(RT-Thread)4年開發(fa)歷程樂與苦)
1、任務管(guan)理及調度:
RT-Thread-32/256可(ke)選優(you)先(xian)級(ji)搶占(zhan)式調度,線(xian)程(cheng)數不限(xian),相同優(you)先(xian)級(ji)線(xian)程(cheng)時(shi)間片輪轉調度;支(zhi)持(chi)動(dong)態創建/銷毀線(xian)程(cheng)。
uCOS-256優先級搶占(zhan)式調度,不允許相同(tong)優先級任務存在
2、同步(bu)/通信機制:
RT-Thread-支持semaphore, mutex, mailbox, message queue, event。mailbox可存儲(chu)多(duo)條消息,任(ren)務等(deng)待(dai)可按優(you)先級進行排(pai)隊。
uCOS -semaphore,mutex, mailbox, message queue, event。mailbox只能存(cun)放(fang)1條(tiao)消息
3、內存管理:
RT-Thread-固(gu)定分區內存管理(li),小內存系(xi)統(tong)動態內存管理(li),大內存系(xi)統(tong)SLAB內存管理(li)
uCOS-固(gu)定大小內存塊管理(li)
4、定時器:
RT-Thread-掛接到系統(tong)OS定(ding)時(shi)器的(de)硬定(ding)時(shi)器
uCOS - 只能使用OSTimeDly進行時(shi)間間隔處理
5、中斷嵌套:
RT-Thread - 允許
uCOS - 允許
6、源碼(ma)許可證:
RT-Thread - 遵(zun)循GPLv2+許可(ke)證。可(ke)用于商業產品(只需要注明使用了RT-Thread)
uCOS - 商業收費
發布時間(jian):11/04/2014
RT-Thread 2.0.0發(fa)布(bu)候選版本(release candidate),同時發(fa)布(bu)v1.2.3穩定版本
隨著(zhu)RT-Thread功能越(yue)來越(yue)多,如(ru)何發(fa)(fa)布(bu)版本(ben)也成為(wei)一(yi)件(jian)頭疼的(de)(de)事(shi)情(qing),因為(wei)需要仔細對比最(zui)近(jin)三個(ge)月來的(de)(de)修改記錄(lu)。這次的(de)(de)發(fa)(fa)布(bu)距(ju)離上一(yi)次beta版本(ben)依然(ran)(ran)是(shi)三個(ge)月的(de)(de)時(shi)間,但按照(zhao)發(fa)(fa)布(bu)計劃已然(ran)(ran)推遲了一(yi)個(ge)月進行發(fa)(fa)布(bu)。
在這三個月中(zhong),開源(yuan)社區上也發生(sheng)了很(hen)多有(you)趣的事情:
阿嘉的(de)使用RT-Thread的(de)四軸(zhou)飛(fei)行(xing)(xing)器畢(bi)業設計驚艷(yan)亮相,采(cai)用了(le)1個STM32F4 + 8個STM32F1進行(xing)(xing)飛(fei)行(xing)(xing)控(kong)制(zhi),總(zong)計9個MCU的(de)另(ling)類實現(xian)方式(shi);沿循四軸(zhou)飛(fei)行(xing)(xing)器的(de)路線,與國內匿名團隊(dui)合作,采(cai)用RW009 Wi-Fi控(kong)制(zhi)的(de)迷你四軸(zhou)飛(fei)行(xing)(xing)器也(ye)在穩步推(tui)進過程中(zhong)。
RT-Thread做為(wei)一個開(kai)源組織參與的(de)CSDN開(kai)源夏令營結出了豐碩的(de)果實:
由hduffddybz參與的IPv6協議(yi)棧移(yi)植(zhi)(最新版(ban)本的lwIP-head版(ban)本移(yi)植(zhi))在(zai)這(zhe)次(ci)發布中已經包括(kuo)進(jin)來,從而能夠在(zai)使(shi)用RT-Thread的小型設備上實現TCP/IP v4/v6雙棧的支持(chi);
由(you)wzyy2參與的(de)GDB stub實現,也完美的(de)支持BeagleBoneBlack開發(fa)板和STM32F4平臺(tai);
CSDN開源夏(xia)令營其(qi)他的成果(guo),例(li)如bluedroid移植(zhi)也(ye)有(you)了初(chu)步(bu)的成果(guo),希望能(neng)夠在后續(xu)的版(ban)(ban)本(可能(neng)會是(shi)2.1.0系(xi)列版(ban)(ban)本?)包含(han)進來(lai)。CSDN開源夏(xia)令營是(shi)一次非常棒的活動(dong),能(neng)夠讓學(xue)生提前進入(ru)實(shi)戰,了解(jie)軟件開發(fa)(fa)的初(chu)步(bu)知識。對開源社區來(lai)說,也(ye)是(shi)一次非常有(you)益的社區互動(dong)活動(dong)。希望這個活動(dong)可以繼續(xu),關(guan)注(zhu)RT-Thread、嵌入(ru)式開發(fa)(fa)的同學(xue)可以關(guan)注(zhu)動(dong)向。
當前智能化設備是一個備受關注的領域,針對這一領域的特點,RT-Thread也相應的做出了積極的響應,所以這個版本開始加入sensor的應用框架(APP/算法<-->sensor framework<-->RT-Thread device driver<-->硬件外(wai)設)。希望在(zai)小型化的(de)(de)RT-Thread操(cao)作系統基礎(chu)上融(rong)合智能(neng)(neng)化相關的(de)(de)技術(shu),讓RT-Thread成為這(zhe)(zhe)方面可選的(de)(de)OS系統之一(yi)。RT-Thread操(cao)作系統的(de)(de)sensor框(kuang)架也嘗試新的(de)(de)實現(xian)方式(shi)(shi),即采用C++的(de)(de)方式(shi)(shi)來實現(xian)(當然也會考慮C方面的(de)(de)兼容,無疑C++的(de)(de)面向對(dui)象(xiang)特性(xing)會更(geng)好,所以最終選擇(ze)了(le)C++),在(zai)這(zhe)(zhe)個(ge)基礎(chu)上也可能(neng)(neng)融(rong)合其他的(de)(de)一(yi)些(xie)生態技術(shu),例如(ru)ARM mbed平臺上的(de)(de)一(yi)些(xie)社區組件技術(shu)。所以這(zhe)(zhe)個(ge)發布版本中既包括(kuo)sensor框(kuang)架,也包括(kuo)了(le)C++底層的(de)(de)一(yi)些(xie)基礎(chu)支撐。
這個版(ban)本(ben)(ben)是RT-Thread 2.0.0系列正(zheng)式版(ban)本(ben)(ben)的(de)候選版(ban)本(ben)(ben),正(zheng)式版(ban)本(ben)(ben)預計會在年(nian)底正(zheng)式發布,距離正(zheng)式版(ban)本(ben)(ben)還會加入更完(wan)善的(de)一些支撐(例如各種傳(chuan)感器驅動)。也計劃2014年(nian)11月(yue)22日,在上海浦東(dong)舉行(xing)RT-Thread嵌入式系統沙龍活動,歡迎大家關注(zhu)并參與進行(xing)RT-Thread方方面面的(de)技術交流。具體時間、地(di)點再(zai)另行(xing)通(tong)知(zhi),歡迎關注(zhu)@RT-Thread微博獲得最新的(de)消(xiao)息(xi)。
記錄下(xia)RT-Thread0.3.x的成長
先(xian)解釋幾個(ge)常見問題:
1.RT-Thread從哪里而來?
RT-Thread RTOS,Kernel部分完成于2006年上(shang)半年,創始人(ren)源于國(guo)內(nei)(nei)一老牌RTOS:DOOLOO RTOS,甚至(zhi)是BSP一些結構都源于DOOLOO RTOS。但與(yu)DOOLOO RTOS明(ming)顯不同的是,Kernel完全(quan)重新編寫,突(tu)出的是實時性和小而靈活,并且引(yin)入了內(nei)(nei)核(he)的對象(xiang)模型以摒(bing)棄(qi)內(nei)(nei)核(he)對象(xiang)的與(yu)動態內(nei)(nei)存管理(li)器無關化。
2.RT-Thread用于商業產(chan)品(pin)&工(gong)程,版權(quan)如(ru)何(he)界定?
RT-Thread RTOS內核部(bu)分完全由我們(men)編寫,無其他(ta)版(ban)權問(wen)題(ti),可以放心在商(shang)業(ye)產(chan)品(pin)(pin)&工程(cheng)中使(shi)(shi)用。對于把(ba)RT-Thread使(shi)(shi)用于商(shang)業(ye)產(chan)品(pin)(pin)中,我們(men)承(cheng)諾永久(jiu)不(bu)收費(使(shi)(shi)用人(ren)擁有(you)(you)使(shi)(shi)用權,使(shi)(shi)用用途責任請自行承(cheng)擔)。另外(wai)有(you)(you)兩點需要注意(yi):
- RT-Thread RTOS代(dai)碼(ma)原始(shi)版權屬于RT-Thread所有。
-在商(shang)業產品&工程中使用RT-Thread RTOS,請在產品說(shuo)明書上(shang)明確說(shuo)明使用了(le)(le)RT-Thread,如有(you)串口輸出,請在系(xi)統啟動顯(xian)示RT-Thread的版(ban)本信息。如使用了(le)(le)RT-Thread RTGUI,請保留RT-Thread LOGO。
3.RT-Thread RTOS由誰(shui)開發,由誰(shui)維護?
目前RT-Thread RTOS由國(guo)內(nei)RT-Thread工作室(shi)開發及維(wei)護
4.RT-Thread RTOS是否已經在(zai)產品中使用(yong)?穩定度(du)&BUG情況如(ru)何?
目前已(yi)經有數(shu)家公司(si)使(shi)用RT-Thread RTOS做為他們的系統平(ping)臺,在上面進行產品開發,穩定性(xing)表(biao)現不錯。
就如同沒有100%的(de)完美事(shi)物(wu)一樣,BUG是存在(zai)的(de),反饋上來我們會(hui)努力盡(jin)快修(xiu)正。
5.我能加入到(dao)RT-Thread的開發者隊伍中嗎?
能!
我們歡迎任何對RTOS感興趣的(de)(de)人(ren)(ren),不(bu)管你是學生或資深嵌入式(shi)系統開發(fa)工程師。RT-Thread的(de)(de)開發(fa)人(ren)(ren)員通常依賴于論壇(tan)、郵件、GTalk進行聯系交流(liu),由于目(mu)前(qian)上海的(de)(de)開發(fa)人(ren)(ren)員比較多一些,所(suo)以(yi)會(hui)不(bu)定期(qi)的(de)(de)在上海舉行開發(fa)者聚(ju)會(hui)。
6. RT-Thread依靠(kao)什么持(chi)續發展下去,能夠(gou)盈利嗎?
目前RT-Thread的發(fa)(fa)(fa)展(zhan)(zhan)(zhan)主要依賴于(yu)(yu)大(da)家的興趣(qu)愛好,大(da)多數(shu)都是(shi)在業余時間進行開發(fa)(fa)(fa)的。以后會通過技術(shu)支持(chi)(chi)(chi)、組件(jian)定制、組件(jian)開發(fa)(fa)(fa)、輔助(zhu)工具等(deng)方式進行盈利(li)。從幾大(da)開源軟(ruan)件(jian)來看(kan),商業支持(chi)(chi)(chi)是(shi)軟(ruan)件(jian)持(chi)(chi)(chi)續發(fa)(fa)(fa)展(zhan)(zhan)(zhan)不可或缺的一部分(fen),所以我們希望能夠有(you)更(geng)多的公司選擇RT-Thread RTOS做為(wei)系統平(ping)臺,這(zhe)個(ge)對(dui)于(yu)(yu)公司、對(dui)于(yu)(yu)整個(ge)RT-Thread社區(qu)都是(shi)雙贏的局(ju)面。對(dui)于(yu)(yu)公司,能夠獲得免費(fei)的RTOS套件(jian),同(tong)時也(ye)能夠推動著(zhu)(zhu)這(zhe)個(ge)RTOS套件(jian)不斷的朝著(zhu)(zhu)穩定的方向發(fa)(fa)(fa)展(zhan)(zhan)(zhan)。對(dui)于(yu)(yu)我們,有(you)公司支持(chi)(chi)(chi)的發(fa)(fa)(fa)展(zhan)(zhan)(zhan)無疑會令RT-Thread的發(fa)(fa)(fa)展(zhan)(zhan)(zhan)更(geng)上一層(ceng)樓,當然也(ye)意味著(zhu)(zhu)以后的支持(chi)(chi)(chi)費(fei)用(yong)有(you)著(zhu)(zhu)落啦。
=========
問(wen)題(ti)(ti)完了(le),開始(shi)進(jin)入(ru)(ru)0.3.x系列的(de)(de)主題(ti)(ti)。在(zai)對外發(fa)布(bu)(bu)上,相信(xin)大家已(yi)(yi)(yi)經(jing)看到了(le),RT-Thread已(yi)(yi)(yi)經(jing)進(jin)入(ru)(ru)了(le)0.3.x的(de)(de)密集發(fa)布(bu)(bu)周期(qi)。RT-Thread/STM32F103VB已(yi)(yi)(yi)經(jing)發(fa)布(bu)(bu)了(le)0.3.0系列的(de)(de)3個(ge)beta版本,RT-Thread/STM32F103ZE已(yi)(yi)(yi)經(jing)發(fa)布(bu)(bu)了(le)0.3.0系列的(de)(de)2個(ge)beta版本,RT-Thread/LPC2148已(yi)(yi)(yi)經(jing)發(fa)布(bu)(bu)了(le)一(yi)(yi)個(ge)0.3.0系列的(de)(de)beta版本。接下來會考慮發(fa)布(bu)(bu)RT-Thread/LM3S的(de)(de)第一(yi)(yi)個(ge)beta版本(汗一(yi)(yi)個(ge),剛發(fa)過了(le)的(de)(de)板(ban)子有(you)些(xie)硬件問(wen)題(ti)(ti),返(fan)修了(le))...
這些版本,大多數(shu)上(shang)會包含:Kernel + FinSH shell + Filesystem + LwIP等。
0.3.0系(xi)列(lie),RT-Thread還包括兩大內容(rong):
-編程指南文檔
- RTGUI圖形界面系統
編(bian)(bian)程(cheng)指(zhi)南(nan)一(yi)(yi)直在修訂(ding),比較遺憾文(wen)(wen)(wen)筆有限,所以文(wen)(wen)(wen)檔(dang)還請大(da)家不(bu)(bu)(bu)要太挑(tiao)剔(ti),有什么建議歡迎大(da)家提(ti)出來。關于編(bian)(bian)程(cheng)指(zhi)南(nan),還要提(ti)一(yi)(yi)句的是(shi)(shi),這(zhe)份(fen)(fen)文(wen)(wen)(wen)檔(dang)是(shi)(shi)一(yi)(yi)份(fen)(fen)編(bian)(bian)程(cheng)的指(zhi)南(nan),在RT-Thread上編(bian)(bian)程(cheng)需要考慮的地(di)方都會提(ti)出來。但是(shi)(shi),它(ta)并(bing)不(bu)(bu)(bu)是(shi)(shi)一(yi)(yi)份(fen)(fen)代碼(ma)分(fen)析(xi)的文(wen)(wen)(wen)檔(dang),雖然它(ta)可能會提(ti)到內部(bu)的一(yi)(yi)些大(da)致結構(gou)框架(jia),但它(ta)不(bu)(bu)(bu)會對代碼(ma)進行(xing)(xing)一(yi)(yi)行(xing)(xing)行(xing)(xing)分(fen)析(xi),所以請大(da)家多多注(zhu)意。
另外(wai)的(de)(de)RTGUI組件,會(hui)是以后的(de)(de)重點任(ren)務,目前的(de)(de)打算是在現有的(de)(de)STM32F103ZE開發(fa)板上實現一套可用的(de)(de)手持終端設(she)備(bei),當然也(ye)依然延續RT-Thread的(de)(de)習慣,這套東西會(hui)以開源的(de)(de)形式釋(shi)放出(chu)來。在s3c2410/2440上,這套GUI表現得(de)是相當不錯的(de)(de),面向對(dui)象的(de)(de)設(she)計(ji),獨立的(de)(de)控件對(dui)象模型,留(liu)給了(le)用戶最大的(de)(de)可擴展性。
其他的(de),caoxulong的(de)x86分支在整理(li)完畢后也(ye)會放到0.3.0這(zhe)個分支上來,通過這(zhe)個分支大家可以完全摒棄開(kai)發(fa)板(ban),在PC或VMWare/QEMU上體驗RT-Thread。LPC系列分支,苦于目前開(kai)發(fa)板(ban)不足(zu),所以進(jin)展慢一些,上次發(fa)布的(de)RT-Thread /LPC2148 0.3.0 beta1也(ye)只(zhi)能包含SD卡、以太(tai)網口(kou)驅動框架,這(zhe)個系列會把wyoujtg/風城少主的(de)LPC2106的(de)移植合(he)并進(jin)來。
文件系統這(zhe)塊現(xian)在(zai)代碼已經發布出來(lai)了,其實(shi)里面還包括(kuo)另外一個分支的(de):DFS-FAT,這(zhe)個分支就如(ru)同DFS一樣,是我們自己編寫的(de),也能夠支持NandFlash等介質上的(de)壞塊管理,寫了很多個測試例(li)子在(zai)測,等通(tong)過壓力(li)測試后會取代目前的(de)DFS-EFSL發布出來(lai)。