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