RENESAS TOOL NEWS 2007年07月01日 : 070701/tn4
| M16Cシリーズ用Cコンパイラパッケージ
ご使用上のお願い
--C言語スタートアップファイルを使用する場合の注意-- |
M16Cシリーズ用Cコンパイラパッケージの使用上の注意事項を連絡します。
1. 該当製品
M16Cシリーズ*用Cコンパイラパッケージ (M3T-NC30WA)
V.5.42 Release 00 および V.5.43 Release 00
*M16C/60, /30, /20, /10, /Tiny, およびR8C/Tinyシリーズの総称です。
2. 内容
MCUのリセット後、ウォッチドッグタイマを有効にしている場合、C言語スタート
アップの実行から抜け出せない場合があります。
3. 発生条件
以下の条件をすべて満たす場合に発生します。
(1) C言語スタートアップファイルを使用している。
(2) C言語スタートアップファイルcstartdef.h内で__WATCH_DOG__を1に設定し、
オプション機能選択レジスタを有効にしている。
--------------------------
#define __WATCH_DOG__ 1
--------------------------
説明:
C言語スタートアップファイル"cstartdef.h"で__WATCH_DOG__を1にすると、
_asm(" .ofsreg 0FFH");
により、MCUのリセット後にウォッチドッグタイマを自動的に起動する
設定になります。スタートアップファイル内でセクションの初期化時に
定期的にウォッチドッグタイマをリフレッシュしていますが、リフレッシュ
のタイミングが遅いため、ウォッチドッグタイマから抜け出せません。
4. 回避策
セクションの初期化処理定義ファイルinitsct.hを以下のように修正してくだ
さい。
---------------------------------------------------------------
#if __WATCH_DOG__ == 1
#pragma ASM
scopy .macro FROM_,TO_
mov.b #00,0DH
mov.b #0ffH,0DH
mov.w #0000H,R0
.local M1
M1:
cmp.w #sizeof TO_,R0
.local M2
jeq M2
;cmp.w #0064H,R0 <- コメントアウトしてください
;.local M3 <- コメントアウトしてください
;jne M3 <- コメントアウトしてください
mov.b #00,0DH
mov.b #0ffH,0DH
;M3: <- コメントアウトしてください
mov.w #(topof FROM_)&0ffffH,A0
mov.w #(topof TO_)&0ffffH,A1
add.w R0,A0
add.w R0,A1
mov.b [A0],[A1]
add.w #1,R0
jmp M1
M2:
.endm
N_BZERO .macro SECT_
mov.b #00,0DH
mov.b #0ffH,0DH
mov.w #0000H,R0
.local M1
M1:
cmp.w #sizeof SECT_,R0
.local M2
jeq M2
;cmp.w #0064H,R0 <- コメントアウトしてください。
;.local M3 <- コメントアウトしてください。
;jne M3 <- コメントアウトしてください。
mov.b #00,0DH
mov.b #0ffH,0DH
;M3: <- コメントアウトしてください。
mov.w #(topof SECT_)&0ffffH,A0
add.w R0,A0
mov.b #00H,[A0]
add.w #1H,R0
jmp M1
M2:
.endm
#pragma ENDASM
#endif
---------------------------------------------------------------
5. 恒久対策
次期バージョンで改修する予定です。