SH−2:BOOT/7x4x・7050・7051準備項目および制限事項
1.ユーザ側での準備項目
MCU動作モードは、(2,3,ブートモード,ユーザプログラムモード)をサポートします。
デバッグモニタが常駐するためのエリア(0x800〜0xFFF)番地をあけてください。
ユーザスタックエリアをモニタワーク方式に応じたスタックエリアの確保に考慮してください。
メモリマップ


  内蔵ROM
終了アドレス
スタック方式(内蔵RAM) 固定番地方式(内蔵RAM)
使用可能開始番地
(ソースブレ-クを使用した場合)
使用可能開始番地 モニタ使用番地
SH7044 0x3FFFF 0xFFFFF000 (*0xFFFFF040) 0xFFFFF080 *0xFFFFF000
SH7044(CAChe) 0x3FFFF 0xFFFFF800 (*0xFFFFF840) 0xFFFFF880 *0xFFFFF800
SH7045 0x3FFFF 0xFFFFF000 (*0xFFFFF040) 0xFFFFF080 *0xFFFFF000
SH7045(CAChe) 0x3FFFF 0xFFFFF800 (*0xFFFFF840) 0xFFFFF880 *0xFFFFF800
SH7046 0x3FFFF 0xFFFFD000 (*0xFFFFD040) 0xFFFFD080 *0xFFFFD000
SH7047 0x3FFFF 0xFFFFD000 (*0xFFFFD040) 0xFFFFD080 *0xFFFFD000
SH7050 0x1FFFF 0xFFFFE800 (*0xFFFFE840) 0xFFFFE880 *0xFFFFE800
SH7051 0x3FFFF 0xFFFFD800 (*0xFFFFD840) 0xFFFFD880 *0xFFFFD800
SH7144 0x3FFFF 0xFFFFE000 (*0xFFFFE040) 0xFFFFE080 *0xFFFFE000
SH7145 0x3FFFF 0xFFFFE000 (*0xFFFFE040) 0xFFFFE080 *0xFFFFE000
モニタが内蔵RAM先頭より0x40バイト使用する。
モニタが内蔵RAM先頭より0x80バイト使用する。
(CAChe)は、キャッシュ使用の場合です。
2.使用制限事項
NMIは、デバッガが占有します。
DMAコントローラを動作させているプログラムの場合、バス解放されるまでデバッグ操作できません。
モニタ使用の割り込みベクタは、NMI・UBCブレーク・トラップ62・トラップ63です。(ダウンロード時に自動セット)
一般不当・スロット不当・CPUアドレスエラー・DMACアドレスエラーの割り込みベクタは、CPU設定にてデバッガが通知するに設定しますとモニタ内の不当命令処理アドレス値を置きます。(ダウンロード時に自動セット)
ベクタ0(リセット)値は0x1000以上とし、ベクタ1(スタック)値は、4の倍数の適正なスタック値を置いてください。
DEFの「Start」時に、スタックポインタ値のアドレス場所がRAMであるかの調査をしますので、必ずRAM場所を示して下さい。
デバッグ中は、スタックポイントの設定後に約1〜200ms(ハード構成による)以上のソフトタイマを入れることを推奨します。
CPU設定にてリセット遅延防止タイマを不要設定にしますと、リセット解除から20us後にモニタ(NMI)を起動させます。
NMIエッジは、立下りエッジ(初期値)とします。
内蔵RAM有効(初期値)とします。
UBCブレークの割り込みプライオリティは、15になっています。
ユーザ使用の割り込みレベルは、14以下にして下さい。
使用端子は、リセット・NMI・ブートモード時に使用する通信線および、それに伴うSCK・FWEを占有使用します。
TxD1 RxD1 
SCK1 NMI FWE RESET(共有)
デバッグI/Fを調歩同期に指定した場合は、
SCK1は未使用になります。
CPU動作モード(ブート・Advanced)設定回路および設定は、ユーザ(ターゲット)側で準備・設定して下さい。
ターゲットとの接続は、推奨接続参考図をもとに設計して下さい。
デバイス制限としてフラッシュメモリの書き換え回数に制限があります。
3.機能制限事項
レジスタのSP(スタックポインタ)およびVBRは、リードオンリです。
スタックポインタが適正値でない場合や、VBRがゼロ値でない場合は、モニタは正常動作しません。
ただし、ユーザプログラムにて0番地からのベクタ情報を使用目的アドレスに転送後、VBRを目的アドレスに変更した場合は動作します。
デバッガ操作での不当アクセス割り込みは、処理後無視するかたちになっていますが、ユーザプログラム走行中での不当アクセスは、認識後デバッガにて通知します。(“不当アクセスが発生しました。”と表示します。)
モニタが使用しているエリアにデバッガ操作でメモリライト操作があった場合、無視します。
4.ブレークに対する注意事項
実行前ブレーク固定です。
このモニタは、CPUに内蔵したUBCブレークコントローラを利用しています。
ブレークにおける制限事項は、UBC仕様に準拠しますので注意が必要です。(CPU別ハードウェアマニュアル必読)
また、トレース・ステップ 実行は、ニモニックを分析しながら次ブレーク位置を設定して実行しています。(3secタイムアウト付)
ステップ実行時は、サブルーチンが3sec経っても戻ってこないようなプログラムの場合は、使用しないで下さい。
ブレークを有効にしたい場合は、CPUのSRの割り込みマスクレベルを14以下に設定してください。
非遅延分岐命令の飛び先でのブレーク(bt/bf)の注意CPU別ハードウェアマニュアルに記述されていますが、
非遅延分岐命令の場合、飛び先命令にブレークを設定した場合、通常フェッチではブレークしません。(UBCの制限)
この現象を避けるために、当デバッカーでは、フェッチ+データアクセスのブレーク条件にしています。
しかし、この条件にした場合、非遅延分岐命令の次および、次々の命令にブレークポイントの設定をしますと、非遅延分岐命令をフェッチするたびにブレークが発生してしまいます。(ハードウェアマニュアル内使用上の注意参照)
この現象は避けることができないため、非遅延分岐命令の次および、次々の命令にはブレーク設定をしないで下さい。
C言語の場合は、if文の“true”部の第一行目になります。
       例1)C言語
          if(条件 == true) {
            第一行目 <――――――― ここ
            第ニ行
          }

       例2)ASM
          bt  label
          mov r1、r2 <―――――― ここ
          mov r2、r3 <―――――― ここ
          mov r3、r4
      label:

