SOLIDのソリューションを構成するファイル

ここでは SOLID のソリューションを構成するファイルについて説明します。

ソリューションファイル

概要

ソリューションはプロジェクトの集合体です。ソリューションをビルドすることで、必要なプロジェクトのビルドが行われ、ロードモジュールが生成されます。

基本的には、アプリケーションと一対一対応します。ただし、ローダブルアプリケーションやDLLは単独では動作できないものの、 ロードモジュールとしては独立しているので、それぞれが個々のソリューションに分割されています。

ファイルの拡張子

SOLID では、ソリューションファイルの拡張子は .ptsln です。

関連するファイル

  • ソリューションプロパティ (拡張子は .props)

    ソリューションと同一レベルのフォルダに置き、拡張子を除いたファイル名部分はソリューションファイルと同一にします。 ファイルフォーマットは XML 形式です。

  • ロックファイル (拡張子は .lockdb)

    SOLID-IDE でソリューションをオープンしていることを示すファイルで、SOLID-IDE により自動生成されます。 ソリューションをクローズするか SOLID-IDE を終了すると削除されます

  • その他のファイル

    設定等を保存するために自動生成されるファイル (拡張子 .ptsln.db.v2 .v12.ptsuo)

プロジェクトファイル

概要

プロジェクトはソリューションの構成要素です。プロジェクトの種類としては静的ライブラリやアプリケーションなどがあります。ファイルフォーマットは XML 形式です。

具体的には、SOLID コアサービス、SOLID-OS のカーネル、ネットワークドライバ、ファイルシステム等が、それぞれプロジェクトを構成しています。

ソリューションを構成するプロジェクトのプロジェクトファイル名はソリューションファイルに記述されています。

ファイルの拡張子

SOLID では、プロジェクトファイルの拡張子は .ptproj です。

関連するファイル

  • フィルタファイル (拡張子は .ptproj.filters)

    プロジェクトを構成し SOLID-IDE のソリューションエクスプローラに表示されるファイルが記述されています。(XML 形式)

  • ユーザ設定ファイル (拡張子は .ptproj.user)

    デバッグプロパティに設定した内容が保存されています。(XML 形式)

  • (optional) プロパティファイル (拡張子は .props)

    プロジェクトによっては、プロジェクト固有のユーザマクロ等を設定したプロパティファイルがあります。 その場合、プロジェクトファイルで Import されています。

スタートアッププロジェクト

ソリューションを構成するプロジェクトのうち1個をスタートアッププロジェクトとして指定する必要があります。

スタートアッププロジェクトのプロパティには、SOLID-IDE がデバッグ開始時に使用するデバッガ設定ファイルの場所や、 デバッグ開始にあたって必要な設定を記述しておきます。

スタートアッププロジェクトには、もう一つ重要な役割があります。それは、boot を除くプロジェクトを最終的にリンクし、 仮想アドレス空間上のロードモジュールを生成することです。プロジェクトのプロパティのリンカー設定に 必要な設定を書きます (通常はデフォルトのままで使います)。また、そのロードモジュールは後述するように、 スタートアッププロジェクト名.out になります。

注釈

スタートアッププロジェクトが存在しない、あるいはスタートアッププロジェクトのデバッグプロパティの設定が間違っていると SOLID-IDE からのデバッグができません。

ソースファイル等

概要

コンパイル対象となるソースファイルや、リンカースクリプト、メモリマップ設定ファイル等です。

ファイルの拡張子

  • ソースファイル (.c, .cpp, .h, .rst)

  • リンカースクリプト (.ld)

  • メモリマップ設定 (.smm)

ビルド生成物のフォルダとファイル

概要

SOLID-OS を使ったソリューションをビルドした際に生成されるファイル類について解説します。

ビルド出力フォルダ

ソリューションをビルドした結果のファイルが出力されるフォルダ (ビルド時に自動生成) について説明します。 ソリューション全体を一気にクリーンすることは、これらのフォルダを削除することでも可能です。

  • ビルド出力フォルダ

    ソリューションファイルと同じレベルに、構成名/プラットフォームツールセット名/ フォルダが生成されます。 構成名は Debug, Debug_clang, Debug_tasan, Release, Release_clang のうちのいずれかです。

    プラットフォームツールセット名は、構成名により以下のように決まっています。

    • exeGCC_SOLID (GCC を使用する Debug, Release)

    • exeClang_SOLID (Clang を使用する Debug_clang, Debug_tasan, Release_clang)

    例) 構成が Debug_clang の場合 Debug_clang/exeClang_SOLID が、デフォルトの出力フォルダになります。

  • pre プロジェクト生成物フォルダ

    ソリューションファイルと同じレベルに、PreObjectOut/ フォルダが生成されます。 現時点 (2022年5月時点) では、memory_map.smm をコンパイルした以下のファイルが出力されます。

    • memory_map.c

    • memory_map.inc

    • memory_map.ld

主なビルド生成物ファイル

ロードモジュール等、ビルドの生成物に含まれる主なファイルについて解説します。

オブジェクトファイル類 (.o)

ソースファイルをコンパイルしてできるオブジェクトファイル .o は、 ビルド出力フォルダ以下に生成される、プロジェクト名に対応するフォルダ内に出力されます。

ロードモジュール (.out, .bin)

SOLID-OS を使ったソリューションをビルドすると、スタートアッププロジェクト名.outsolid_boot.out の 2つのロードモジュールファイル (デバッグ情報付き ELF 形式) が生成されます。またそれぞれについて、デバッグ情報を 取り除いた スタートアッププロジェクト名.binsolid_boot.bin (バイナリ形式) も同時に生成されます。

実際に MMU が無効状態のターゲットにロードするのは solid_boot.out もしくは solid_boot.bin のどちらかで、状況に応じて使い分けます。

注釈

solid_boot.outsolid_boot.bin には スタートアッププロジェクト名.bin がデータとして含まれています。 solid_boot.outsolid_boot.bin をMMUの無効状態のターゲットにロードしたのちに起動すると、 MMU の設定等を行った後、仮想アドレス空間に切り替えて、スタートアッププロジェクト名.bin の エントリにジャンプします。

スタートアッププロジェクト名.out は、デバッガでシンボル情報を参照するために使います。

SOLID 独自形式ローダブルアプリケーション (.slo)

SOLID 独自形式のローダブルアプリソリューションの生成物は拡張子 .slo のファイルです。 SOLID ローダーの API 関数 SOLID_LDR_LoadFile() の引数には 名前.out ではなく 名前.slo を指定します。

DLL (.so)

リロケータブルなローダブルモジュールDLLの生成物は拡張子 .so のファイルです。 SOLID ローダーの API 関数 SOLID_LDR_LoadDLL() の引数には 名前.out ではなく 名前.so を指定します。

デバッガ設定ファイル

概要

SOLID-IDE からのデバッグ時に、バックエンドとして動作する PARTNER デバッガが使用する設定ファイル群です。

通常、partner もしくは qemu というフォルダ(さらにサブフォルダ)に入っています。

ファイルの拡張子

  • デバッガ設定ファイル (JETARM.CFG)

  • デバッガワークファイル (JETARM.JPX)

  • 自動起動マクロ (init.mcr)

  • (QEMU時のみ) QEMU起動スクリプト (autrun.emu)

  • (QEMU時のみ) デバイスツリー (拡張子 .dtb)