SOLIDSOLIDソリューション 品質を確保し、開発効率を向上させたい
プログラムの規模が大きくなってくると、複数の拠点や機能単位での分割開発するケースが多くなります。その場合、プログラムを変更する度にカーネルを含む全てのプログラムをビルド・ロードしていたのでは、大変効率が悪くなります。また、更新する必要がないモジュールは、開発時に固定しておきたい(ブラックボックス化したい)というニーズも存在します。
SOLID-OSでは、「コアサービス」と名付けた一連のランタイムがIDEと密接に連携することで、多くの便利な機能を実現しています。共同開発に有効なローダーも、コアサービスの大きな特徴のひとつです。
SOLIDでは、モジュールを各開発拠点単位に分割・分散配置して、開発対象モジュールだけに限定してデバッグ操作を行うといった管理が簡単に実施できます。
Linuxであれば、仮想アドレスで空間を多重化し、なおかつデマンドページングによって動的にメモリ割り当てを行うといった機能がありますが、RTOSの場合はリアルタイム性(再現性)を重視するので、空間の多重化は使用しません。SOLIDのアプローチとしては、単一の大きな仮想アドレス空間にプログラムを分散配置するのにMMUを利用しています。
SoCの構成に合わせた仮想アドレスの設定は全てIDE側の簡単な操作で利用できるようにしましたので、ユーザーはメモリの設定プログラムを自分で作成する必要はありません。
MMUを活用してモジュールの分散配置が出来たら、次はプログラムのローディングです。
プログラムの規模が大きくなってくると、修正の度にプログラム全体をビルド・ロードする時間が開発者の負担になってきます。そのためSOLIDでは新たに開発対象モジュール単体だけをビルド・ロードする仕組みを設けました。
これまでの開発ツールでは、モジュール単体でビルド(リンク)すると、モジュール間参照などの問題があるため、単にビルドしただけではプログラムが正常に動作しません。しかし
SOLIDでは、ローダーにリンク機能を持たせることでモジュール間に参照が残っているときの問題を解決しました。
リンクもDLLのような形式ではないので、モジュール間の双方でシンボル参照をしていても問題ありません。関数だけでなく変数のアドレスの解決も可能です。つまり従来のコーディングスタイルを変更する必要もありません。
ローダーはRTOSカーネル情報、MMUによるマッピング情報、IDEのビルダが持っているシンボル情報やデバッグ情報の全てと連携して動作しています。モジュールが追加された場合、ローダーがIDEに通知するので、IDE側でシンボルを自動的にロードしたり、逆にロードするモジュールをIDE側で差し替えたりすることも可能です。 そのため、追加モジュールだけをロードした場合でも、プログラム全体がデバッグ可能です。
これは、SOLIDが開発環境の一体化をしたことで初めて実現できる機能であり、ソフトウエア開発全体の効率アップに大きく貢献できるものと考えています。