20.5 system.contextの注意事項
ここでは,system.contextに関する注意事項を説明します。

20.5.1 FPU,DSPに関する注意事項

system.contextに設定すべき値は,FPU,DSPをどのように扱うかによって異なります。

以降では,以下の各ケースについて,system.contextの推奨値を示します。推奨以外の設定にした場合は,推奨設定に比べてわずかにRI600PXの性能が悪化します。

1 ) FPUおよびDSP(アキュムレータ)を搭載したMCUを使用する場合
該当MCU:RX600シリーズなど

2 ) FPUを搭載せず,かつDSP(アキュムレータ)を搭載するMCUを使用する場合
該当MCU:RX200シリーズなど

3 ) FPUを搭載し,かつDSP(アキュムレータ)を搭載しないMCUを使用する場合
該当MCU:本マニュアル作成時点では,これに該当するMCUは存在しません。

4 ) FPUもDSP(アキュムレータ)も搭載しないMCUを使用する場合
該当MCU:本マニュアル作成時点では,これに該当するMCUは存在しません。

備考 コンパイラが浮動小数点演算命令を出力するのは,-cpu=rx600かつ-fpuオプション指定時のみです。
アセンブラで“chkfpu”オプションを指定すると,浮動小数点演算命令の記述をWarningとして検出します。
また,コンパイラがDSP機能命令を出力することはありません。
アセンブラで“chkdsp”オプションを指定すると,DSP機能命令の記述をWarningとして検出します。




1 ) FPUおよびDSP(アキュムレータ)を搭載したMCUを使用する場合

表20−3  FPUおよびDSP(アキュムレータ)を搭載したMCUを使用する場合

タスクの命令使用状況

system.contextの推奨

浮動小数点演算命令

DSP機能命令

あり

あり

“FPSW”と“ACC”を含む設定が必須

なし

“FPSW”を含む設定が必須で,かつ“ACC”を含まない設定を推奨

なし

あり

“ACC”を含む設定が必須で,かつ“FPSW”を含まない設定を推奨

なし

“FPSW”,“ ACC”を含まない設定を推奨



1 ) FPUを搭載せず,かつDSP(アキュムレータ)を搭載するMCUを使用する場合

表20−4  FPUを搭載せず,かつDSP(アキュムレータ)を搭載するMCUを使用する場合

タスクの命令使用状況

system.contextの推奨

浮動小数点演算命令

DSP機能命令

あり

あり

(FPUを搭載しないMCUのため,浮動小数点演算命令は使用できません)

なし

なし

あり

“FPSW”を含まず,かつ“ACC”を含む設定が必須

なし

“FPSW”を含まない設定が必須で,かつ“ACC”を含まない設定を推奨



2 ) FPUを搭載し,かつDSP(アキュムレータ)を搭載しないMCUを使用する場合

表20−5  FPUを搭載し,かつDSP(アキュムレータ)を搭載しないMCUを使用する場合

タスクの命令使用状況

system.contextの推奨

浮動小数点演算命令

DSP機能命令

あり

あり

(DSPを搭載しないMCUのため,DSP機能命令は使用できません)

なし

“FPSW”を含み,かつ“ACC”を含まない設定が必須

なし

あり

(DSPを搭載しないMCUのため,DSP機能命令は使用できません)

なし

“ACC”を含まない設定が必須で,かつ“FPSW”を含まない設定を推奨



3 ) FPUもDSP(アキュムレータ)も搭載しないMCUを使用する場合

表20−6  FPUもDSP(アキュムレータ)も搭載しないMCUを使用する場合

タスクの命令使用状況

system.contextの推奨

浮動小数点演算命令

DSP機能命令

あり

あり

(FPUおよびDSPを搭載しないMCUのため,浮動小数点演算命令およびDSP機能命令は使用できません)

なし

なし

あり

なし

“FPSW”と“ACC”を含まない設定が必須



20.5.2 コンパイラのメfint_registerモ,メbaseモ,およびメpidモオプションとの関係

system.contextに,“MIN”を含む指定を行うことで,RI600PXはR8〜R13をタスク・コンテキストとして保存しないようになり,高速化が図れるようになっています。

system.contextにこれらの設定をしても良いケースは,コンパイラの“fint_register”,“base”,および“pid”オプションでR8〜R13をすべて使用する指定をした場合のみです。

その他の場合でsystem.contextに前述の設定をした場合,RI600PXは正常に動作しません。

【 良い例 】

      例1:-fint_register=4 -base=rom=R8 -base=ram=R9
      例2:-fint_register=3 -base=rom=R8 -base=ram=R9 -base=0x80000=R10
【 悪い例 】

      例3:“-fint_register”, “-base”, “-pid”の指定なし
      例4:-fint_register=4
      例5:-base=rom=R8 -base=ram=R9