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