SOLIDのソリューションを構成するファイル
ここでは SOLID のソリューションを構成するファイルについて説明します。
ソリューションファイル
概要
ソリューションはプロジェクトの集合体です。ソリューションをビルドすることで、必要なプロジェクトのビルドが行われ、ロードモジュールが生成されます。
基本的には、アプリケーションと一対一対応します。ただし、ローダブルアプリケーションやDLLは単独では動作できないものの、 ロードモジュールとしては独立しているので、それぞれが個々のソリューションに分割されています。
ファイルの拡張子
SOLID では、ソリューションファイルの拡張子は .ptsln
です。
関連するファイル
- ソリューションプロパティ (拡張子は
.props
) ソリューションと同一レベルのフォルダに置き、拡張子を除いたファイル名部分はソリューションファイルと同一にします。 ファイルフォーマットは XML 形式です。
- ソリューションプロパティ (拡張子は
- ロックファイル (拡張子は
.lockdb
) SOLID-IDE でソリューションをオープンしていることを示すファイルで、SOLID-IDE により自動生成されます。 ソリューションをクローズするか SOLID-IDE を終了すると削除されます
- ロックファイル (拡張子は
- その他のファイル
設定等を保存するために自動生成されるファイル (
ソリューション名.ptsln.db.v2
.vs/ソリューション名/v14/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 を使ったソリューションをビルドすると、
スタートアッププロジェクト名.out
とsolid_boot.out
の 2つのロードモジュールファイル (デバッグ情報付き ELF 形式) が生成されます。またそれぞれについて、デバッグ情報を 取り除いたスタートアッププロジェクト名.bin
とsolid_boot.bin
(バイナリ形式) も同時に生成されます。実際に MMU が無効状態のターゲットにロードするのは
solid_boot.out
もしくはsolid_boot.bin
のどちらかで、状況に応じて使い分けます。
注釈
solid_boot.out
と solid_boot.bin
には スタートアッププロジェクト名.bin
がデータとして含まれています。
solid_boot.out
と solid_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
)