はじめに
マイコンを使った開発を進めていくと、「RTOS(リアルタイムOS)を使うべきか、使うならどれを選べばいいか」という疑問に直面します。
最初はArduinoのloop()関数でなんとかなっていても、センサーの読み取り・ディスプレイの更新・Wi-Fiの送受信を同時にこなそうとした途端に処理が追いつかなくなった、という経験をした方も多いのではないでしょうか。そんなときに頼りになるのがRTOSです。特にBLEやWi-Fiなどの無線機能を使う場合、通信スタックがバックグラウンドで動き続ける必要があるため、タスク管理ができるRTOSとの相性は抜群です。
有名なFreeRTOSを選ぶ人が多いですが、実際にはほかにも多くの選択肢があります。日本で作られたもの、Linuxに近いAPIを持つもの、クラウドサービスと連携しやすいものなど、それぞれに特徴があります。
この記事では、組み込み開発でよく使われる6つのRTOSを取り上げ、API設計・メモリ管理・ライセンス・対応アーキテクチャの観点から比較します。RTOSを選ぶ際の参考になれば嬉しいです。
リアルタイムOSとは
RTOS(Real-Time Operating System、リアルタイムオペレーティングシステム)は、タスクを決められた時間内に処理することを保証するOSです。
RTOSとかいて「アールトス」と読むのが一般的です。
通常のOSと異なり、RTOSでは処理の「速さ」よりも「予測可能性」が重要です。センサーの読み取り、モーター制御、通信処理など、タイミングがずれると誤動作につながる処理を複数並行して管理するために使われます。
RTOSが提供する主な機能は以下のとおりです。
- タスク管理: 複数の処理を優先度つきで並行実行する
- 同期・通信: セマフォ、ミューテックス、メッセージキューなど
- タイマ管理: 周期処理やタイムアウト処理
- メモリ管理: 動的・静的なメモリ割り当て
比較
今回は、6種類のRTOSについて比較を行います。
RTOS | 開発元 | 主な対応アーキテクチャ | ライセンス | 公式サイト |
|---|---|---|---|---|
FreeRTOS | Amazon Web Services (AWS) | ARM Cortex-M/A, RISC-V, xtensa, x86 | MITライセンス | |
μT-Kernel 3.0 | トロンフォーラム | ARM Cortex-M, ルネサス RX | T-License 2.2 | |
Zephyr RTOS | Linux Foundation | ARM, RISC-V, x86, ARC, Xtensa, MIPS | Apache License 2.0 | |
TOPPERS | TOPPERSプロジェクト | ARM Cortex-M/A, RISC-V, RX | TOPPERS ライセンス | |
ThreadX(Azure RTOS ) | Microsoft → Eclipse Foundation | ARM Cortex-M/A, RISC-V, RX | MITライセンス | |
NuttX | Apache Software Foundation | ARM Cortex-M/A/R, RISC-V, x86, MIPS, Xtensa | Apache License 2.0 |
FreeRTOS
FreeRTOSはRTOS市場で最も広く使われているオープンソースのリアルタイムOSです。もともとRichard Barry氏が個人プロジェクトとして開発し、2017年にAWS(Amazon)が取得。現在も活発にメンテナンスされています。
最大の強みは「情報量の多さ」です。Stack Overflow・Qiita・GitHubのIssueには膨大な事例が蓄積されており、困ったときに検索すればほぼ解決策が見つかります。40以上のアーキテクチャに対応し、STM32・ESP32・RP2040など人気MCUのサンプルコードが豊富に揃っています。AWS IoTとの統合も容易で、クラウド接続を前提としたIoT開発に向いています。タスクの優先度は数字が大きいほど高優先度となります(最大値はconfigMAX_PRIORITIES-1)。
μT-Kernel 3.0
μT-Kernel 3.0はTRONプロジェクトの流れを汲む日本発のRTOSです。トロンフォーラムが仕様を策定・公開しており、IoTの普及を見据えた小型組込み機器向けとして設計されています。T-Kernelの後継として国内製造業に長年の実績があります。またIEEE 2050-2018規格に準拠しており、国際標準に則った設計となっています。
日本語ドキュメントが充実しています。ライセンスはT-License 2.2で、商用製品への組み込みも無償で利用できます。国内の学術機関・産業機器メーカーでの採用実績が豊富で、日本語での情報収集がしやすい点も魅力です。ただし、コミュニティの大きさはFreeRTOSと比較すると小さめです。
Zephyr RTOS
ZephyrはLinux Foundationが主導するオープンソースRTOSで、近年最も勢いのあるプロジェクトのひとつです。Intel・Nordic Semiconductor・NXP・Qualcommなど大手半導体メーカーが開発に参加しており、エコシステムの成長が急速です。
対応アーキテクチャの幅広さが特徴で、ARM Cortex-M/A/R・RISC-V・x86・ARC・Xtensaなど非常に多くのプラットフォームに対応しています。Bluetooth Low Energy・Wi-Fi・Thread・Zigbeeなど無線プロトコルスタックが公式に充実しており、IoTデバイス開発に強みがあります。KconfigベースのビルドシステムはLinux開発者にとっても馴染みやすい設計です。
TOPPERS
TOPPERSは名古屋大学の高田広章教授が豊橋技術科学大学在職中に中心となって立ち上げたオープンソースRTOSプロジェクトです。ITRON仕様をベースに、教育・研究・産業応用の幅広い用途向けに複数のカーネルバリアントを提供しています。
車載分野での強みが際立っており、AUTOSAR対応版(HRPK)は日本の自動車メーカー・サプライヤでの採用実績があります。また、組込みソフトウェア教育の標準的な教材としても広く使われており、IPA(情報処理推進機構)のプロジェクトとも連携しています。国内向けのセミナー・ドキュメントが充実している点も評価されています。
ThreadX(Azure RTOS )
ThreadXはもともとExpress Logic社が開発した商用RTOSで、2019年にMicrosoftが買収しAzure RTOSブランドで展開しました。2024年にはMicrosoftがEclipse Foundationへプロジェクトを移管し、「Eclipse ThreadX」としてオープンソース化が完了しています。
商用製品としての長い歴史から、エンタープライズグレードの品質が強みです。IEC 61508(機能安全)・ISO 26262(車載)・FDA 510(k)(医療機器)など多数の認証取得実績があり、安全性が要求される用途に適しています。FileX・NetX Duo・GUIX・UXBSなど充実したミドルウェアスイートも付属します。
NuttX
NuttXはGregory Nutt氏が開発しApache Software Foundationに寄贈したRTOSです。他のRTOSと一線を画す最大の特徴は「POSIXへの徹底した準拠」で、LinuxアプリをほぼそのままMCU向けに移植できる設計になっています。
最も有名な採用事例はドローンのフライトコントローラ「PX4」で、SpaceXのStarlink衛星にも採用されたことで注目を集めました。MPUクラスのデバイス(ARM Cortex-AやRISC-V 64bit)でも動作し、「Linuxに近い開発体験をリアルタイム性を保ちながら実現したい」用途に最適です。ファイルシステム・USB・ネットワークスタックを標準搭載しています。
おわりに
RTOSというと「業務用・量産品向け」というイメージがあるかもしれませんが、最近はホビー用途でも十分に活用できる環境が整ってきました。
趣味でマイコンを触るなら、まずはFreeRTOSが無難な出発点です。ESP32やRP2040など手に入りやすいボードとの組み合わせで日本語の情報も豊富にあり、「LEDを点滅させながらセンサーを読む」といった複数タスクの同時処理をサクッと試せます。もう少し本格的な無線通信やBLEを使いたくなったらZephyrへの移行も選択肢に入ってきます。
「Linuxは知っているけど組込みは初めて」という方にはNuttXが面白い選択肢です。使い慣れたPOSIXのAPIがそのまま使えるので、Raspberry Piで書いたコードをマイコンに持ち込みやすいのが魅力です。
RTOSはハードルが高く見えがちですが、最初の一歩はL チカや温度センサーの読み取りといった小さなプロジェクトで十分です。「なんとなく動いた」という体験を積み重ねていくうちに、割り込み・タスク管理・優先度といった概念が自然と身についていきます。ぜひ気軽に試してみてください。