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