ブレーク設定をしたい場合は、ダミー文、もしくはnop文で行を空けて設定してください。
5.ブレークトリガ出力機能を使用する場合の注意事項(SH7046/7047に限る)
この機能を使用する場合は、UBCTRGのピンファンクション(PFU)設定が必要になりますので、ユーザー側で設定して下さい。
記述例(サンプルプログラム)
    // UBCTRGのテスト(PA12の設定)
    PACRL3 &= ~(0x1000);   // PFU-PA12(TRG出力) PACRL3<12>= 0
    PACRL1 &= ~(0x300);    // PACRL<9><8>= 0
    PACRL1 |= 0x200;      // PACRL<9>=1
UBCRの設定は、DEF(コントロールソフト)側で実行します。
6.モニタ実行時のCPUに対する設定
NMI立下りエッジ指定(ICR)
モニタが使用する(TxD,RxD,SCK)のピンファンクション指定
モニタ使用ポート(SCI)を初期設定
UBC/内蔵ROM/RAMの有効指定
(TCSR)設定値を退避後、ウォッチドッグタイマを停止させ、モニタ終了時に退避設定値の状態に戻します。
【調歩同期選択時の特記事項】
調歩同期に選択した場合は、(SCK)のピンファンクション指定は実施しません。
7.低消費電力モード状態の注意事項
低消費電力状態でブレークモード(モニタ実行)にさせますと低消費電力状態は解除されます。
8.ウォッチドッグタイマの注意事項
ブレークモード(モニタ実行)時は、ウォッチドッグタイマは停止します。
ユーザプログラム実行中に周期サンプリングしますとウォッチドッグタイマは停止します。
H-debuggerと送受信が確立した時点でウォッチドッグタイマを停止させていますので、タイムUP周期を10ms以上の設定にして下さい。
ウォッチドッグタイマUPによるリセットになりますと、UBC(PCブレーク)もリセットされますので再設定して下さい。
ウォッチドッグタイマ用内部レジスタをデバッガ操作で書き換えても無視します。
9.その他注意事項
SH-2の内部I/Oレジスタは、種類によって8,16,32ビットアクセス用とビット長により制限がついています。
メモリセットコマンド等で、内部I/Oレジスタアクセスする場合は、指定ビット長でアクセスして下さい。
指定外ビット長でアクセスしますと,間違った情報を得ることになります。
10.オンザフライ時のCPU停止時間の計測値
コマンド 停止時間 単位(msec)
CPU設定  割込みを使用しない 割込みを使用する
デバッグI/F クロック同期 クロック同期 調歩同期
割込み方式 受信割込み 受信割込み
割込みが使用できる条件 ワークエリア固定番地方式
ユーザ側が割込み許可状態
[PUTCH]を使用しない
ワークエリア固定番地方式
ユーザ側が割込み許可状態
[PUTCH]を使用しない
1バイトのメモリアクセス 1.50
1バイト増毎に+0.1ms
(MAX 128byte 13.3ms)
0.04
バイト数に影響されない
0.08
バイト数に影響されない
全レジスタ 20.0 0.04 0.08
個別レジスタ(ERレジスタ) 1.00 0.04 0.08
個別レジスタ(CCRレジスタ) 1.00 0.04 0.08
個別レジスタ(PCレジスタ) 1.00 0.04 0.08
1行の逆アセンブラ 1.50 0.04 0.08
DI,EI.IntFlg(割込み系) 5.00 5.00 6.00
ブレークポイントの設定 10.0 10.0 12.0
ブレークポイントの解除 10.0 10.0 12.0
停止時間の計測方法 [NMI]のLow巾 計測方法なし 計測方法なし
*SH7051 クロックが10.000(x2)MHz時の実測値
<オンザフライ機能使用時の注意事項 割込み方式が「受信割込み」の場合>
「受信割り込み」の場合、ターゲット実行中に約10ms毎にターゲットの状態を調べるため送受信によってモニタを起動させています。ターゲット側の実動作に影響を与える場合は、「割り込みを使用しない」側に設定して下さい。
低消費電力モードとウォッチドッグタイマアップの動作確認をする場合は、「割り込みを使用しない」の設定で確認して下さい。