Apache Mynewt

Apache MyNewtは、消費電力とメモリー、ストレージの制限された環境で長期間使用されるネットワークに接続されたモノのインターネット(IoT)デバイス用のモジュール化されたリアルタイムオペレーティングシステムである。

Apache MyNewtは、FLOSSのApacheソフトウェア財団のインキュベータープロジェクトであり、ソースコードはオープンソースソフトウェアの商用利用を許容するApache License 2.0で配布されている。

概要 
Apache MyNewtは、豊富なライブラリーを持ち、32ビットマイクロコントローラーベースのIoTデバイスのプロトタイピングやデプロイ、管理を容易にするリアルタイムオペレーティングシステムである。

Apache MyNewtは高度に組み合わせ可能であり、組み込みシステムアプリケーション(例えば、鍵や医療機器、工業用IoTなど)を複数のタイプのマイクロコントローラーで利用できるように構成することが可能である。
MyNewtという名称は、カーネルのサイズが6KBしかないということと、非常に小さいことを意味する英語の単語であるminuteの言葉遊びである。

Apache MyNewtは、Bluetooth Low Energy 4.2スタックを完全に実装し、それにより接続できるように設計されている。
Nordic nRF51822 SoCでBLEの追加機能(プライバシー関係を除いた全てのBluetooth 4.2に準拠したセキュリティー機能)とデフォルトのファイルシステム、コンソール、シェル、ログ、統計などを利用した場合のイメージサイズは約96KBである。

このサイズにはブートローダーを含まない。

中核機能 
中核となる機能として以下をサポートする。
 プリエンプティブなマルチスレッディング
 チックレスな優先度ベースのスケジューリング
 プログラマブルタイマー
 システムタイマー
 セマフォ
 ミューテックス
 イベントキュー
 メモリー管理(割り当て): 動的(ヒープ)とプール
 多段階のソフトウェアウォッチドッグタイマー
 ネットワークプロトコルスタックの再起動をさせる際にパケットデータを保持するメモリーまたはデータバッファー

その他の機能やユーティリティーは以下の通りである。
 ハードウェア抽象化レイヤー: CPUタイムやアナログデジタル変換器(ADC)、デジタルアナログ変換器(DAC)、GPIO、I2C、パルス幅変調(PWM)、シリアルポート、SPI、UARTをサポートする。
 Newtonフラッシュファイルシステム(ntfs): RAMの使用量が少なく、信頼性が高い。
 ファイルシステム抽象化レイヤー: 他のファイルシステムの利用を可能にする。
 コンソールアクセスとシェルパッケージ
 セキュアなブートローダーとイメージオーガナイザー(マネージャー): SHA-256と必要であればデジタル署名により、イメージの実行前に検証が可能。
 退行テストをビルドするためのテストユーティリティー
 全ての主要なパッケージで統計データとログの取得が可能
 JSONエンコーダーとデコーダーライブラリー
 Luaインタープリター

Bluetooth Low Energy 
Apache MyNewtで最初に利用可能になったネットワークスタックはBluetooth Low Energyであり、NimBLEと呼ばれた。
NimBLEはBluetooth Core Specification 4.2に準拠している。

NimBLEは、ホストとコントローラーの両方を含んでいる。
コントローラーのソースコードにアクセスすることで、BLEのパフォーマンスは高度に調整可能である。
例えば、接続時間間隔やデータパケットサイズ、パケットキューサイズなどを調整することで、BLEのスループットを調整できる。
同時接続数が多数である場合も同様に調整可能である、十分な量のRAMの割り当てが必要である。
利用可能なサービスの使い方を示す例としてパッケージにアプリケーションが含まれている。

サポートするボード 
Apache MyNewtは、複数の組み込みシステム(デバイス)とマイクロコントローラーで使えるようにクロスプラットフォームに設計されている。
2017年3月現在、以下のボードサポートパッケージが含まれている。

 nRF52832 ノルディック・セミコンダクター製Bluetooth SoC
 nRF51822/nRF51422 ノルディック・セミコンダクター製Bluetooth SoC
 STM32F3DISCOVERY ST社製STM32F3xxシリーズCortex-M4を搭載している
 STM32-E407 STM32F407ZGT6用ST社製Cortex M4
 Arduino ZeroとZero Pro
 Arduino M0 Pro ATSAMD21G18 Cortex M0を搭載している
 Arduino 101, Bluetoothコントローラーのみ
 Arduino Primo, Bluetoothコントローラーとホスト

パッケージ管理 
コマンドラインインターフェイスベースの便利なソースパッケージ管理ツールであるNewtが存在する。
Newtにより、利用するパッケージを選択したり、コンパイラーオプションを設定したり、イメージを生成したり、デジタル署名をしたり、異なるターゲットにファームウェアを書き込んでデバッグしたりすることができる。

関連項目 
組み込みオペレーティングシステム

外部リンク 
 
 Apache Mynewtソースリポジトリー

脚注 

組み込みオペレーティングシステム
フリーソフトウェアOS
モノのインターネット
リアルタイムオペレーティングシステム
公開前のソフトウェア