Everything
20.22 固定ベクタ/例外ベクタ情報(interrupt_fvector[])
ここでは,RXv1アーキテクチャの固定ベクタ・テーブル(0xFFFFFF80~0xFFFFFFFF番地)/RXv2アーキテクチャの例外ベクタ・テーブルを定義します。
MCUによっては,固定ベクタ・テーブル/例外ベクタ・テーブルには,割り込みハンドラのアドレスだけでなく,エンディアン選択レジスタなども含まれています。
固定ベクタ/例外ベクタの割り込み要因は,すべてカーネル管理外割り込みの扱いとなります。
RI600PXでは,ベクタ・アドレスに対して表20-10のようにベクタ番号を割り当てています。本定義を行わないベクタの扱いも表20-10に示します。
なお,固定ベクタ・テーブル/例外ベクタ・テーブルの内容はMCU毎に異なります。詳細は,使用するMCUのハードウエア・マニュアルを参照してください。
また,cfg600pxはここで定義した割り込みに関する割り込み制御レジスタや,割り込み要因等の初期設定のコードは生成しません。初期設定は,アプリケーションで実装いただく必要があります。
表20-10  固定ベクタ・テーブル/例外ベクタ・テーブル
ベクタ・アドレス 1
ベクタ番号
要因の例(MCU毎に異なります)
定義省略時の扱い
0xFFFFFF80
0
エンディアン選択レジスタ
コンパイラのendianオプションに応じて,以下が設定されます。
- “-endian=little”の場合
0xFFFFFFFF
- “-endian=big”の場合
0xFFFFFFF8
0xFFFFFF84
1
(予約領域)
0xFFFFFFFF
0xFFFFFF88
2
オプション機能選択レジスタ1
0xFFFFFF8C
3
オプション機能選択レジスタ0
0xFFFFFF90
4
(予約領域)
0xFFFFFF94
5
(予約領域)
0xFFFFFF98
6
(予約領域)
0xFFFFFF9C
7
ROMコード・プロテクト(フラッシュ・メモリ)
0xFFFFFFA0
8
オンチップ・デバッガIDコード・プロテクト(フラッシュ・メモリ)
0xFFFFFFA4
9
0xFFFFFFA8
10
0xFFFFFFAC
11
0xFFFFFFB0
12
(予約領域)
0xFFFFFFB4
13
(予約領域)
0xFFFFFFB8
14
(予約領域)
0xFFFFFFBC
15
(予約領域)
0xFFFFFFC0
16
(予約領域)
システム・ダウン
0xFFFFFFC4
17
(予約領域)
0xFFFFFFC8
18
(予約領域)
0xFFFFFFCC
19
(予約領域)
0xFFFFFFD0
20
特権命令例外
0xFFFFFFD4
21
アクセス例外
アクセス例外ハンドラ2
0xFFFFFFD8
22
(予約領域)
システム・ダウン
0xFFFFFFDC
23
未定義命令例外
0xFFFFFFE0
24
(予約領域)
0xFFFFFFE4
25
浮動小数点例外
0xFFFFFFE8
26
(予約領域)
0xFFFFFFEC
27
(予約領域)
0xFFFFFFF0
28
(予約領域)
0xFFFFFFF4
29
(予約領域)
0xFFFFFFF8
30
ノンマスカブル割り込み
0xFFFFFFFC
31
リセット
PowerON_Reset_PC()
1
表20-10に記載のベクタ・アドレスは,RXv1アーキテクチャの固定ベクタ・テーブルのアドレスです。RXv2アーキテクチャの例外ベクタ・テーブルのアドレスは,EXTBレジスタによって決まります。EXTBレジスタの初期値は,RXv1アーキテクチャの固定ベクタ・テーブルのアドレスと同じです。2.6.4節の「FIX_INTERRUPT_VECTORセクション」も参照してください。

2
ベクタ21(アクセス例外)にハンドラを定義しないでください。定義すると,アクセス例外ハンドラが起動されなくなります。


形式
< >内は,ユーザが記述する部分を示します。
1 ) ベクタ番号
- 説明
ベクタ番号を定義します。
- 定義形式
数値
- 定義範囲
0~31
- 省略時の扱い
省略不可
2 ) 割り込みハンドラの開始アドレス(entry_adderess
- 説明
割り込みハンドラの実行開始関数,または固定ベクタ/例外ベクタへの設定値を定義します。
- 定義形式
関数名または数値
- 定義範囲
数値の場合は0~0xFFFFFFFF
- 省略時の扱い
省略不可
3 ) pragmaディレクティブに渡すスイッチ(pragma_switch
- 説明
cfg600pxは,entry_addressで指定された関数を,割り込み関数としてkernel_id.hに#pragma interruptディレクティブを出力します。このpragmaディレクティブに渡すスイッチを指定します。
なお,entry_addressに数値を指定した場合,およびベクタ番号31(リセット)については,#pragma interruptディレクティブは出力されません。
- 定義形式
シンボル
- 定義範囲
以下を指定できます。複数指定する場合は,カンマで区切ってください。なお,“ACC”と“NOACC”を同時に指定することはできません。
S: 割り込みハンドラで使用するレジスタ数を制限する“save”スイッチを渡します。
ACC: 割り込みハンドラでACCレジスタを保証する“acc”スイッチを渡します。
NOACC: 割り込みハンドラでACCレジスタを保証しない“no_acc”スイッチを渡します。
- 省略時の扱い
何もスイッチを渡しません。
- 備考
ACCレジスタの扱いについては,表20-9を参照してください。