アマゾン買収から2年半、「Amazon FreeRTOS」は最も手頃なRTOSに:リアルタイムOS列伝(2)(2/3 ページ)
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第2回は、アマゾンの買収によってRTOSのメインストリームに躍り出た「Amazon FreeRTOS」について紹介する。
「FreeRTOS」と「FreeRTOS+」
さて、そのAmazon FreeRTOSであるが、実際にはFreeRTOSと「FreeRTOS+」の2つがある。FreeRTOSの方がもともと提供されてきたFreeRTOSの本体であるが、こちらはカーネルの機能として以下のようなものがある。
- Task/Co-Rountine生成/起動/終了
- Task間同期(Queue/Mutex/Semaphore)
- Task Notification(ISRからTaskへの直接通信)
- Stream/Message Buffer(Task間、あるいはTask/ISR間のデータ転送)
- Software Timer
- Memory Management/Protection
他には、以下のような機能が提供される程度だ。
- Low Power Support(Sleep機能)
- Trace用Macroの提供
- Run Time Stateの取得
余談になるが、FreeRTOSのプログラムの最小実行単位はTaskである。ただし、ArmベースMCUへの移植に当たってはCMSIS(Cortex Microcontroller Software Interface Standard)を利用しており、このCMSISではプログラムの実行最小単位がThreadと呼ばれていることもあって、一部のFreeRTOSのドキュメントの中にはThreadと記述されているものがある(例えば、TLS:Thread Local Storageなる、Taskが独自に持てるデータストレージ領域がある)。TaskとThreadはFreeRTOSでは同義語と言っていい。
余談のついでにもう1つ書いておくと、32ビットのターゲットであればTaskをそのまま使えばよいのだが、8/16ビットではTaskを多数作ると負荷が高すぎる場合がある。これに向けて提供されるのがCo-Rountineで、いわばTaskのサブセットである。これは特にメモリ容量の制限が厳しい場合に利用するもので、通常32bitターゲットでは使わない、というただし書きがあったりする。
話を戻すと、これらFreeRTOSカーネルの機能は、一般的なRTOSとしては過不足無いが、これだけだとI/Oが一切不可能である。
このI/Oは、FreeRTOS+の方で提供される。現在提供されているのは以下の4つだ。
- TCP(Lightweight TCP/IP Stack):一応Berkeley Socket APIに準拠している。メモリサイズはCortex-M向けの場合、-Osで20.1K、-O1で34.9Kとされる。
- CLI(Command Line Interface):文字通りCLIを提供するもの。もっとも標準のShellなどは用意されておらず、自分でコマンドインタープリタから構築する必要がある(コマンドインタープリタのサンプルは提供されている)
- IO(図2):POSIX風のopen()/read()/write()/ioctl()の4つが利用可能になる。あくまでPOSIX「風」であって、厳密にはPOSIX準拠ではない。close()がないあたりはいかにもという感じ。ioctl()ではI/Oの方法を定義可能で、現状は以下の4つが定義されている。UARTとかI2C、SPIなどを利用するためにはこのI/Oが必須となる
- Polled(PollingによるI/O。完了までの間は制御が戻ってこない)
- Interrupt driven circular buffer(データを受信すると割り込みが掛かる方式。受信バイト数を確認してRing Bufferから取得する)
- Interrupt driven zero copy(ISRの中から送信が行われるので、write()はすぐ帰ってくる。次の書き込みを行うためには、まず直前の送信が完了したかどうかを確認する必要がある)
- Interrupt driven character queue(ISRの中で送受信を行うが、Taskとの間にキューを挟み、ここに送受信データを載せる方式)
- UDP(Tiny Embedded UDP/IP):これもTCP同様、最小限のUDP/IPの機能が一応Berkeley Socket APIに準拠する形で提供される。ちなみにIPv4のみ対応
Copyright © ITmedia, Inc. All Rights Reserved.