麻雀雖小 五臟俱全:MCU專用RTOS簡述
微控制器(MCU)廣泛應用在各行各業,如各式家電、工業自動化,即時控制、資料採集等領域,為因應工控所需的即時(Realtime)控制、快速回應等需求,因此MCU大多搭載RTOS(即時作業系統)運作。隨著物聯網的興起,軟體業也為RTOS加入物聯網的成分,以提早卡位物聯網的核心軟體市場…
在一般功能(General-purpose)的處理器市場分類中,若以功能與執行速度來說,大致分為CPU > MPU > MCU。CPU的功能最強,主要應用在電腦產品;MPU功能次之,其應用多元,主要應用在嵌入式系統與精簡型電腦等多種;而MCU則是以單一應用為主,應用在各式家電、電子產品、嵌入式產品、穿戴式裝置、物聯網(IoT)應用產品等控制應用。
MCU內部整合了KHz?MHz級的CPU、KB?MB級的記憶體單元(RAM與ROM/EEPROM/Flash)、時脈產生器(Oscillator;Clock Generator)、與I/O擴充單元等,可視為一種速度較慢的系統單晶片(SoC)。
由於內部記憶體容量小,因此大型作業系統如Windows、Linux等是不可能塞入MCU去執行的,且MCU大多被應用在即時控制的環境,因此許多容量小的RTOS(Real-Time Operating System;即時作業系統),便成為開發MCU軟體的主要平台。
主打嵌入式應用的中高階RTOS
RTOS的種類繁多,主要設計給基於MPU或MCU的嵌入式系統所使用。例如MPU等級專用的有Integrity、QNX、VxWorks等功能強大之RTOS;至於體積較小巧,主要支援MCU等級為主的RTOS,則有Nucleus、ThreadX、Unison OS、ucOS II/III等等。
以Green Hills Software推出的Integrity OS為例,就是一種支援MPU (甚至CPU等級)為主的RTOS。其強項在於Integrity-178版本已通過EAL 6+?(資訊安全)認證與DO-178B(飛安環境) A級認證,被應用在極度重視安全和可靠性的市場,例如戰鬥機(如B-2、F-16、F-22、F-35)與民航機(如Airbus A380)等領域。該RTOS支援ARM、XScale、Blackfin、Freescale (已併入NXP) ColdFire、MIPS、PowerPC、AMD x86(嵌入式APU)等CPU/MPU平台。
另一個知名的QNX RTOS,採用微核心架構,是唯一成功打入商用市場的OS,其強項是多媒體的即時處理能力,適用於車(機)上娛樂裝置與手機等嵌入式市場。QNX於2010年被BlackBerry購併,並開發出BB 10作業系統。QNX支援IA32、MIPS、PowerPC、SH-4、ARM、StrongARM、XScale等CPU/MPU平台。
至於像是IntervalZero的RTX、RTX64,則是設計來與微軟Windows共存共容的RTOS,搭配EtherCAT協定來做為工廠自動化的應用。其中,Windows主要負責GUI、儲存、運算,RTX則負責即時工控與資料採集,讓工控軟體開發更容易。以上的RTOS都是MB至GB等級的MPU等級OS,不適用於MCU的環境。
主打MCU應用的商用RTOS
中低階RTOS部分,主要是把軟體功能極盡精簡到MB甚至KB等級,使整個OS與主要應用程式,均可以塞入MCU裡的ROM/EEPROM/Flash。由於MCU應用的領域更加廣泛,其軟體必須力求更加精簡,因此MCU專用的RTOS大多具備非常高度模組化的架構,從核心、驅動程式、檔案系統、週邊I/O、網路支援等,都可以量身訂作,以利產品快速上市。
商用的RTOS有些會提供原始碼給授權客戶,而開源的RTOS則更能自由使用,讓開發人員可以編譯出程式碼最小、最佳化的執行環境。
由於各晶片廠所推出的MCU產品?開發板,都會有其對應的OS與IDE(整合軟體開發環境),但這些OS與軟體開發環境可能只適用於該廠的MCU產品,因此第三方軟體廠商,就開發出跨晶片?跨硬體平台的OS與IDE,讓開發人員不須因為換了硬體平台,軟體就必須全部改寫。
目前MCU OS/IDE市場佔有率最高的,大多是軟體公司所推出商用RTOS(搭配各廠商的MCU產品),然隨著ARM推出Cortex-M、Cortex-R等指令集架構,進軍穿戴式與物聯網應用市場,使得ARM架構(採開源碼)的RTOS開始有提升的趨勢。
Mentor Graphics旗下Accelerated Technology公司所推出的Nucleus,採Microkernel設計,號稱有30億個裝置導入,優勢是核心長度可以小至2KB,且開發人員不需要撰寫嵌入式裝置專用BSP(開發板支援套裝軟體),因此被廣泛應用到消費性電子、行動裝置、車用電子、智慧能源、醫療儀器、工業?工控等領域。
早期採用聯發科MT6217晶片的大陸山寨、白牌、雙卡2G手機,就是執行Nucleus RTOS。該RTOS支援ARM、MicroBlaze、MIPS、Nios II、Power、SuperH、XScale等嵌入式MCU架構。
Express Logic推出的ThreadX,則是一套免收權利金的RTOS,其優點是具備超快速的開機時間、反應時間,其Picokernel核心長度低於2KB,並通過安全規範,號稱有21億個裝置導入使用。例如HP的旗下印表機和事務機便採用該RTOS。可廣泛支援各式32位元MCU,包含ARM、Atmel、BlackFin、CoreFire/68K、EFM32、Freescale (NXP)、FM3、H8、XMC、M-Core、MicroBlaze、MIPS、Nios II、Power、STM32、StrongARM、Synopsys ARC、TI、Win32、x86/x386、XScale等等。
Wind River公司所推出的VxWorks,主要針對嵌入式系統設計,採Monolithic (單體式)核心,優勢是具備先佔式多工處理核心、循環執行、岔斷快速反應等特性,原生支援64位元處理器架構(x64)、可進行平行(SMP)?非平行(AMP)處理,累積至今有超過15億個裝置導入。
新版VxWorks 7則瞄準IoT所需要的可擴充性、安全性、連結性、繪圖能力、虛擬化等做強化,而全功能的VxWorks微核心長度只要20KB。VxWorks廣受科技業界的採用,登陸火星的Curiosity(好奇號)便採用VxWorks。該RTOS支援Intel x86(包含Quark SoC與x86-64)、MIPS、PowerPC、SH-4、ARM等CPU/MPU架構。
RoweBots公司的Unison OS,則是一款完全相容於POSIX(可移植作業系統介面)的RTOS,適用於MCU、DSC、DSP、SoC、FPGA等32位元的硬體開發環境,其好處是特別針對物聯網的應用,提升其系統安全性,且核心程式碼在某些應用架構可以低到僅1KB。支援Microchip PIC32、Renesas R32C/SH2A、ST STM32、TI ARM Cortex-M3等32位元MCU。
Micrium的μc/OS-II (microcontroller OS version 2),主打可攜、能在ROM執行、彈性、先佔式多工的RTOS核心,可管理高達250個應用任務。μc/OS-III則主打無限應用任務、幾近於零的岔斷,並可提供原始碼給客戶。
其優勢在於該系統原始碼開放、整潔一致、註釋詳盡,亦通過FAA認證與DO-178B認證,適合各種嵌入式與物聯網的系統開發,核心大小從5或6KB?24KB。至於μc/OS-III HW-RTOS,則是針對ARM Cortex-M為主的MCU做硬體加速。該RTOS可支援超過100種DSP、MPU、MCU。
ARM MCU促使開源RTOS興起
近年來由於ARM架構的處理器橫掃全球智慧行動裝置(手機?平板)市場,除了搭配各MCU/MPU硬體平台所推出的商用RTOS/IDE之外,為進軍物聯網與穿戴式的MCU級應用,ARM推出Cortex-M與Cortex-R的指令集架構,搭配開源的OS/IDE來搶佔MCU的應用市場。
例如ARM推出的mbed OS與相關開發環境,便著重於嵌入式裝置與IoT的應用,具備連接性、高效率、安全性、生產力的OS,搭配其mbed-rtos函式庫,亦可做為RTOS的應用。該mbed開發環境,可開發出智慧家庭、智慧城市、穿戴式等應用產品。
此外,坊間針對ARM平台所推出的開源RTOS/IDE很多,例如FreeRTOS、uKOS-II、Atomthreads、BeRTOS社群版、ChibiOS/RT、CoActionOS、eCos、Embox、Erika Enterprise/RT-Druid、Keil (ARM) RTX、Lepton、nOS、Nut/OS、NuttX、RIOT、RT-Thread、TI-RTOS-KERNEL(SYS/BIOS)、TNeo等等,讓開發人員有更多的選擇。
其他專用MCU的非即時OS概述
此外,也有許多針對MCU設計的開源OS (非RTOS),但同樣具有體積小的特性,有些是針對IoT的WSN(無線感測網路)應用,例如Contiki OS、TinyOS。而有些則具備一般桌上型圖形化使用介面(GUI),例如SymbOS、Wheels OS等。
Contiki OS是一套開源的微型OS,可應用在Atmel ARM/AVR、LPC、PIC32、TI MSP430/CC2430/2538/2630/2650、STM32W等MCU做IoT應用,也可在博物館級的8位元電腦(Apple II、Atari、Commodore等)做上網連線、甚至在骨灰級遊樂器(Atari Jaguar、Game Boy/Advance、GP32、任天堂紅白機、PC Engine等)上執行。
至於SymbOS,則是一套能在8位元Z80 CPU (如MSX、Amstrad)的古董電腦上執行之免費多媒體圖形作業系統,賦予如Windows 95般的操作畫面,讓舊電腦回春。