ソリューションのプロパティ (カーネルコンフィグレーション等)

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_CPUID_OFFSET

O

O

O

オフセット値

GICでの Core0 と SOLID-OSのコアIDの オフセット値

マルチOS時にSOLID-OSの 起動コアが Core0 以外の場合指定

マルチクラスタCPUで GICv2使用時に必要

SOLID_BOOT_CPUID

O

O

O

CPU番号

マルチOS時に SOLID-OSで使用するコアの先頭コア番号

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_DISABLE_FIQ

O

O

O

FIQを SOLID-OSで使用

1

使用

0 (省略時)

不使用

QUSE_QEMU

O

O

O

QEMUで実行する

1

QEMU使用

0 (省略時)

QEMU不使用

SOLID_USE_MPU

O

X

X

MPUを使用する(Cortex-R以外は設定不可)

1

使用

0 (省略時)

不使用

SOLID_USE_TCM

O

X

X

TCMを使用する(Cortex-R以外は設定不可)

1

使用

0 (省略時)

不使用

注釈

SOLID_GIC_CPUID_OFFSETとSOLID_BOOT_CPUIDの設定値に関して

SOLID_BOOT_CPUIDはSOLIDで使用する最初のCPUID(MPIDRで読める値)が0でない時に使用します。 SOLID_GIC_CPUID_OFFSETはGICv2でかつ、CPUIDとGICでのCPUIDが一致していない時に使用します。

例えば8コアでクラスタ0が4コア、クラスタ1が4コアの時に

GICv2は

クラスタ0CPUID0~3→GICのCPUID0~3

クラスタ1CPUID0~3→GICのCPUID4~7

というようにマップされています。 これを合わせるのが SOLID_GIC_CPUID_OFFSETです。

GICv3は

クラスタ0CPUID0~3→クラスタ0での GICのCPUID0~3

クラスタ1CPUID0~3→クラスタ1での GICのCPUID0~3

とCPUと同じ番号を使うようになったのでOFFSETは意識しなくてよくなりましたが、 その代わりに クラスタをまたぐ処理の際にSOLID_ARM_MULTICLUSTERを定義する 必要があります。


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_BOOT_DEBUGGING_HOOK

O

O

O

SOLIDブート時にDEBUG_INIT_LOOPSで指定した回数の

ビジーループを実行する

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

使用しない

SOLID_SOCKETS

O

O

O

SOLID Socketsの使用設定

true

使用する (Sockets実装が必要)

false (省略時)

使用しない

SOLID_SOCKETS_LWIP

O

O

O

SOLID Sockets lwIP実装の使用設定

true

使用する (lwIPが必要)

false (省略時)

使用しない

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 (省略時)

無効

SOLID_USE_RNG

O

O

O

乱数発生器APIの有効化

1

乱数発生器 API を使用する

0 (省略時)

乱数発生器 API を使用しない

SOLID_USE_PMU

O

O

O

PMU利用 API の有効化

1

PMU利用 API を使用する

0 (省略時)

PMU利用 API を使用しない

LibTcsan

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

システムで共通のカーネルティックタイマを 持つ

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_TSK

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 時のみ有効

SOLID_KERNEL_STRICT_STD_SPEC

X

X

O

CPU ロック中に発行可能なシステムコール拡張を無効にする

1

拡張を無効にする

0 (省略時)

拡張を有効にする


ソリューション全体にかかるコンパイルオプション

プロパティ名

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

リトルエンディアン

Big

ビッグエンディアン

LibCPU

M

M

M

CPUアーキテクチャ

ARMV8A

ARMv8-AアーキテクチャCPU一般

Cortex-A72

Cortex-A72

Cortex-A57

Cortex-A57

Cortex-A55

Cortex-A55

Cortex-A53

Cortex-A53

Cortex-A35

Cortex-A35

ARMV7A

ARMv7-AアーキテクチャCPU一般

Cortex-A9

Cortex-A9

Cortex-A7

Cortex-A7

Cortex-A5

Cortex-A5

Cortex-A15

Cortex-A15

Cortex-R7

Cortex-R7

Cortex-R5

Cortex-R5

Cortex-R4F

Cortex-R4F

Cortex-R4

Cortex-R4

LibCode

M

M

M

生成するコードの種別

ARM

AArch32のコード生成

Thumb

Thumbのコード生成

AArch64

AArch64のコード生成


BSP ボード依存部の設定

プロパティ名

RTOS

説明

ASP3

FMP

FMP3

_PropertySheetDisplayName

M

M

M

文字列

プロパティシートのタイトルに表示する名前

BSPName

M

M

M

文字列

BSPの名前 (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クラスタあたりのコア数を 指定します

SOLID_SEPARATE_RWDATA

X

O

O

なし

.dataセクションが .text+.rodata に 連続しない領域に配置する場合


BOOT に関するコンパイルオプション

マクロ名

RTOS

説明

ASP3

FMP

FMP3

DEBUG_INIT_LOOPS

O

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_CPPINIT_PARALLEL

X

O

O

なし

SMPカーネルで C++ のスタティックコンスト ラクターを複数コアで分散実行 クラス多数場合起動時間の短縮に有効

SOLID_TIMER_USE_PRESET_NSEC_PARAM

X

O

O

なし

SOLID_TIMER_WaitNsec() のパラメータを 起動時に計算せず、固定値を使用する 起動時間の短縮に有効

SOLID_TIMER_EACHCPU

X

O

X

なし

タイマー割込みを各コアで実行する 省略時は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 を使用するので注意