ChibiOS/RT

ChibiOS/RTは、コンパクトで高速な
リアルタイムオペレーティングシステムであり、複数のアーキテクチャーをサポートし、GPL3ライセンスでリリースされている。
開発者は、Giovanni Di Sirioである。

評価 
ChibiOS/RTは、8ビットと16ビット、32ビットのマイクロコントローラーの組み込み用途向けに設計されている。
プロジェクトの主なゴールは、サイズと実行性能である。
実例を参考にすると、カーネルのサイズは、最小で1.2KiBから、STMのCortex-M3プロセッサーの全てのサブシステムを有効化した場合で最大5.5KiBである。
カーネルは1秒間に220,000スレッド以上を開始と終了させることができ、コンテキストスイッチは、STM32を72 MHzで動作させた場合、
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ファイルシステムライブラリーのサポート

全てのシステムオブジェクト(スレッドやセマフォ、タイマーなど)は、実行時に生成と削除が可能である。
利用可能なメモリーに上限はない。
システムの信頼性を向上させるため、カーネルアーキテクチャーは全体を通して静的であり、メモリーアロケーターは、オプションとして用意はされているが、必須ではない。
テーブルや配列といったデータ構造にサイズの上限はない。
システムのCPIは、エラーコードや例外といったエラー時の処理を持たない設計である。

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用のドライバーが実装されている。

ソフトウェアI/Oエミュレーションモードでは、Win32プロセスとしてカーネルを動かすことができる。
これにより、実際のハードウェアなしで簡単にアプリケーションを開発できる。
MinGWコンパイラ向けの例が含まれている。

ChibiOS/RTは、wolfSSLといった著名なTLS/SSLライブラリーにサポートされている。

uGFX 
ChibiOS/RTは、GUIツールキットであるµGFXに完全にサポートされている。
µGFXは、過去にはChibiOS/GFXと呼ばれていた。

関連項目 

 A detailed explanation of multithreading in ChibiOS/RT

脚注

外部リンク 
ChibiOS/RTホームページと文書
ChibiOS/RTプロジェクトとサポート

リアルタイムオペレーティングシステム
フリーソフトウェアOS