2021年07月27日
コメント
組み込みデバイス開発プロジェクトにおいて、適切な組み込みオペレーティングシステム(OS)選びは欠かせないプロセスです。私はキャリアを通じて、OS関連の課題にも長年携わってきました。今回は、皆さんがプロジェクトに最適なOSを選択する際の参考として、私や同僚のSanttu Ahonen、その他のエキスパートの方々のアドバイスをご紹介します。
本稿のトピック:
組み込みOSとは組み込みデバイス/組み込みシステム専用のOSで、デバイスが動作できるよう特定のタスクを確実に実行できるように設計されています。

組み込みOSは大抵、限られた特長と機能のみを備えています。デバイスの動作に必要な1つのアクションだけを実行することもあります。ただし、そのアクションを継続的に、毎回スケジュール通りに実行しなければなりません。
組み込みOSは、IoTデバイスをはじめとする多くのデバイスやシステムに搭載されます。
Qtのポートフォリオ管理担当シニア・プロダクトマネジャーを務めるSanttu Ahonenは次のように解説します。「組み込みOSは通常、無駄がなく効率的だ。組み込みハードウェアの大部分はキャパシティもリソースも少なく、消費電力にもメモリにも非常に限りがある」。
組み込みOSには以下のような長所と短所があります。
組み込みOSには数十種類があります。多様なデバイスで使える汎用性の高いタイプもありますが、大部分の組み込みOSは特定のデバイスや業界向けです。組み込みOSの選択に当たっては、ハードウェアの設計と選択が大きく影響します。
組み込みOSは、「マイクロプロセッサとマイクロコントローラのどちらで実行するか」「特定の業界やデバイスでエンジニアが使用するタイプか」という2つの観点から分類できます。また組み込みOSは、組み込み向けのC言語をはじめとする複数のソフトウェア開発言語に対応します。
エンジニアによってデバイスに搭載された組み込みOSは、ユーザーが外側から制御できないシンプルなタスクを実行します。一方、デスクトップコンピュータに搭載されるような組み込み向けでないOS(非組み込みOS)は、ユーザーの操作に基づいてさまざまなアプリケーションを実行します。
組み込み向けでない(非組み込み)OSとは、コンピュータに使われているOSのことです。非組み込みOSはコンピュータシステムがソフトウェアやアプリケーションを実行し、多種多様なタスクをこなすのを可能にします。一方、組み込みOSは、組み込みデバイスが動作するために必要な最低限の(場合によっては瞬間的な)タスクをこなします。
ネットワークOSは複数のコンピュータが必要なリソースを共有するのを可能にします。たとえば、ネットワークOS上のコンピュータがファイルやデータベース、プリンタといったリソースを共有できるようにします。組み込みOSと異なり、ネットワークOSのユーザーは一般用OSの場合と同じように、さまざまなタスクを自分で制御することができます。
標準的なOSは自動的なタスクの優先順位付けを行わず、合理的な時間内で完了するようにタスクに命令を出します。一方、リアルタイムOS(RTOS)では、既定の時間内でのタスク完了が保証されています。
組み込みOSにもリアルタイムOSがあり、データが入力されると直ちに処理を行って、組み込みOSが一貫してタスクを完了できるようにします。
クラウドや5G、Edge向けのAIサービスインテグレーション・プラットフォームを提供しているAIソリューション関連企業、Hypergiantのシニア組み込みソフトウェア開発者Brent Horine博士.は次のように解説しています。「標準的なOSにはミリ秒単位のタイマーがある。このタイマーがプロセスやシグナルの待ち行列を見て、優先順位を基に1つのプロセス/シグナルを選択したり、実行可能なものを見つけたりする。標準的なOSは一種のラウンドロビン方式でタスクのスケジュールを組んでいるため、どのタスクにも所定の優先レベルで順番が回ってくる。これに対してリアルタイムOSは、デッドラインを重視しており、OS内でスケジューリングシステムが中心に置かれる」。
組み込みデバイス用のOSを選択する際には、多くの要素を検討しなければなりません。たとえば、標準的なOSとリアルタイムOSのどちらにするべきか、デバイスの電力とコンピュータメモリに制約はないか、といった要素です。
| 組み込み Linux | Android | Blackberry QNX Neutrino RTOS | Greenhills Integrity | Wind River VxWorks | LG webOS | Microsoft Windows for IoT | |
| Ease of developmentデプロイのしやすさ | ★★★★ | ★★★★★ | ★★★ | ★★ | ★★★ | ★★★★ | ★★★★ |
|
効率性 |
★★★ | ★★ | ★★★★ | ★★★★ | ★★★★ | ★★ | ★★★ |
| 決定的動作(リアルタイム) | ★★★ | ★ | ★★★★★ | ★★★★★ | ★★★★★ | ★★ | ★★ |
| API | POSIX | POSIX | POSIX | POSIX | POSIX | POSIX | POSIX |
| 接続性 | ★★★★★ | ★★★ | ★★★ | ★★★★ | ★★★ | ★★★★★ | ★★★★★ |
| グラフィックス | ★★★★ | ★★★★★ | ★★★★ | ★★ | ★★ | ★★★★ | ★★★★★ |
| ハードウェアサポート | ★★★★★ | ★ | ★★★ | ★★ | ★★★★ | ★★ | ★ |
| オープンソース | はい | 一部はい | いいえ | いいえ | いいえ | はい | いいえ |
| コミュニティ | ★★★★★ | ★★★★ | ★★★ | ★★ | ★★ | ★★ | ★★★ |
| ライセンス/価格 | € | € | €€€€ | €€€€ | €€€ | € | €€€€€ (WinIoT Coreはロイヤルティフリー) |
| カスタマイズおよびハードニングコスト | €€€ | €-€€€€ | €€ | €€ | €€ | €€€ | € |
現在、最も広く使われている組み込みOSは、組み込みLinuxです。Yotcoは組み込みLinuxシステムで最も人気があります。その他の人気の組み込みOSには、Android、FreeRTOS、QNX、VxWorksがあります。
組み込みデバイスの成功にとって、最良の組み込みOS選びは欠かせないプロセスです。OS次第でどのソフトウェアを使えるかが変わってくるほか、OSはシステムのほかの部分の構築の難易度にも関わってきます。
組み込みデバイス開発プロジェクトの重要なプロセスの詳細は、成功する組み込み製品の開発をご覧ください。
商用ライセンスのトライアルやオープンソースを利用したい方は、ぜひQtの無料トライアルを開始してみてください!
Qtのライブラリやツールを使うことで、組み込みハードウェアや組み込みOSの種類にかかわらず、より合理的かつ効率的なソフトウェア開発を実現することができます。また、高性能3D/2Dユーザーインターフェースをターゲットハードウェア上でテストして微調整できるうえ、完成したアセットを他のプロジェクトに再利用することも可能です。Qtで開発したソフトウェアはクロスプラットフォームで、MPUをMCUやベアメタルにスケールダウンすることもできます。
Qtの詳細をぜひご確認ください。公式ウェブサイトでは、必要なプログラミングスキル、企業や業界におけるQtを使ったデバイス開発例、Qt6の重要な更新情報をご紹介しています。また、Qtについてご質問あり場合は、お気軽にお問い合わせください。
最新リリースはこちらからダウンロードできます。 www.qt.io/download
Qt 6.10 がリリースされました!アプリケーション開発者やデバイス開発者向けに、多くの新機能と改善が追加されています。
現在、さまざまなポジションで採用を行っています。募集職種はこちら をご覧ください。また、Instagram をフォローして #QtPeople の働き方もぜひチェックしてください。