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