MCUに慣れていなくても使いやすい、サブシステム向けRTOS「Apache Mynewt」:リアルタイムOS列伝(15)(4/4 ページ)
図10はBLEのAdvertiseの設定方法、図11はセンサーの初期化方法である。他にWi-Fiやファイルシステムなども標準的に用意される。2019年の段階だとWi-FiはTCP/IPおよびUDP/IPに対応。CoAPと6LoWPANのサポートがある一方、サポートされるWi-FiモジュールはMKR1000のみといった状況だったが、現在はESP8266など他のモジュールのサポートが追加されており、選びやすくなっている。
図10 なぜstatic voidにする必要があるのかは少し調べても分からなかった[クリックで拡大]
図11 センサー類はsensor_xxx()関数が用意される。後付けのものもあるから、HALで管理するわけではないらしい。BNO055はボッシュのこの製品と思われる[クリックで拡大]
また、他のRTOSには見られない、以下のような特徴も備えている。
- 自分でPackage(ビルドする環境とその依存関係を定義したもの)とProjects(Packageの集合体)を構築できる。既に複数のPackageがApache Mynewtで提供されており、これを組み込んで自分のProjectを簡単に構築したり、アップデートしたりできる
- ブートローダーはROMとフラッシュに対応。SHA-256とRSA署名を付加されており、これを利用してセキュアブートが簡単に実現できる
- ソフトウェアアップデートのためのツールも標準で提供され、Bluetooth/Wi-Fi/Serialを利用したOTA(Over the Air)アップデートも可能。フラッシュを2バンクに分けてのアップデートもできる
- 先述したが、Deep sleepとWakeup、Tickless idle taskなどをサポートするパワーマネジメントが標準で装備。ネットワーク経由でのスリープマネジメントにも対応する
- デバッグ機能が豊富で、ロギングや統計処理をコンパイル後に実施したり、外部にコアダンプさせたりできる。ユニットテスト用のフレームワークも提供される。またスタックガードやメモリトラッキングなどの機能も実装される。当然JTAGプローブにも対応
- シミュレーターはLinux/macOS/Windows64環境で提供済。ただしWindowsはMinGW上での動作、またmacOSは、最新版には必ずしも対応していない場合があるというただし書き付きになっている。ビルド環境を含むツール類もやはりLinux/macOS/Windows64環境で提供される
ところで気になるフットプリントだが、Apache Mynewt Core 1.7.0の場合でRAM 1KB/フラッシュ6KB。Apache Mynewt NimBLE 1.2(つまりBLEスタック)がRAM 5〜15KB/フラッシュ70〜100KB(どの機能を利用するかで変動)という話で、かなりコンパクトである。
単体で使うというよりもサブシステム向けというあたりが少し特殊ではあるが、小規模なシステムであればもちろん単体でも利用できるだろう。Apache Mynewtは、意外に使いやすいRTOSかもしれない。
Copyright © ITmedia, Inc. All Rights Reserved.