Arm「mbed OS」は立ち位置を変えながら進化する:IoT観測所(39)(2/3 ページ)
2014年に開発中であることがアナウンスされたArmの「mbed OS」。その後、紆余曲折を経て、mbed OSの立ち位置と取り巻く環境が変わり、mbed OSそのものも大きく変わった。そこで、アップデートとして現状の「mbed OS」と、「mbed Cloud」などそれをとりまく環境を紹介する。
「mbed OS Classic」と「mbed OS 5」の違い
さて、ユーザー(というか、開発者)から見るとどの程度の変化があったか?というと、これは案外と違いが無い。例えば、チュートリアルのLチカ(LEDを点滅させる)のコードを見てみよう。mbed OS Classicのコードはリスト1のようになっている。
#include "mbed.h" DigitalOut redled(p5); DigitalOut greenled(p6); int main() { while(1) { redled = 1; greenled = 0; wait(0.2); redled = 0; greenled = 1; wait(0.2); } }
これが、mbed OS 5ではリスト2のようになる。
#include "mbed.h" #include "rtos.h" DigitalOut led1(LED1); // main() runs in its own thread in the OS // (note the calls to wait below for delays) int main() { while (true) { led1 = !led1; wait(0.5); } }
mbed OS Classicでは2つのLEDを0.2秒間隔で交互に点灯させているのに対し、mbed OS 5では1つのLEDを0.5秒間隔で点滅させている、という処理の違いはあるにせよ、main()の中身は完全に一緒で、rtos.hをincludeするかしないかだけが明示的な違いであるといっても良い。
もちろん実際には、例えばセキュリティ周りのAPIはmbed OS Classicにはほとんどなかったし、APIの絶対数がmbed OS 5になってだいぶ増えているので、厳密な意味では同じといえるかどうか微妙だ。しかし、少なくともmbed OS Classicで導入したClass Libraryはそのまま互換性を保つように工夫している。このため、最大の違いはrtos.hをincludeするところになっている。
これはもう明確で、図2でもmbed OS Classicの方に“mbed RTOS”がReworkedという形で追加されていることからはっきり分かるように、mbed OS 5はRTOSベースで構築されている。実際に、5.1.0のリリースノートには、mbed OS 5.1.0はCMSIS-RTOS RTX 4.79.0をベースに構築されていると明確に記述がある。ただし、その後もいろいろ手が入っており、5.3.0でCMSIS5 Libraryを導入、5.5.0ではカーネルをCMSIS-RTOS2 Kernelに切り替え、5.6.0ではTickless RTOS Schedulerを導入と少しづつ機能が向上している。このあたりが旧来のmbed OS Classicからの最大の違いといえるだろう。
また開発環境で言えば、従来のmbedのOnlineIDE(WebベースのIDE)に加え、CLI(コマンドラインインタフェース)ベースの開発環境(mbed CLI)も提供されるようになったのも新たな違いである(図4)。
もっとも違いという意味では、Cookbookでmbed OS ClassicのHandbookを見てみると、ネットワークはイーサネットベースしかなかったのが、最新のCookbookではかなり充実しており、特に無線通信を利用する場合は新規にコードの追加が必須ではある。逆に言えば以前はそれだけネットワーク関連が貧弱だった、ということでもあるが。
ハードウェアのサポートも拡充されており、現時点で対応基板の一覧には126種類がラインアップされている。また基板とは別にサポートされる周辺回路に関しても、かなりの種類が並んでいる。mbed OS 2の時代に比べると、はるかに使いやすくなったと考えてよいだろう。
Copyright © ITmedia, Inc. All Rights Reserved.