Renesas Synergy™

FAQ 3000004 : 1つのファイルでのすべての割り込みベクタのアドレス割り付けの定義(CC-RL)

Q : 質問

RL78コンパイラCC-RLを使用しています。割り込みベクタテーブルを次のように作成したいのですが、可能でしょうか?

①ベクタテーブルアドレス割り付けを、ひとつのファイル内で管理したい。
②全ベクタテーブルアドレスに対して明示的に割り付けを宣言したい。


A : 回答

CC-RL V1.04.00以降の場合には、.VECTOR疑似命令を使用してください。
(例)
.EXTERN _func1
.EXTERN _func2
.EXTERN _func3
_func1 .VECTOR 0x10
_func2 .VECTOR 0x12
_func3 .VECTOR 0x14

CC-RL V1.03.00以前の場合には、.VECTOR疑似命令では、シンボル名は同じファイルに定義されている必要があります。

そのため、一つのファイルに割り込みベクタを全て定義して、かつ割り込み処理自身を別のファイルに定義する場合には、.DB2疑似命令等を使用して実現する必要があります。
ただし、いくつか手動で設定しなければならないものもありますのでご注意ください。

以下に設定例を示します。
(例)
.EXTERN _InterruptFunc
.SECTION .vect, AT 0x00XX ←ベクタアドレス
.DB2 _InterruptFunc

手動で設定する項目について説明します。
.VECTOR疑似命令をひとつでも使用すると、割り込みのベクタ領域(0x00000~0x0007F)は、.VECTOR擬似命令で定義しなければなりません。
スタートアップルーチンcstart.asmでは、リセットベクタに対して、.VECTOR疑似命令で定義していますので、削除(コメントアウト)して、ベクタをまとめた箇所で.VECTOR疑似命令を使用せずに定義してください。
(コメントアウトする箇所)
_start .VECTOR 0

また、#pragma interruptでベクタテーブルを指定した場合と、リンカの-DEBUG_MONITORオプションを指定した場合は、.VECTOR疑似命令相当のコードとなります。
#pragma interruptではベクタテーブルを指定しないでください。
また、-DEBUG_MONITORオプションの代わりに、アセンブラソースでデバッグモニタ領域を0xffで埋めるプログラムを記述する必要があります。
(例)
デバッグモニタ領域:0x0002~0x0003、0x00ce~0x00d7
.SECTION ocdarea, AT 0x0002
.DB2 0xffff
.SECTION ocdarea, AT 0x00ce
.DB4 0xffffffff
.DB4 0xffffffff
.DB2 0xffff

 

適用製品

e² studio
CS+ (旧 CubeSuite+)
RL78ファミリ用Cコンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください