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