ソリューションのプロパティ (カーネルコンフィグレーション等)
SOLID-OSのソリューションについて、様々なプロパティを設定することで、 SOLID-OSの動作をコンフィグレーションすることが可能です。
ここでは、設定可能な各項目について説明します。
ソリューションのプロパティファイル
ソリューションのプロパティファイルは、基本的にソリューションファイル (.ptsln) と同じファイル名で、 拡張子が ".props" のものになります。
ソリューションのプロパティファイルの形式
ソリューションのプロパティファイルは、以下の形式のファイルです。"Property1" や "Property2" が プロパティの各項目で、"定義" が項目設定する値になります。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="UserMacros">
  <Property1> 定義 </Property1>
  <Property2> 定義 </Property2>
  . . . . .
</PropertyGroup>
<PropertyGroup>
  <BasicGCCSW>$(BasicGCCSW) ソリューション全体に適用する追加のコンパイルオプション</BasicGCCSW>
</PropertyGroup>
<ImportGroup>
  <Import Project="$(SOLIDRootDir)bsp\BSPプロパティファイル名.props" />
<Import Project="$(SOLIDRootDir)SOLID.Common.props" />
</ImportGroup>
</Project>
ソリューションのプロパティ一覧
注釈
凡例
M:必須, M*:特定条件で必須, O: オプション, X: 設定不可 or 設定しても無効
ソリューション全体に関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
AppBinName  | 
M  | 
M  | 
M  | 
アプリケーション名  | 
アプリケーションの名前  | 
SOLIDRootDir  | 
M  | 
M  | 
M  | 
SOLIDフォルダの ルートパス  | 
SOLIDソースツリーのルートパスを 絶対パスで指定  | 
SOLID_LOADABLE_APP  | 
O  | 
O  | 
O  | 
0 (省略時)  | 
通常のアプリケーション  | 
1  | 
ローダブルアプリケーション  | 
||||
基本動作に関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
LibFloatingPoint  | 
M  | 
M  | 
M  | 
FPUとABIの設定  | 
|
AArch64  | 
AArch64 CPU標準 abi=softfp (AArch64時のみ指定可)  | 
||||
soft  | 
FPU無し abi=soft (AArch32時のみ指定可)  | 
||||
f3d16  | 
fpuv3-d16使用 abi=softfp (AArch32時のみ指定可)  | 
||||
hard  | 
fpuv3-d16使用 abi=hard (AArch32時のみ指定可)  | 
||||
neon  | 
neon使用 abi=softfp (AArch32時のみ指定可) 非推奨  | 
||||
neon-softfp  | 
neon使用 abi=softfp (AArch32時のみ指定可)  | 
||||
neon-hard  | 
neon使用 abi=hard (AArch32時のみ指定可)  | 
||||
SOLID_REQUIRES_GLOBALTICK  | 
O  | 
O  | 
O  | 
コア間でグローバルなカウンタ値を返すタイマーI/Fの有効/無効  | 
|
true  | 
有効  | 
||||
false  | 
無効 設定不可  | 
||||
SOLID_USE_LPAE  | 
O  | 
O  | 
O  | 
ロングアドレス (AArch32時 40bit, AArch64時 48bit)の有効/無効  | 
|
1  | 
有効 (AArch64 CPU では自動的に"1"を設定)  | 
||||
0 (省略時)  | 
無効  | 
||||
SOLID_SHARED_GIC  | 
O  | 
O  | 
O  | 
他OSとのGICの共有 有/無  | 
|
true  | 
有 (SOLID-OSが使用する割込みのみ制御) マルチOSで使用時は必須  | 
||||
false (省略時)  | 
無 (全割込みについてGICを制御)  | 
||||
SOLID_GIC_CPU_OFFSET  | 
O  | 
O  | 
O  | 
オフセット値  | 
GICでの Core0 と SOLID-OSのコアIDの オフセット値。 マルチOS時にSOLID-OSの 起動コアが Core0 以外の場合指定  | 
SOLID_SMP  | 
X  | 
M  | 
M  | 
コア数  | 
SMP の SOLID-OS で使用するコア数  | 
SOLID_TZ  | 
O  | 
O  | 
O  | 
RTOS実行時の Secure/Non-secure の設定  | 
|
normal (省略時)  | 
Normal world (Non-Secure)  | 
||||
secure  | 
Secure world  | 
||||
SOLID_SUPPORT_RTOS_EVENT_CALLBACK  | 
O  | 
O  | 
O  | 
RTOSイベントコールバックの有効/無効  | 
|
1  | 
有効  | 
||||
0 (省略時)  | 
無効  | 
||||
SOLID_DISABLE_FIQ  | 
O  | 
O  | 
O  | 
FIQを SOLID-OSで使用  | 
|
1  | 
使用  | 
||||
0 (省略時)  | 
不使用  | 
||||
SOLID_NESTED_INHISR  | 
O  | 
O  | 
O  | 
多重割込みの不許可の設定  | 
|
1 (省略時)  | 
使用  | 
||||
0  | 
不使用  | 
||||
SOLID_GIC_USE_ARE  | 
O  | 
O  | 
O  | 
GIC Affinityルーティングの利用設定  | 
|
true  | 
利用する (GICv1, GICv2では設定不可)  | 
||||
false (省略時)  | 
利用しない  | 
||||
SOLIDの振る舞いに関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_USE_MONOBUILD  | 
O  | 
O  | 
O  | 
モノビルド使用の設定  | 
|
1  | 
モノビルドを使用する solid_cs を solid_bootの1セクションとして リンクする形式  | 
||||
0 (省略時)  | 
モノビルドを使用しない solid_cs と solid_boot を別のロード モジュールとしてリンクする形式 設定に際してはKMCにご相談ください  | 
||||
SOLID_CORE_BOOTTEST  | 
O  | 
O  | 
O  | 
Coreサービスのテスト実行(通常は 0 を設定してください)  | 
|
1  | 
実行する  | 
||||
0 (省略時)  | 
実行しない  | 
||||
SOLID_CORE_BOOTKERNEL  | 
O  | 
O  | 
O  | 
TOPPERSカーネルを起動する  | 
|
1 (省略時)  | 
起動する  | 
||||
0  | 
起動しない  | 
||||
SOLID-OSの追加機能に関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_USE_FAT  | 
O  | 
O  | 
O  | 
SOLIDのFATドライバの使用設定  | 
|
1 (省略時)  | 
使用する  | 
||||
0  | 
使用しない  | 
||||
SOLID_USE_LWIP  | 
O  | 
O  | 
O  | 
LWIP TCP/IPプロトコルスタックの使用設定  | 
|
1 (省略時)  | 
使用する (Etherドライバが必要)  | 
||||
0  | 
使用しない  | 
||||
LibEventTracker  | 
O  | 
O  | 
O  | 
イベントトラッカーの有効設定  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
SOLID_MONITORDEBUG  | 
O  | 
O  | 
O  | 
モニターデバッガの使用設定  | 
|
1  | 
有効 対応するための条件がありますので、 KMCにご相談ください  | 
||||
0 (省略時)  | 
無効  | 
||||
SOLID_NOUSE_SOLID_LDR  | 
O  | 
O  | 
O  | 
SOLIDインテリジェントローダーの不使用設定  | 
|
1  | 
ローダーを使用しない  | 
||||
0 (省略時)  | 
ローダーを使用する  | 
||||
SOLID_NOUSE_GENERIC_DMA_API  | 
O  | 
O  | 
O  | 
SOLID汎用DMA API の不使用設定  | 
|
1  | 
DMA API を使用しない  | 
||||
0 (省略時)  | 
DMA API を使用する  | 
||||
LibVLINK  | 
O  | 
O  | 
O  | 
PARTNERデバッガ の VLINK使用の設定 PARTNERデバッガ設定(JETARM.CFG)と整合していないといけません  | 
|
true (省略時)  | 
有効 FMP/FMP3では要注意 (複数コアからの同時使用は非サポート)  | 
||||
false  | 
無効  | 
||||
SOLID_NOUSE_SOLID_FS  | 
O  | 
O  | 
O  | 
SOLIDファイルシステム API の不使用設定  | 
|
1  | 
ファイルシステム API を使用しない  | 
||||
0 (省略時)  | 
ファイルシステム API を使用する  | 
||||
libXRayTrace  | 
O  | 
O  | 
O  | 
関数トレース機能の有効設定  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
カーネル選択のプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_USE_TOPPERS_ASP3  | 
M  | 
X  | 
X  | 
1  | 
カーネルは TOPPERS/ASP3  | 
SOLID_USE_TOPPERS_FMP  | 
X  | 
M  | 
X  | 
1  | 
カーネルは TOPPERS/FMP  | 
SOLID_USE_TOPPERS_FMP3  | 
X  | 
X  | 
M  | 
1  | 
カーネルは TOPPERS/FMP3  | 
カーネルの振る舞いに関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
|||
|---|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
||||
LibMPLockMethod  | 
X  | 
M  | 
M  | 
SMP カーネルでのロックの実装方式 SOLID-OS では "giant" 以外の指定は不可  | 
||
giant  | 
システム全体で1個のロックを使用する  | 
|||||
proc  | 
プロセッサごとに、タスクロックと オブジェクトロックを使用する  | 
|||||
fine  | 
プロセッサごとにタスクロック、 オブジェクトごとにオブジェクトロックを 使用する  | 
|||||
LibMPTimer  | 
X  | 
M  | 
M  | 
システムタイマーの実装方式 SOLID-OS では "local" の指定は不可  | 
||
global  | 
システム全体で1個のロックを使用する  | 
|||||
global_handler_local  | 
プロセッサごとに、タスクロックと オブジェクトロックを使用する  | 
|||||
local  | 
プロセッサごとにタスクロック、 オブジェクトごとにオブジェクトロックを 使用する  | 
|||||
LibMPSpinLock  | 
X  | 
M  | 
M  | 
スピンロックの実装方式  | 
||
hard  | 
CPUが提供するアトミック命令を 直接呼び出す方式  | 
|||||
soft  | 
ソフトウェアによるエミュレーション方式  | 
|||||
LibNoCheckFunctionAlignment  | 
O  | 
O  | 
O  | 
Thumb対応。関数のアラインメント例外の無効化  | 
||
true  | 
例外を発生させない  | 
|||||
false (省略時)  | 
例外を発生させる  | 
|||||
カーネルの追加機能に関するプロパティ
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
LibDynamicCreate  | 
O  | 
O  | 
O  | 
資源動的生成 API のサポート  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibExtendedPriority  | 
O  | 
O  | 
O  | 
優先度拡張のサポート  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibMutexPriorityInheritance  | 
O  | 
O  | 
O  | 
優先度継承 Mutex のサポート  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibSKXReadersWriterLock  | 
X  | 
O  | 
O  | 
Readers/Writer ロックAPI のサポート  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibSKXProcessorStat  | 
X  | 
O  | 
X  | 
タスクマイグレーション向け、プロセッサアイドル時間取得API  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibSKXSysManage  | 
X  | 
O  | 
X  | 
タスクマイグレーション向け、指定優先度以下の実行待ちタスクの 中から最も優先度及び優先順位が高いタスクのIDを取得するAPI  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
LibMessageBuffer  | 
O  | 
O  | 
X  | 
MessageBufferのサポート  | 
|
true  | 
有り  | 
||||
false (省略時)  | 
無し  | 
||||
LibASP3MessageBuffer  | 
O  | 
O  | 
X  | 
MessageBufferのサポート  | 
|
true  | 
有り  | 
||||
false (省略時)  | 
無し  | 
||||
SOLID_EXTEND_REF_TASK  | 
X  | 
O  | 
O  | 
タスクスタック関連情報の取得を拡張したref_task()のサポート  | 
|
1  | 
有り  | 
||||
0 (省略時)  | 
無し  | 
||||
SOLID_SUPPORT_EGET_TID  | 
X  | 
O  | 
X  | 
eget_tid() のサポート  | 
|
1  | 
有り  | 
||||
0 (省略時)  | 
無し  | 
||||
SOLID_TLS_SUPPORT  | 
O  | 
O  | 
O  | 
TLS (Thread Local Strage) のサポート  | 
|
1  | 
有り  | 
||||
0 (省略時)  | 
無し  | 
||||
SOLID_TLS_SIZE  | 
O  | 
O  | 
O  | 
サイズ  | 
TLSのサイズ SOLID_TLS_SUPPORT=1 時のみ有効  | 
ソリューション全体にかかるコンパイルオプション
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
LibDynamicCreate  | 
O  | 
O  | 
O  | 
資源動的生成 API のサポート  | 
|
true  | 
有効  | 
||||
false (省略時)  | 
無効  | 
||||
BSPのプロパティファイル
BSPのプロパティファイルは、基本的に solid-os/bsp/直下にあり BSP のフォルダ名と同じファイル名で、 拡張子が ".props" のものになります。
BSPのプロパティファイルの形式
BSPのプロパティファイルは、以下の形式のファイルです。"Property1" や "Property2" が プロパティの各項目で、"定義" が項目設定する値になります。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="UserMacros">
  <Property1> 定義 </Property1>
  <Property2> 定義 </Property2>
  . . . . .
