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