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