Zephyr入門

Zephyr(Zephyr RTOS)は組み込み開発で注目を集めるRTOSの一つです。RTOSとはReal-Time Operating System(リアルタイムOS)の略称です。この記事ではZephyrの概要や特徴を整理し、代表的なRTOSであるFreeRTOS(カーネルがMITライセンスで公開されているオープンソースのRTOS)と比較します。それぞれの特徴を踏まえ、開発規模や必要な機能など、導入時の選定ポイントを理解しましょう。

Zephyrとは

ZephyrはRTOSカーネルに加え、ビルドやデバッグを支援する仕組みも提供します。軽量であり、組み込み機器やIoT機器向けによく使用されるのが特徴です。

近年のIoT機器が求める通信の暗号化やOTA(Over-The-Air:無線経由のファームウェア更新)など、複雑な要件に対応した開発にも適しています。

Zephyrの特徴

Zephyrの特徴の一つに汎用性の高さがあげられます。対応するアーキテクチャの多さや、複数のネットワークスタックを統合している点は大きな強みです。

多くのアーキテクチャに対応している

多くのアーキテクチャやハードウェアをサポートしており、ハードウェア依存を低減しながら開発できます。トライアルやPoC(Proof of Concept:概念実証)のために構築した評価版を商用版に置き換える場合でも、基本的な構造をそのままにした移植ができて便利です。

またLinuxでも使われている考え方や仕組みを採用しています。そのため、ソフトウェア構成を柔軟に制御できることも特徴です。

ネットワークスタックが統合されている

あらかじめ統合されているネットワークスタックが多く、必要な機能をZephyrの標準機能として利用しやすいことが利点です。IoT機器で利用されることが多いBLE(Bluetooth Low Energy)通信も標準で備えており、ウェアラブル端末の開発基盤としても使われます。すでにアーキテクチャやAPIが整備されているため、開発者は低レイヤの実装負担を軽減しやすく、アプリケーション開発に集中できます。

FreeRTOSとの比較

FreeRTOSは最小構成で柔軟に構築できる一方、Zephyrはネットワークやデバイスドライバなどの機能を含む統合的な開発環境を構築しやすい点が特徴です。設計思想が異なる分、使い方にも差が出ます。

機能の違い

Zephyrは標準でネットワークスタックやログ出力機能など、IoT機器で利用される機能を幅広く備えているRTOSです。ビルドやデバッグを支援するツールもあり、開発効率の向上まで視野に入れています。対してFreeRTOSはカーネルを中心とした最小構成から利用でき、必要な機能をライブラリなどから追加して構成します。必要のない機能を排除した実装ができます。メモリ容量が限られ、リソースを可能な限り削減したい場合などは、FreeRTOSが選択肢です。

導入難易度の違い

Zephyrは、westツールによるマルチリポジトリ管理やセキュリティ機構などを備え、大規模開発や長期運用を検討する場合にも選択肢となります。ただしKconfig(ソフトウェアの構成設定)やDevicetree(ハードウェア記述)などの仕組みを扱うことから、FreeRTOSと比べると学習する要素が多くなるのが特徴です。

FreeRTOSはRTOSの基本的な機能だけに絞られており、初心者でも全体像を把握しやすい構成になっています。必要な機能を絞り込んだ小規模なシステムでは、FreeRTOSのシンプルさを生かせます。

選定基準

Zephyr OSとFreeRTOSが向いているケースの図。Zephyr OSは、大規模開発や複数人での開発、長期運用と保守性を重視する場合、多機能で複雑な要件がある場合に向いている。FreeRTOSは、小規模で単機能のデバイス、メモリとリソースを極限まで節約したい場合に向いている。学習コストが低く、導入しやすい点も特長である。

組み込み開発を始める際、ZephyrとFreeRTOSは候補にあがりやすいRTOSです。迷ったときは必要な機能やリソース、開発規模などを検討すると選びやすくなります。

小規模なシステムや単機能のデバイスを構築する場合は、前述したFreeRTOSの特徴が判断材料になります。

開発規模が大きい場合や、複雑な制御が必要な場合は、Zephyrが向いています。複数人で開発する場合、統一されたビルドシステムやモジュール構造は、開発の効率化や保守性の向上に役立ちます。

またZephyrやFreeRTOSには長期にわたり保守されるLTS(長期サポート)リリースがあり、製品の長期保守を前提とした選定がしやすくなります。

組み込みソフトの世界 トップへ戻る