GR-VOSとは

つぶつぶコラム

はじめに

今回は当社の自社開発製品GRAPEWARE製品で共通して使用されているGR-VOSについて書いていきます。

GR-VOSとは

GR-VOSは仮想OSモジュールです。

当社製品でOS(RTOS含む)機能を使用している場合、コード中に直接OSのAPI名を記述してしまうと、違うOSへの移植性が低くなってしまいます。そのため、OSの違いを吸収し、OSが変わっても各製品のソースコードの変更を行わずに済む方法として採用しています。

このような方法を採用することで、OSに使用したい機能が実装されていなくても、他の機能を組み合わせるなどして機能を代替えすることも容易になります。

対応OS

現在までに、ITRON、ThreadX、FreeRTOSへの対応モジュールを用意しています。

OS資源を静的生成するイー・フォース社の「μC3Compact」へ対応したモジュールもあり、この場合、静的生成するOS資源とGR-VOSの関連付けを行う必要があるので、使用する資源をリストアップして一度に済ませると効率的になります。(もちろん後でOS資源を増やして、関連付けを追加することも可能です。)

また、独自OSなども含め上記以外のOSを使用する場合は、GR-VOSの処理を作る(ポーティングする)必要があります。カスタマイズ対応をした実績としては、(古い)Windows系OSやLINUXなどもあります。

GR-VOSの対応機能

GR-VOSはOSそのものではないので、「機能」というと少しイメージが異なるかもしれません。ラッパーと思っていただいた方が正しいです。

GR-VOSでは、タスク、セマフォ、イベントフラグ、データキュー、固定長メモリプール、可変長メモリプールの機能があります。ITRONであればこれらはすべて使用できますが、独自OSなどでは可変長メモリプール機能が無い場合もあります。OSに機能が無く上位側がその機能を必要とする場合はGR-VOSに代替え機能を用意することで対応が可能になります。(可変長メモリプール機能の場合であれば、セマフォなどで排他制御を行いながらメモリ処理を行うような処理を作ることになるかと思います。)

また、GR-VOSのデータキューは少し特殊で、送受信できるデータサイズは4バイトになります。これは当社製品がデータキューを使用するケースではポインタの送受信を行うケースのみになるため、機能を限定しているためです。

タスク

当社製品では内部タスクを必要とするものがあります。

ほぼ必須の機能となりますので、使用できるようにポーティングしておく必要があります。

また、タスクの優先度は当社コード中に記述しているので、タスクの優先度のサポートも必要です。これは特に優先度の数字の高低が、実際のタスク優先度の高低と異なる場合は注意が必要です。例えばITRONでは優先度の数字が小さいタスクが高優先度を持ちますが、他のOSでは数字の大きい方が高優先度の場合もありますので、この違いもGR-VOSで吸収することが望ましいです。

タスク機能としてタスクIDの取得とタスクのGR-VOSへの登録機能があります。

GR-VOSのタスクID取得機能は、GR-VOSに登録・生成したタスクのIDを返却する機能で、当社製品でもタスクの特定に使用しています。そのため、GR-VOSで生成していないタスクから当社製品のAPIをコールすると正常動作しない場合があります。GR-VOSで生成していないタスクを使用する場合は、別途GR-VOSのタスク登録機能を使用して登録のみすることをお勧めします。

セマフォ

当社製品ではタスク間の排他制御を行う際に使用します。
セマフォもほぼ必須の機能となりますので、使用できるようにポーティングしておく必要があります。

イベントフラグ

当社製品では主にGR-SDで使用しています。
イベントフラグはOSによっては24ビットまでしかサポートしないものもあるため、この部分は注意が必要です。当社製品では32ビット使用できることを前提としています。

データキュー

当社製品ではタスク間、割り込みタスク間でのポインタの送受信で使用しています。
そのため、データサイズは4バイトの送受信になります。

固定長メモリプール

当社製品では主にUSBのOHCIに対応した製品で使用しています。

可変長メモリプール

当社製品でEPSONプリンタ対応製品でのみ使用しています。
ですので、必ずしもポーティングの必要はありませんが、GR-VOSとしてのAPI仕様だけ定めています。
上記に挙げたGR-VOSの機能はタスクコンテキスト、割り込みコンテキストの両方から呼ばれる可能性があります。OSによっては自タスクのコンテキストを取得できるものもありますので、共通ルーチンでポーティングすることも可能です。

まとめ

いかがでしたでしょうか。

組込みの世界では国産、海外製、商用、OSSなど多くのOSが存在します。

当社製品を様々なOSで使用するために、橋渡しのような機能を定めたのがGR-VOSになります。GR-VOSの実装を変更することで当社製品を様々なOSでご使用できるようになっています。

当社では、GR-VOSのポーティング作業も承っていますので、ご使用のOSがどのようなものでも(過去には独自OSへのポーティングも行っておりますので)一度ご相談ください。