RT-Thread實時操做系統是一個分層的操做系統,它包括了:php
• 組件層components,這些是基於RT-Thread核心基礎上的外圍組件,把一些功能模塊劃分紅獨立的一個個組件模塊,作到組件與組件之間的低耦合,組件內部的高內聚。html
例如文件系統,命令行shell接口,lwIP輕型TCP/IP協議棧,GUI圖形用戶界面等。前端
• 硬實時內核kernel,這層是RT-Thread的核心,包括了內核系統中對象的實現,例如多線程及其調度,信號量,郵箱,消息隊列,內存管理,定時器等實現。node
•分支接口porting,主要由libcpu以及不一樣硬件平臺的bsp構成,即RT-Thread支持的一個個芯片移植,外設驅動等python
在官網http://www.rt-thread.org/下載RT-Thread v2.0.0正式版,解壓後:算法
bsp: 針對各個具體開發板、平臺的目錄,其中包含相應的Keil工程文件(若是包含了Keil MDK的移植)shell
components:各個組件,如dfs/drivers/finsh/gdb/libc/libdl/net/vbus/vmm等編程
documentation/examples:輔助文檔以及一些內核、組件的測試實例瀏覽器
include:包含了RT-Thread內核頭文件多線程
libcpu: 面向各個芯片cpu移植的代碼
src:包含了RT-Thread內核源文件
tools:支持各類集成開發環境的python文件,如常見的iar.py/keil.py/sconsui.py/vs2012.py
v2.0.0版本相對v1.2.x版本,又加入衆多新功能,有些頗有趣,有些很實用:
1. 設備驅動框架在v2.0.0版本中進一步完善。DeviceDriver在RT-Thread中相似抽象的驅動框架層,初衷是,嚮應用層(或組件)提供標準統一的接口,向下(底層硬件)提供簡化的編程模型,在v2.0.0版本中,新添加了:SPI NorFlash(ATMEL/SST/華邦等廠家),SPI ETH(ENC28J60),SPI WiFi(RW009)等的驅動,這些驅動依賴於RT-Thread的SPI抽象模型,提供了抽象、無需修改的外設驅動代碼;相似的,創建在I2C驅動框架上,v2.0.0版本也引入了sensor的驅動框架,並提供了MPU6050、BMI055等傳感器的驅動;做爲雜類設備的嘗試,GPIO(IO pin)的抽象框架也終於在這個版本提出來了,之後點燈簡單啦!
2. 在1.x系列版本中,USB device/host框架支持得通常,不能說很是棒,而在v2.0.0版本中,USB框架經過逐步的重構,也開始走向成熟,在服務公司裏也應用到多個項目,多個處理器上;
3. 爲了方便的切換不一樣的編譯器平臺,在v2.0.0版本中也把原來的minilibc/newlib/armlibc用統一的宏替換:RT_USING_LIBC。老版本的代碼遷移過來,請注意下使用新的、統一的宏:RT_USING_LIBC。同時也加入了IAR的dlib,這樣當配置中打開LIBC時,scons將會自動根據你當前使用的編譯器來自動選擇不一樣libc庫的移植;
4. GDB stub,這部分是CSDN編程夏令營活動的成果之一,一直以爲相似夏令營的活動很好,能夠拉近學生和開發者的距離。經過這個組件,終於可讓RT-Thread能夠進行軟件方式的調試了,雖然是命令行方式的GDB,但它也有不少圖形化前端配合來進行源碼級的調試仿真;
5. lwIP相關的更新。這個貌似有不少,引爆點應該說是一個很熱門的詞:物聯網。圍繞着這個,v2.0.0版本中加入了RW009這樣的簡單易用的Wi-Fi網卡驅動,IPv4/v6雙協議棧的支持,DHCP server,甚至是NAT這樣的地址轉換實現,哦,用RT-Thread來作小路由,網關變成了可能。哦,RT-Thread的目標並非物聯網,更重要的是它是一套基礎性的軟件平臺。
6. 隨着Linux/RT-Thread同時執行的方式,相應的VMM組件,VBUS組件也在這個版本上發佈出來。VMM組件更多的側重於單核,Linux/RT-Thread雙系統並行執行以得到更好的實時性,而VBUS組件則解決了Linux/RT-Thread雙系統之間的數據通訊問題。二者是相輔相成的。這兩個組件要求的技術性也更高,通常用於一些可靠性要求很是高的場合。在RT-Thread 2.0.0版本中也終於支持了LPC4357這樣的小異構系統(LPC4357中包含了ARM Cortex M4/M0兩個異構核心),實現了M4/M0上分別運行RT-Thread系統,二者之間則經過VBUS進行通訊。因此,對多系統/VBUS感興趣的同窗能夠從LPC4357上入手。
在開發的過程當中也出現了一個附加品,QEMU/realview上模擬執行RT-Thread(或者Linux/RT-Thread)的BSP,它可讓未經修改的標準QEMU,去軟件仿真模擬執行RT-Thread,或更進一步,執行Linux/RT-Thread。
RT-Thread v2.1.0 roadmap
下一個版本應該是一個小版本,不可能老是相似原來,每次都出大版本不少人來詢問過下一個版本的計劃是什麼。其實我想說,RT-Thread是一個開源社區,RT-Thread的後續發展在社區,屬於每個社區參與者,你想在裏面加入什麼樣的功能,作好哪部分的工做,關鍵在於每一個社區的參與者。只要符合RT-Thread的東西(例如許可證上沒有衝突),我也沒理由不把它放到RT-Thread開發主幹上來。因此我下面說起的更多表明的是我我的的一些想法,社區仍是須要更多的多樣性,社區是屬於你的,只要你參與進去作!
1. CloudIDE,這個是託管在http://lab.rt-thread.org/cloudide 上(可能由於備案的問題暫時不通)的在線方式的集成開發環境,嗯,有些相似mbed可是但願有本身的特點,以及但願它是屬於國內的Online IDE,速度可以快些。這部分也在密集的進行改版,演變成多標籤頁編輯方式;配合Wi-Fi入門套件,進行在線方式更新固件;加入開發者間的代碼片斷,組件分享功能;集成文檔幫助等信息等等;建立這個的初衷是但願新手入門可以方便些,而不是受搭建開發環境的困擾,須要的只是一個瀏覽器。Wi-Fi入門套件,暫時稱爲ART-wifi吧,簡單的名字就是一個稱呼,名字而已。
2. 去年12月份上海嵌入式沙龍活動中,weety提到了POSIX兼容性的問題,致使Linux的一些程序並不那麼容易移植過來(或者說後續的代碼一致性),這裏主要問題在於BSD socket接口是徹底屬於lwIP協議棧,而和RT-Thread的文件接口不要緊,因此在RT-Thread上沒有socket/file descriptor/device間的select/poll/read/write等調用;另一個隱含問題是,POSIX實現也不是那麼標準,可能裏面還有一些坑等。這個問題是一個大問題,由於關鍵點在於,你們既然選擇了開源的系統,那麼他確定也考慮到開源生態很好,有不少的資源可使用,能夠左右逢源。。。因此,RT-Thread也須要以更開放的姿態來解決這個問題,使得它可以更開放,加強POSIX標準自己的親和力。相相似的,它也應該更好地支持一些C++標準,基礎設施RT-Thread已經提供了,後面如何去應用,那麼就看用戶的想法、創新性有多大了。
3. 一些重型平臺的支持,例如市場上新出的一些堆疊封裝了SDRAM/DDR的ARM9,Cortex-A8/9,MIPS32/64,甚至是x86,這個確定也會逐步地演變成RT-Thread的目標硬件平臺,可是這個投入也會比較重。若是上面的第二項解決了,也不是不可能,首要解決的是底層驅動的問題,這樣後續就比較容易和上面的組件、應用粘合起來。
好了,如下是想到的無責任feature list,感興趣的同窗能夠來認領:
* CloudIDE相關
- 完善NAT功能,把ART-wifi變成一個Wi-Fi中繼(路由)。
- 期待在CloudIDE上分享MQTT組件,CoAP組件;
- 期待把ART-wifi變成一個Wi-Fi/6LoWPAN網關。
- 期待把ART-wifi變成一個Wi-Fi/nRF51822 6LoWPAN網關,Wi-Fi/nRF51822 BLE網關;
- 期待把ART-wifi變成一個多軸飛控,並跑一些PX4的算法代碼;
- 期待在CloudIDE上分享樂聯網物聯網接入組件;
- 期待在CloudIDE上分享yeelink物聯網接入組件;
- 期待在CloudIDE上分享SSL組件;
- 期待在CloudIDE上分享阿里雲,機智雲,百度雲,騰訊雲等等接入組件;
- 更多的傳感器驅動,例如氣壓計,溫度計,光照,9軸傳感器等;
- 期待在CloudIDE上加載RealBoard 4088 APP開發功能;
- 期待在CloudIDE上加入圖形用戶界面設計功能;
- 期待把CloudIDE變成本地化的桌面應用程序;
* POSIX相關
- 針對lwIP實現DFS上相應的lwIP fs接口,讓DFS的fd和lwIP socket關聯起來;實現select/poll接口;
- 更好的把device接口和DFS devfs融合起來;協同實現好select功能;
- 加入更多POSIX相關接口,包括但不限制於aio,signal等功能;
- 整理DeviceDriver框架,讓device接口,和各自設備驅動接口分離開來。應用程序更多的傾向於使用device接口,固件開發可使用設備驅動接口;
* 其它
- openbsd的TCP/IP協議棧移植;openbsd POSIX外圍接口移植;
- canopen組件;
- ARM Cortex-A8/A9 + M4/M3的多系統(硬件)平臺;
- 其餘一些硬件移植;
以上摘自http://www.rt-thread.org/phpBB3/topic3965.html
與v2.0.0RC版本相比,主要有如下改進:
內核
console以RT_DEVICE_FLAG_STREAM參數打開字符設備;
在rt_memheap_free中加入更多的斷言檢查;
組件
更新RW009驅動以支持Wi-Fi SoftAP模式(aozima);
修正sensor框架的一些問題,並加入C API接口(睿賽德服務公司提供);
加入MPU6050 sensor的代碼(bernard, Coing);
加入BMI055 sensor的代碼(Coing);
當未使能heap時,修正finsh/msh中list_memheap的問題;
修正LIBC編譯的警告;
加入IAR dlib相關的移植,使得應用可以使用標準的API接口;
修正YMode握手時可能引發的競爭問題(grissiom);
更新FreeType版本到2.5.4
單獨把C++的全局對象初始化放到cplusplus_system_init函數中,並在初始化線程中調用;
finsh中以RT_DEVICE_FLAG_STREAM參數打開字符設備;
添加VBUS組件用於Linux與RT-Thread系統之間,RT-Thread與RT-Thread系統之間通訊(睿賽德服務公司捐贈);
增長lwIP/NAT組件,能夠作多個網口間的地址轉換(Hicard);
增長lwIP/DHCP服務端,用於向客戶端分配IP地址(睿賽德服務公司提供);
BSP
修正LPC4357串口驅動初始化時過早打開中斷的問題(nongxiaoming);
重寫LPC4357串口驅動,並讓芯片上M4/M0核心分別都執行RT-Thread系統,兩核心之間以VBUS組件進行系統間通訊(睿賽德服務公司捐贈);
新增RX移植(limxuzheng);
新增NuMicro M051 Series移植,支持GCC、Keil MDK編譯器(bright-pan);
新增LPC54102移植(Coing);
移除STM32F4 BSP中不須要的RT_TIMER_TICK_PER_SECOND配置(pangweishen);
在Linux Clang編譯分析中,強制以32位模式進行編譯(grissiom);
修正STM32F103中串口驅動中斷過早打開的問題(armink);
工具
增長scons中的MD5支持(bright-pan);