検索
連載

スマートメーターに特化したポーランド発RTOS「Phoenix-RTOS」の潔さリアルタイムOS列伝(12)(3/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第12回は、ポーランド発のRTOS「Phoenix-RTOS」を取り上げる。スマートメーターに特化した、ある意味で潔さが光るものになっている。

Share
Tweet
LINE
Hatena
前のページへ |       

マイクロカーネルの「Phoenix-RTOS 3」を投入

 これらに続いて2017年に投入されたのが「Phoenix-RTOS 3」である。最大の違いはマイクロカーネルへの移行である。恐らくこの移行は、メンテナンス性が大きな要因だったと思われる。というのは、ここまででも書いたがPhoenix-RTOS 2.0ではLoCが200KだったのがPhoenix-RTOS 3では20K(2万行)にまで減っている。さすがに200KものLoCのメンテナンスは大変だったのだろう。これに伴い、バイナリイメージは120KB(コード100KB+データ20KB)まで小さくなっている。またx86とArm、eSI-RISCに加えてArmv7MやRISC-Vへの移植も行われている(図7)。W-MBusやIEEE 802.15.4(というよりもZigBee)はスマートガスメーターへの対応ということのようだ(図8)。もちろん、従来のDCUやスマートメーターにも利用可能である(図9)。

図7
図7 libphoenixにはPOSIX互換のAPI拡張が用意される。またW-MBUSやIEEE 802.15.4なども追加された(クリックで拡大)
図8図9 (左)図8 イタリア向けのSoftware Defined Gas Meterということだが、どのあたりがSoftware Definedなのかは良く分からない(モデム部?)。(右)図9 6万個というのはロシアの市場規模を考えるとかなり小さい。小規模な都市での実証実験のレベルだろうか(クリックで拡大)

 ところでArmv7Mへの対応であるが、NXPの「iMX.RTシリーズ」、つまり「Cortex-M7」とCortex-M4のデュアルコアMCU(NXPの表現では「Crossover Processor」)がメインターゲットの模様だ。600MHz駆動のCortex-M7は、500MHz駆動のCortex-A5よりも当然パワフルであり、モデムなどをソフトウェア無線(SDR)的に実装することも可能で、当然これはBOMコスト削減につながることになる。そのあたりもあって、今後のスマートメータープラットフォームとして考えているようだ(図10)。

図10
図10 2017年にこれをプロモーションしたとあるが、その後どうなったのかは不明(クリックで拡大)

 さて、このPhoenix-RTOS 3、ここまではPhoenix Systemsが提供する商用製品だったわけだが、2018年にBSD Licenseの下で提供される形でオープンソース化された。ソースはGitHubで公開されている。今やPhoenix-RTOS 3はEUプロジェクトの扱いになっており、実際に欧州投資基金(European Investment Fund)や欧州地域開発基金(European Regional Development Fund)の資金援助を受けている。オープンソースではあるものの、Phoenix SystemsがPhoenix-RTOSにおける最大のコントリビューターであることは間違いなく、またBSD Licenseの下で誰でも自由に使えるとはいえ、サポートやカスタマイズ、移植などを自分の手で行えないユーザーが一定量存在する以上、これらユーザーに対するさまざまなサービスを提供するのがPhoenix Systemsの主なミッションになっている。

 Phoenix-RTOSは、これまで紹介してきた汎用のRTOSとは少し違う、というかリアルタイム処理が本当に必要なユーザー向けといった格好になっている。どの程度のリアルタイム処理か? といえば、それこそ「スマートメーターを実装するのに必要な程度」であり、それもあって性能の低いMCUなどはきれいに切り捨てているというあたりもちょっと独特である。一応、英語のドキュメントはそろっているし、GNUのツールチェーンをサポートしているので、慣れた開発者ならそれほどハードルは高くない。

 執筆時点でのGitHubに公開されているターゲットは以下の8つである

  • STマイクロ:STM32L4x
  • NXP:i.MX RT105x/RT106x/RT117x/i.MX 6ULL
  • IA32-Generic
  • RISCV64-virt/Spike

 ただし、IA32-Genericはx86汎用ながらVGAとTTY VGA Driver、ATA Driverとやや古めというか、組み込み向けSBCを使わないとうまく動かない感じの構成だし、RISC-VはQEMU(RISCV64-virt)かSpike(RISCV64-Spike)という仮想環境のみが用意されている。一番手軽なのはSTマイクロのSTM32L4xを搭載したDiscoveryボードを探すことだろうか。ちょっと癖はありそうなRTOSだが、特定用途向けに特化した潔さが光るものとなっている。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る