ソリューションのプロパティ (カーネルコンフィグレーション等)
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 |
X |
資源動的生成 API のサポート |
|
true |
有効 |
||||
false (省略時) |
無効 |
||||
LibExtendedPriority |
O |
O |
X |
優先度拡張のサポート |
|
true |
有効 |
||||
false (省略時) |
無効 |
||||
LibMutexPriorityInheritance |
O |
O |
X |
優先度継承 Mutex のサポート |
|
true |
有効 |
||||
false (省略時) |
無効 |
||||
LibSKXReadersWriterLock |
X |
O |
X |
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 |
X |
タスクスタック関連情報の取得を拡張したref_task()のサポート |
|
1 |
有り |
||||
0 (省略時) |
無し |
||||
SOLID_SUPPORT_EGET_TID |
X |
O |
X |
eget_tid() のサポート |
|
1 |
有り |
||||
0 (省略時) |
無し |
||||
SOLID_TLS_SUPPORT |
O |
O |
X |
TLS (Thread Local Strage) のサポート |
|
1 |
有り |
||||
0 (省略時) |
無し |
||||
SOLID_TLS_SIZE |
O |
O |
X |
サイズ |
TLSのサイズ SOLID_TLS_SUPPORT=1 時のみ有効 |
ソリューション全体にかかるコンパイルオプション
プロパティ名 |
RTOS |
値 |
説明 |
||
---|---|---|---|---|---|
ASP3 |
FMP |
FMP3 |
|||
LibDynamicCreate |
O |
O |
X |
資源動的生成 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 を使用するので注意 |