中國嵌入式系統(tǒng)產(chǎn)業(yè)聯(lián)盟/北京麥克泰軟件技術(shù)公司 何小慶
最近大家都在談?wù)撐锫?lián)網(wǎng),人人都在做智能硬件,F(xiàn)reeRTOS也似乎被推到了風(fēng)口浪尖,很多MCU芯片公司的開發(fā)板、SDK開發(fā)套件也都移植到了FreeRTOS上。著名的智能手表Pebble OS的內(nèi)核使用了FreeRTOS,博通的WICED Wi-Fi SDK也推薦使用FreeRTOS,到底是什么讓FreeRTOS火起來了?
FreeRTOS項目是由Richard Barry在英國創(chuàng)建的。Richard大學(xué)時學(xué)習(xí)的是計算機(jī)實時系統(tǒng)專業(yè),他參與創(chuàng)建過幾個公司,主要專注于工業(yè)自動化、航天和仿真市場。Richard現(xiàn)在是Real Time Engineers Ltd的技術(shù)總監(jiān)、擁有者和FreeRTOS項目的維護(hù)者。
FreeRTOS最初的目標(biāo)是提供一個免費(fèi)的、容易使用的RTOS解決方案。無論使用Windows還是Linux,都不需要特別關(guān)注源代碼文件路徑在哪里,或者調(diào)試環(huán)境如何配置,F(xiàn)reeRTOS都很容易構(gòu)建和運(yùn)行。
FreeRTOS項目大約開始于2003年,每一個版本在正式發(fā)布zip壓縮包之前,都經(jīng)過完整的測試以確保產(chǎn)品的穩(wěn)定,而且壓縮包里面包含一個簡單的入門項目示例,幫助初學(xué)者學(xué)習(xí)和理解。
FreeRTOS是一個RTOS(實時多任務(wù)操作系統(tǒng))的內(nèi)核,支持近60家公司的140種 MCU(微控制器)和MPU(微處理器),涵蓋8、16、32位架構(gòu),F(xiàn)reeRTOS支持開發(fā)者使用IAR、GCC和Keil等編譯器預(yù)編譯的工程項目。最近FreeRTOS自己開發(fā)了“FreeRTOS+TCP”和“FreeRTOS+FAT”兩個內(nèi)核之上的附加模塊(稱為中間件),這兩個產(chǎn)品在FreeRTOS官網(wǎng)FreeRTOS.org的FreeRTOS lab頁面中可以找到。
目前最新的FreeRTOS壓縮載包的版本是8.2.2,壓縮包解壓后有以下幾個文件目錄:
①FreeRTOS/source包含F(xiàn)reeRTOS實時內(nèi)核的源代碼;
②FreeRTOS/demo包含了FreeRTOS內(nèi)核針對不同嵌入式處理器和編譯器的官方移植和demo項目,比如CORTEX_LPC1768_IAR,能夠支持 NXP Cortex LPC1768 MUC使用IAR EW ARM編譯器項目工程文件;
③FreeRTOS-Plus包含F(xiàn)reeRTOS和第三方的中間件,包括:CLI(命令行)、FAT-SL(標(biāo)準(zhǔn)文件庫)、IO(POSIX標(biāo)準(zhǔn)外設(shè)庫)、NABTO(點對點連接云服務(wù))、UDP、Trace(內(nèi)核跟蹤分析)和CYASSL(嵌入式SSL)等模塊,開發(fā)者需要注意的是上面產(chǎn)品的授權(quán)方式可能與FreeRTOS不同,請仔細(xì)閱讀對應(yīng)代碼目錄下的授權(quán)文件;
④FreeRTOS-Plus/Demo目錄下包含了FreeRTOS中間件預(yù)配置好的工程文件,有些工程文件需要運(yùn)行在Windows仿真環(huán)境下。
某些第三方的中間件沒有包括在FreeRTOS壓縮包內(nèi),比如Interniche TCP/IP協(xié)議棧軟件,它包括IPV4/V6和各種網(wǎng)絡(luò)應(yīng)用(比如 HTTP/SNMP/FTP)的源代碼和二進(jìn)制版本。FreeRTOS+Trace是瑞典Percepio公司的商業(yè)軟件,提供FreeRTOS應(yīng)用運(yùn)行時的診斷功能,見圖1。FreeRTOS壓縮包里面提供的是一個Windwos仿真環(huán)境的免費(fèi)版本。WITTENSTEIN High Integrity Systems(WHIS)是一家英國公司,它是Real Time Engineers Ltd(FreeRTOS)官方的商業(yè)合作伙伴,他們開發(fā)的SafeRTOS是基于FreeRTOS技術(shù)、經(jīng)過安全認(rèn)證的實時操作系統(tǒng)內(nèi)核,這些安全認(rèn)證包括EC 61508、EN62304和FDA 510(k)等。
FreeRTOS內(nèi)核采用的是GPL授權(quán)方式,但它是一個修改后的GPL協(xié)議。FreeRTOS的GPL授權(quán)給了這樣一個例外條件:即這些獨立模塊如果使用的是FreeRTOS API與FreeRTOS進(jìn)行通信,并且這些獨立模塊不涉及內(nèi)核和內(nèi)核調(diào)度,也沒有對任務(wù)、任務(wù)通信和信號量等內(nèi)核功能作出改動,這些模塊可以不按照GPL方式公開源代碼[1]。與通用的GPL條款不同的是:開發(fā)者、芯片公司和設(shè)備制造商不會被要求公開自己與FreeRTOS內(nèi)核不直接相關(guān)模塊(稱為獨立模塊)的源代碼,如應(yīng)用、驅(qū)動和中間件,見圖2。Linux內(nèi)核采用的就是通用GPL條款。
圖1 FreeRTOS+Trace的診斷功能
圖2 FreeRTOS內(nèi)核授權(quán)方式參考
FreeRTOS demo目錄下的第三方軟件的授權(quán),不在FreeRTOS內(nèi)核授權(quán)范圍,請閱讀相關(guān)目錄下的授權(quán)文件,比如前面提到的FreeRTOS+Trace就是一個商業(yè)軟件,只不過在壓縮包里面提供了一個免費(fèi)版本。還有一些在FreeRTOS內(nèi)核源代碼里面,既不屬于FreeRTOS版權(quán),又不屬于GPL授權(quán)范圍,如芯片公司頭文件(header file)、外設(shè)驅(qū)動(如SPI、中斷和timer等)和編譯器公司的頭文件(如IAR和keil),開發(fā)者和設(shè)備制作商需要聯(lián)系芯片公司了解他們的授權(quán)方式和要求。μIP TCP/IP協(xié)議的作者是Adam Dunkels,作為開源軟件,授權(quán)的細(xì)節(jié)可以從μIP的源代碼文件夾里面獲得。lwIP TCP/IP協(xié)議的擁有者是瑞典計算機(jī)科學(xué)研究所,也是一個開源軟件,授權(quán)細(xì)節(jié)可以從lw IP的源代碼文件夾里面獲得。
另外,F(xiàn)reeRTOS的授權(quán)聲明中還包括了以下條款:除非得到Real Time Engineers Ltd公司允許,任何人不得用于以操作系統(tǒng)運(yùn)行和編譯時間測量為目標(biāo)的出版物,關(guān)于這點研究機(jī)構(gòu)和高校應(yīng)該尤為注意。
為了減少一些企業(yè)和設(shè)備制造商對于GPL授權(quán)條款、技術(shù)支持、服務(wù)和其他知識產(chǎn)品等有關(guān)的法律問題,F(xiàn)reeRTOS還有一種商業(yè)授權(quán)版本(OpenRTOS)可供用戶選擇,OpenRTOS由英國 WITTENSTEIN High Integrity Systems公司提供授權(quán)和技術(shù)支持。表1給出了FreeRTOS和OpenRTOS的比較,據(jù)悉國內(nèi)已經(jīng)有汽車電子企業(yè)在電動汽車項目中購買OpenRTOS商業(yè)授權(quán)。
關(guān)于設(shè)備制造商使用了FreeRTOS之后,如何遵循GPL原則發(fā)布源代碼和聲明文件,可以參考Pebble公司的Pebble OS。Pebble是一家美國著名的智能手表公司,它開發(fā)的智能手表操作系統(tǒng)Pebble OS內(nèi)核是基于FreeRTOS的,因為智能手表App任務(wù)權(quán)限管理的需要,修改了內(nèi)核本身的一些功能(如MPU的管理方式和軟中斷等內(nèi)核功能),因此必須公開修改過的Pebble OS內(nèi)核以及相應(yīng)的說明文檔[2]。
FreeRTOS是一個非常容易使用的RTOS,也得到了許多流行的 MCU芯片、開發(fā)板和工具的支持。筆者在2015年春季給北京航空航天大學(xué)軟件學(xué)院物聯(lián)網(wǎng)技術(shù)與應(yīng)用專業(yè)開設(shè)的《可穿戴系統(tǒng)設(shè)計與實現(xiàn)》課程中,就講授了FreeRTOS。Pebble智能手表作為使用了FreeRTOS的典型可穿戴設(shè)備成為課堂案例,課程中的實驗平臺采用了STM32 Nucleo開發(fā)板(Pebble使用的是STM32 Cortex-M3),Nucleo軟件中間件就包含F(xiàn)reeRTOS移植好的源代碼和應(yīng)用工程項目。
表1 FreeRTOS和OpenRTOS的比較
博通公司的WICED Wi-Fi SDK,還有其他公司物聯(lián)網(wǎng)操作系統(tǒng)也在使用FreeRTOS[3],實時性和尺寸小是FreeRTOS重要的技術(shù)因素,采用GPL授權(quán)方式,更符合互聯(lián)網(wǎng)開放和共享精神,應(yīng)該是更重要的原因。FreeRTOS修改后的GPL條款考慮了芯片、開發(fā)者和設(shè)備商隱私要求,更加合理和富有靈活性,這與Android OS授權(quán)方式有著異曲同工之處[4]。
[1]License detail[EB/OL].[2015-09].http://www.freertos.org/a00114.html.
[2]FreeRTOS Code Revisions From Pebble[EB/OL].[2015-09].http://developer.getpebble.com/blog/2014/05/23/FreeRTOS-Modifications-From-Pebble/.
[3]何小慶.物聯(lián)網(wǎng)操作系統(tǒng)淺析[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(1).
[4]何小慶.Linux和Android:哪個是你下一個設(shè)計的正確選擇?[EB/OL].[2015-09].http://www.eefocus.com/allenhe/blog/13-03/292378_84176.html.