SOLID概要

SOLID-OS

リアルタイムOS TOPPERS

SOLID OSは、オープンソースITRON仕様のTOPPERSカーネルを基盤とし、独自にメモリ管理機能やローディング機能の対応などを強化しています。
Arm®v7AやArm®v8AクラスのCPUを使う場合、ネットワーク、ファイルシステム、GUI など、豊富な機能のあるLinuxなどの高機能OSが採用されることが多いのですが、従来の組み込み文化との乖離が大きくソフトウエア開発者にとって、環境構築だけでも負担になる場合があるのではないでしょうか。

SOLID-OSとして「わかりやすい」「コンパクト」「学習コストが低い」組み込み機器として実績のあるμITRON 4.0仕様準拠のTOPPERSカーネル(ASP3、FMP、FMP3)を採用、OS機能も必要な機能だけをリンクしコンパクト化が可能です。

  • 32bit シングルコア カーネルに対応
  • 32bit マルチコア カーネルに対応
  • 64bit シングルコア カーネルに対応
  • 64bit マルチコア カーネルに対応

TOPPERSカーネルの特徴

  • TOPPERS/ASP3:シングルコア向け、ティックレス仕様により実行効率・電力効率が良い割込み制御が可能
  • TOPPERS/FMP: マルチコア向け
  • TOPPERS/FMP3:マルチコア向け、ティックレス仕様により実行効率・電力効率が良い割込み制御が可能
    (TOPPERS/FMP3カーネルは、SOLID 2.0以降で対応しています)

SOLIDでは、カーネル本体、プロセッサ依存部に加えて、代表的な評価ボードのBSPも提供します。ロイヤリティーフリーです。

SOLIDが対応しているRTOSカーネル、SoCおよび動作確認済評価ボードは、こちらをご参照ください。


TOPPERS/ASP3、TOPPERS/FMP3 カーネルの特長と機能拡張

「コンパクトなカーネル」「ティックレスタイマ採用による高精度・省電力設計可能な時間管理(左図)」などが大きな特徴で、従来のμITRONと同様なAPI体系であり、既存のITRON/T-KERNELベースのシステムからの移植コストが小さいというメリットもあります。SOLID-OSではさらに以下のような機能を拡張しています。

  • ソフトウェアの大規模化を想定し、タスク優先度を最大256まで拡張
  • タスクなどOS資源の動的生成機能に対応、プログラム実行中にタスクの生成および解放処理が簡単に実行可能
  • 優先度継承ミューテックスの追加
  • FMPに動的資源生成機能を追加
  • メッセージバッファの動的資源生成対応
  • 読み手書き手ロックの追加
  • 可変長メモリの追加
  • メールボックスの追加
  • 一部のAPIについて、実行可能なコンテキストを拡張

制限空間機能

SOLIDではこれまでMMUを有効活用しプロテクション機能などのメモリアクセス権を適切に設定することで、「従来のITRONのプログラミング作法のまま安全性を高める」を実現しています。

SOLID Ver.5ではこのMMUの活用を更に進化させ、カーネルや通常のタスクやハンドラとは別のアドレス空間導入し(制限されたタスク空間、制限空間)、この制限空間で動作するタスクからは、カーネルの空間や他の空間のメモリアクセスは一切できないようにしました。

例えば、この機能を利用して、ネットワーク上の資源と通信するような機能を制限空間で動作させることで、カーネルやカーネルと一緒に動作する通常のタスクやハンドラをネットワークからの攻撃から守ることが可能になります。

この制限空間のタスクでも、多くの通常のITRONシステムコールの利用は可能で、通常のタスクやハンドラとイベントフラグやメッセージバッファ、データキューなどで通信することが可能です。

この制限空間を簡単に利用できるようにするために、開発環境IDEのメモリマップエディタにも対応する機能を追加したので、MMU設定などの面倒なプログラミングをすることなく、本機能が利用可能となっています。

また、この新しい制限空間の機能は、RTOSカーネル本体ではなく、SOLIDのCPU抽象化レイヤの機能として実装しています。そのため、RTOSカーネルはASP3/FMP/FMP3のまま、既存のSOLID-OSで開発したRTOSプログラムを修正することなく利用可能となっており、必要な場合に制限空間のプログラムを追加することが出来るようになっています。


かしこいエージェント、ベアメタルローダー

SOLIDではRTOSが求めるリアルタイム性を保持するために、単一の仮想空間をMMUを活用して管理しています。その代表的なものがベアメタルローダーで、SOLIDが各モジュールの要素を解析し、仮想空間中に適切に配置し、ロードします。
この機能を使うと、改修したモジュールだけをビルド・ロードすることができるので、開発効率が大幅に向上します。

● あらかじめ仮装デバイスで(1)と(2)の間の隙間を大きくしておく64M単位でも1Gの中に16エリア確保できます。
● モジュールのサイズに応じて、ローダのメモリマネージャが物理メモリを割り当てるので、メモリの無駄が少なくてすみます。
● (1)が(1)'に変更されても、(2)の変更(再ビルド)や転送が不要です。


RTOSビューアー・タスクコールスタック表示

 

ブレーク時にRTOSのタスク単位で、タスクの待ち状態や優先度の状態、スタック使用量と使用割合を示します。

タスクでの関数コーススタックをグラフィカル表示します。


ミドルウエア設定

TCP/IP、ファイルシステムなどはオープンソースベースの物がSOLID-OSに標準機能として提供します(OSS以外のメーカー様提供の物に変更する事も可能です)。また各パートナー企業製のミドルウエアの実装や連携も、当社が窓口となって対応します。