ChibiOS/RT: 高性能組み込み向けリアルタイムOS
ChibiOS/RTは、
組み込みシステムに特化した
リアルタイムオペレーティングシステム(RTOS)であり、そのコンパクトさと高速性が特徴です。開発者であるGiovanni Di Sirio氏によって作成され、GPL3ライセンスの下でオープンソースとして提供されています。
特徴
ChibiOS/RTは、主に8ビット、16ビット、そして32ビットのマイクロコントローラーでの利用を想定して設計されています。その設計目標は、システムのサイズを最小限に抑えつつ、最高の実行性能を発揮することです。例えば、
カーネルサイズは最小で約1.2KiB、STM Cortex-M3プロセッサのような複雑なシステムでも最大5.5KiB程度に収まります。また、高いスレッド処理能力を持ち、1秒間に22万以上のスレッドの開始と終了が可能です。
コンテキストスイッチも非常に高速で、STM32を72MHzで動作させた場合、わずか1.2マイクロ秒で完了します。
これらの性能評価は、配布されるソースコードに付属のテストレポートで確認できます。
機能
ChibiOS/RTマイクロ
カーネルは、以下のような豊富な機能を提供しています。
プリエンプティブなマルチスレッディング: 優先度に基づいたスレッドの切り替えをサポート。
128段階の優先度: 細かい優先度設定が可能。
ラウンドロビンスケジューリング: 同じ優先度のスレッドを公平に実行。
ソフトウェアタイマー: 時間ベースのイベント処理を実装。
カウンティングセマフォ: リソースへのアクセス制御。
優先度継承をサポートしたミューテックス: デッドロックを回避。
条件変数: スレッド間の同期。
同期/非同期メッセージ: スレッド間通信。
イベントフラグとハンドラー: イベントドリブンな処理。
キュー: データの一時的な格納。
タイムアウト付きI/O: 応答がない場合の処理を設定。
スレッドセーフなメモリ管理: メモリヒープとプールのアロケーター。
ハードウェア抽象化レイヤー: ADC、CAN、GPT、EXT、I²C、ICU、MAC、MMC/SD、PAL、PWM、RTC、SDC、シリアル、SPI、USBなど多数のデバイスドライバをサポート。
lwIP/uIP TCP/IPスタック: ネットワーク機能。
FatFSファイルシステム: ファイルシステム。
動的なシステムオブジェクト: スレッド、セマフォ、タイマーなどのオブジェクトを必要に応じて生成/削除。
さらに、ChibiOS/RTは、システムの信頼性を高めるために、静的な
カーネルアーキテクチャを採用しており、メモリの動的な確保はオプションです。データ構造のサイズ上限がなく、エラー処理も必要最低限に抑えられています。
サポートマイクロコントローラー
ChibiOS/RTは、幅広いマイクロコントローラーをサポートしており、以下のようなデバイスで利用可能です。
ST STM32F1xx、STM32F2xx、STM32F3xx、STM32F4xx、STM32L1xx、STM32F0xx
ST STM8S208x、STM8S105x、STM8L152x
ST/Freescale SPC56x / MPC56xx
NXP LPC11xx、LPC11Uxx、LPC13xx
NXP LPC2148
Atmel AT91SAM7S、AT91SAM7X
Atmel Mega AVR
TI MSP430x1611
TI TM4C123GとTM4C1294
Microchip PIC32MX
ColdfireとH8S向けの移植も存在
その他のプラットフォーム
ChibiOS/RTは、Raspberry Piにも移植されており、GPIO、シリアル、GPT、I2C、SPI、PWMドライバが利用可能です。また、Win32
プロセスとして
カーネルを動作させるソフトウェアI/Oエミュレーションモードも備えており、実際のハードウェアがない環境でもアプリケーション開発が可能です。
外部ライブラリとの連携
ChibiOS/RTは、wolfSSLなどのTLS/SSLライブラリにも対応しており、セキュアな通信機能も実現可能です。
uGFX (旧ChibiOS/GFX)
GUIツールキットであるuGFXは、ChibiOS/RTを完全にサポートしています。
関連情報
ChibiOS/RTにおけるマルチスレッディングの詳細
外部リンク
ChibiOS/RT ホームページとドキュメント
ChibiOS/RT プロジェクトとサポート