もう1つ面白いのは、pthread+ extensionsである。PX5によれば“POSIXのpthread APIは通常のLinuxやEmbedded Linuxには十分であるが、Hard embeddedには機能とパフォーマンスの両面で十分ではない場合がある。そうした用途に向けた拡張がpthread+として提供される"としている。
具体的には、Event FlagやFast Queue、メモリ管理などで、他にもTick timerやError Handlingに向けた拡張などがある。ユーザーマニュアルによれば、PX5 RTOSは173個のAPIを提供するが、この半分以上の98個がpthread+ APIとなっている。ただし、pthread APIはそのまま使えるので、既存のpthread APIベースのアプリケーションをまず移植して、次いでパフォーマンスの遅いところをpthread+ APIで書き換えるといった策も可能である。
個人的には、既存のpthread APIベースでthread同期などを行う仕組みを、そのままEvent FlagなりMutexなりで置き換えるのは割とムダが多いというか、非効率な気がする。ただこれを効率的にやろうとすると、結局アプリケーションの構造そのものに手を入れないといけない場合も少なくないので、その意味でも既存のpthread APIベースのアプリケーションを移植というケースがどこまで多いのかちょっと判断できない(既存のアプリケーションを「参考」に、新しく作り直す方が多いように思う)。
PX5 RTOSの特徴でもう1つ挙げられるのは、早いタイミングで機能安全を含む産業向けの安全性サポートをうたっていることだ(図8)。
車載ソフトウェアの品質ガイドラインであるMISRについてAは「ほとんどのモジュールで対応しているが、ほんの一握りの例外がある。完全なリストについては問い合わせてほしい」としている。また、セキュリティ周りではPVD(Pointer/Data Verification)が提供される。これはポインタやデータ、固有のランタイムIDなどを利用して重要なデータに対してFingerprintを最初に生成しておき、その重要データにアクセスする際には、破損あるいは汚染されていないかをFingerprintを使って事前に確認するというものだ。
同様にRun-Time Stack Check&Verification機能もあり、スタックを利用して戻る「前に」スタックが破壊あるいはオーバーフローを起こしているかどうかを検証できる。もちろんこうした機能はメモリフットプリントやパフォーマンスインパクトがあるが、その一方ではハードウェア的にそうした保護機能を搭載していないMCUでも利用できるメリットがある。あとは構成次第というわけだ。
PX5 RTOSは商用RTOSであり、残念ながら無償ライセンスは存在しない。特徴はロイヤルティーフリーであり、ライセンスコストだけである。ライセンスは以下の3種類が存在する。
価格は“contact sales”となっているだけで明示されていない。対応ハードウェアは今のところCortex-MおよびCortex-Rが対象とされている。対応する半導体パートナーとしてはInfineon、Microchip、Nordic Semiconductor、NXP Semiconductors、ルネサス、Silicon Labs、STMicroelectronicsの7社が挙がっているが、ハードウェアのサポートを考えるとこの7社の全製品ということではないのは当然である。ただ具体的な製品リストは要問い合わせになる。
無償ライセンスがないと書いたが、それもあって無償のお試し版も少なくとも現時点では提供されていない。まぁうかつに無償版をリリースして、山のような「動作しない報告」とか「サポートしてほしいデバイスリスト」が寄せられても対応しきれないから、というあたりが正直なところであろう。とはいえ、評価のためにはまずライセンスを買えというのもむちゃな話であって、今後このあたりどうなってゆくかはしばらく見守る必要があるが、なかなか意欲的な船出なだけに今後の展開に期待したいところである。
Copyright © ITmedia, Inc. All Rights Reserved.