</PropertyGroup>
<PropertyGroup>
  <Property3> 定義 </Property3>
  . . . . .
</PropertyGroup>
. . . . .
<ItemDefinitionGroup Condition="'$(SOLIDBootProject)'==''">
  <ClCompile>
    コンパイルに関連する item の定義
  </ClCompile>
  <Assemble>
    アセンブルに関連する item の定義
  </Assemble>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(SOLIDBootProject)'=='' AND '$(SOLID_LOADABLE_APP)'==''">
  <Link>
    リンクに関連する item の定義
  </Link>
</ItemDefinitionGroup>
</Project>
BSPで指定するプロパティ一覧
注釈
凡例
M:必須, M*:特定条件で必須, O: オプション, X: 設定不可 or 設定しても無効
CPU種別
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
LibEndian  | 
M  | 
M  | 
M  | 
エンディアン  | 
|
Little  | 
LITTLEエンディアン  | 
||||
Big  | 
BIGエンディアン  | 
||||
LibCPU  | 
M  | 
M  | 
M  | 
CPUアーキテクチャ  | 
|
ARMV8A  | 
ARMv8AアーキテクチャCPU一般  | 
||||
Cortex-A57  | 
Cortex-A57 (ARMV8A が自動設定されます)  | 
||||
Cortex-A53  | 
Cortex-A53 (ARMV8A が自動設定されます)  | 
||||
Cortex-A35  | 
Cortex-A35 (ARMV8A が自動設定されます)  | 
||||
ARMV7A  | 
ARMv7AアーキテクチャCPU一般  | 
||||
Cortex-A9  | 
Cortex-A9 (ARMV7A が自動設定されます)  | 
||||
Cortex-A7  | 
Cortex-A7 (ARMV7A が自動設定されます)  | 
||||
Cortex-A5  | 
Cortex-A5 (ARMV7A が自動設定されます)  | 
||||
Cortex-A15  | 
Cortex-A15 (ARMV7A が自動設定されます)  | 
||||
LibCode  | 
M  | 
M  | 
M  | 
生成するコードの種別  | 
|
ARM  | 
AArch32のコード生成  | 
||||
Thumb  | 
Thumbのコード生成  | 
||||
AArch64  | 
AArch64のコード生成  | 
||||
BSP ボード依存部の設定
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
_PropertySheetDisplayName  | 
M  | 
M  | 
M  | 
文字列  | 
プロパティシートのタイトルに表示する名前  | 
BSPName  | 
M  | 
M  | 
M  | 
文字列  | 
BSPの名前 (.props およびフォルダと同一名)  | 
SOLID_USE_PSCI_SUPPORT  | 
O  | 
O  | 
O  | 
PSCI コール (セキュアモニタコール)のサポート  | 
|
true  | 
サポート有り  | 
||||
false (省略時)  | 
サポート無し  | 
||||
BSP SOC依存部の設定
プロパティ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOCName  | 
M  | 
M  | 
M  | 
文字列  | 
SOCの名前  | 
その他のコンパイルオプション
注釈
凡例
M:必須, M*:特定条件で必須, O: オプション, X: 設定不可 or 設定しても無効
BOOT と COREサービス の両方に関するコンパイルオプション
マクロ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_ARM_MULTICLUSTER  | 
X  | 
O  | 
O  | 
数字  | 
クラスタをまたがってSOLIDをSMPで使用する 場合に使用。1にするとCPUIDが クラスタIDx4+CPUID(0~3) になる  | 
SOLID_GIC_USE_ARE  | 
M*  | 
M*  | 
M*  | 
なし  | 
GICv3の Affinity Routingを使用する マルチOS環境で他OSが Affinity Routing使用 の場合は指定必須  | 
SOLID_SEPARATE_RWDATA  | 
X  | 
O  | 
O  | 
なし  | 
.dataセクションが .text+.rodata に 連続しない領域に配置する場合  | 
BOOT に関するコンパイルオプション
マクロ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
DEBUG_INIT_LOOPS  | 
X  | 
O  | 
O  | 
数字  | 
特定ターゲット向け SOLID_BOOT を起動する前のビジーループの ループ回数  | 
SOLID_BOOT_USERMEMCPY  | 
X  | 
O  | 
O  | 
なし  | 
SOLID_BOOT が使用する mem_cpy, mem_setを libcの代わりにユーザ定義の関数を使用する  | 
SOLID_BOOT_NOL2INV  | 
O  | 
O  | 
O  | 
なし  | 
初期化時にL2キャッシュの無効化を呼ばない. SOLIDの起動より前に他のシステム(ubootや Linux)が初期化をしている時に使用する。  | 
SOLID_BOOT_FIXSP  | 
X  | 
O  | 
O  | 
なし  | 
IMPL_BOOT_ELxxを呼び出す時にSPを各CPU毎に 設定する。 BOOTのメモリ使用量は増えますがSMP時の 起動時間が少し短縮されます  | 
SOLID_BOOT_KEEP_MMUON  | 
O  | 
O  | 
O  | 
なし  | 
MMUON状態のまま起動する デフォルトはMMUオフ状態でSOLIDに突入する  | 
SOLID_NO_INVALID_COREID_CHECK  | 
X  | 
O  | 
O  | 
なし  | 
非SOLID-OSのコアが SOLID-OSのコードに突入 するのを回避するチェックを無効にする SOLID-OSからLinuxを起動する場合は定義必須  | 
SOLID_PHYMAP_SIZE  | 
M*  | 
M*  | 
M*  | 
数字 (単位MB)  | 
AARCH64時のみ有効: コード領域がReadOnlyのため普通はソフト ブレークが設定できないので、同じメモリを 書き込み可でマップするための領域(Linuxも 同様の領域を持っている)  | 
SOLID_ARM_TABLEWALK_CACHEON  | 
O  | 
O  | 
O  | 
なし  | 
AARCH64のみ有効: MMUテーブルへのアクセスをキャッシュON状態 で行う (デフォルトは キャッシュ OFF)  | 
COREサービス に関するコンパイルオプション
マクロ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_SMP_IPI_INTNO  | 
X  | 
O  | 
O  | 
数字  | 
SOLID-OSがマルチコア間の通信に使うSGI# SGIが8個しかサポートされないCPUでは必須 省略時は 15 を使います  | 
SOLID_GIC_CPUID_OFFSET  | 
O  | 
O  | 
O  | 
数字  | 
マルチOS環境用 SOLID-OS管理下の最小CPUIDを指定  | 
SOLID_SHARED_GIC  | 
O  | 
O  | 
O  | 
なし  | 
マルチOS環境用 SOLID-OSが使用しない割込みは初期化しない  | 
SOLID_CPPINIT_PARALLEL  | 
X  | 
O  | 
O  | 
なし  | 
SMPカーネルで C++ のスタティックコンスト ラクターを複数コアで分散実行 クラス多数場合起動時間の短縮に有効  | 
SOLID_TIMER_USE_PRESET_NSEC_PARAM  | 
X  | 
O  | 
O  | 
なし  | 
SOLID_TIMER_WaitNsec() のパラメータを 起動時に計算せず、固定値を使用する 起動時間の短縮に有効  | 
SOLID_TIMER_EACHCPU  | 
X  | 
O  | 
O  | 
なし  | 
タイマー割込みを各コアで実行する 省略時はCPUIDが最小のコアで実行  | 
SOLID_GIC_USE_FIQ  | 
O  | 
O  | 
O  | 
なし  | 
FIQについてもGICの割込みチェックルーチン で処理する  | 
SOLID_EVENTTRACKER_IGNORE_SGI  | 
X  | 
O  | 
O  | 
なし  | 
イベントトラッカーでSGIを記録しない SMPカーネル (FMP/FMP3) で有効  | 
SOLID_EVENTTRACKER_IGNORE_PPI  | 
X  | 
O  | 
X  | 
なし  | 
イベントトラッカーでPPIを記録しない ティックタイマー形式のカーネル(FMP)で有効  | 
TOPPERSカーネル に関するコンパイルオプション
マクロ名  | 
RTOS  | 
値  | 
説明  | 
||
|---|---|---|---|---|---|
ASP3  | 
FMP  | 
FMP3  | 
|||
SOLID_TOPPERS_ITSTATE_PATCH  | 
M*  | 
M*  | 
M*  | 
なし  | 
AARCH32時かつ Thumb時指定必須 SGI#0 を使用するので注意  |