付録B  注意事項


B.1 コンパイル・オプションの制限

RI78V4を組み込んだシステムでは,以下のコンパイル・オプションを指定してください。

オプション

意味

-base_number=prefix

アセンブリ言語の16進数の基数表現形式としてPrefix表現形式(0xn..n)を指定。



B.2 レジスタ・バンクの扱い

RI78V4を組み込んだシステムは,基本的にレジスタ・バンク0で動作させてください。

レジスタ・バンクの変更が必要な場合,以下の仕様に基づいて変更してください。ルーチンによってレジスタ・バンクの変更を許可しているルーチン,禁止しているルーチンがあります。

【レジスタ・バンク変更を許可しているルーチン】

- タスク
タスクでは,初期レジスタ・バンク番号は0固定です。
RI78V4では,タスク切り替え時に,レジスタ・バンク番号と1バンク分(タスク切り替え時のバンク)の汎用レジスタのみ退避/復帰されます。
残り3バンク分の汎用レジスタは退避/復帰されないため,タスク処理上で2つ以上のレジスタ・バンクを使用する場合には,レジスタ・バンク変更時に変更前のレジスタ・バンクの汎用レジスタを退避する必要があります。この退避を行わない場合,タスク切り替え先でレジスタ・バンクが破壊される可能性があります。




- OS管理外の割り込み処理
OS管理外の割り込み処理でレジスタ・バンク変更を行う場合,割り込み終了時には割り込み発生元のレジスタ・バンク番号へ戻してください。


【レジスタ・バンク変更を禁止しているルーチン】

- 割り込みハンドラ
割り込みハンドラでは,レジスタ・バンク番号は割り込み発生元の値を継承します。


- 周期ハンドラ
周期ハンドラでは,レジスタ・バンク番号はタイマ・ハンドラ用割り込み発生元の値を継承します。


- アイドル・ルーチン
アイドル・ルーチンでは,初期レジスタ・バンク番号は0固定です。


- 初期化ルーチン
初期化ルーチンでは,初期レジスタ・バンク番号は0固定です。OS初期化前(_kernel_start関数呼び出し前)に設定されたレジスタ・バンクに無関係にレジスタ・バンク0に上書きされます。