2.9.4
指定ルーチンを実行する【E1】【E20】【EZ Emulator】
プログラムの実行開始直前および停止直後にプログラムの指定ルーチンを実行することができます。
プログラムの実行や停止に同期してターゲット・システムの制御を行いたい場合に,任意ルーチンを設定します。
なお,実行中のプログラムの停止方法については,「2.10 プログラムの停止(ブレーク)」を参照してください。
ここでは,実行するルーチンを指定する方法について説明します。
指定ルーチンは,プロパティ パネルの[デバッグ・ツール設定]タブにおける[システム]【E1】【E20】【EZ Emulator】カテゴリ内のプロパティにて指定します。
なお,[実行開始前に指定ルーチンを実行する]または[ブレーク後に指定ルーチンを実行する]プロパティのいずれかで[はい]を選択すると,[指定ルーチン実行機能用ワークRAM開始アドレス]プロパティが表示されます。指定したワークRAMの配置アドレスから[指定ルーチン実行機能用ワークRAMサイズ[バイト]]プロパティの表示サイズ分を,指定ルーチン実行機能用ワークRAM領域としてデバッガのファームウェアが使用します。
指定ルーチン実行機能を使用する場合は,このワークRAM領域を指定してください。
注意 2. | 指定ルーチン内でスタックを使用する場合,割り込みスタックを使用してください。 |
注意 3. | 指定ルーチン処理の終了は,リターンサブルーチン命令(RTS)を記述してください。 |
注意 4. | 1回の指定ルーチンの処理時間は100ms以内に終了させてください。指定ルーチン内でクロック停止状態を継続させた場合,デバッグ・ツールの制御ができない可能性があります。 |
注意 5. | 指定ルーチン実行開始時のレジスタ値は不定です。そのため,指定ルーチン内でレジスタ値の初期設定をしてください。 |
注意 6. | 指定ルーチンの実行直前および停止直後は,デバッグ・ツールの制御で停止状態となります。なお,停止時間は次のようになります。 |
- | ユーザ・プログラム実行開始前の指定ルーチン実行後,約100サイクル(CPUクロック:100MHzの場合,約1μs)でユーザ・プログラムを実行します。 |
- | ユーザ・プログラム停止後から,約100サイクル(CPUクロック:100MHzの場合,約1μs)で指定ルーチンを実行します。
ただし,内蔵ROM無効拡張モード時は,ユーザ・プログラム停止後から,CPUクロック:100MHzにて約3ms,CPUクロック:32kHzにて約8msで指定ルーチンを実行します。また,ホットプラグイン接続した場合の,最初のユーザ・プログラム停止時も,同様です。 |
注意 7. | 指定ルーチンは開始時にスーパーバイザモードで実行しますので,ユーザモードに切り替えないでください。 |
注意 8. | 指定ルーチンを実行する場合,指定ルーチンのプログラム領域へのメモリアクセス/ダウンロード/ブレークポイント設定を行わないでください。 |
注意 10. | 指定ルーチンで使用する汎用レジスタおよびフラグについては,次の制限があります。 |
ISPレジスタ
|
指定ルーチン終了時に,指定ルーチン実行開始時の値に戻してください。
|
Uフラグ
|
指定ルーチンを実行中はユーザスタックポインタ(USP)の指定は禁止となります。
|
Iフラグ
|
指定ルーチンを実行中は割り込み禁止となります。
|
PMフラグ
|
指定ルーチンを実行中はユーザモードへの切り替え禁止となります。
|
注意 11. | 指定ルーチン実行時は,トレース/ブレーク/リアルタイムRAMモニタ/タイマ計測は無効となります。 |
注意 12. | 指定ルーチン実行時は,ノンマスカブル割り込みを常に禁止します。 |
注意 13. | 指定ルーチン実行後にプログラムを開始する場合,マイクロコントローラの状態は次のようになります。 |
汎用レジスタ
|
プログラム停止時の状態またはユーザがで設定したレジスタ値となります。指定ルーチン実行後のレジスタ内容は反映されません。
|
メモリ
|
指定ルーチン実行後のメモリアクセスが反映されます。
|
周辺機能
|
指定ルーチン実行後のマイクロコントローラ周辺機能動作が継続します。
|
注意 15. | ISPについて,指定ルーチン終了時に,ISP値を指定ルーチン実行開始時の値に戻してください。 |
注意 16. | 指定ルーチン実行機能を使用時は,端子リセットやウォッチドッグリセットをしないでください。 |
注意 17. | 指定ルーチン実行機能を使用時は,内蔵RAM領域を無効に設定しないでください。 |
注意 18. | 指定ルーチンを実行中は,Uフラグに“1(ユーザスタックポインタ(USP)を指定)”を設定しないでください。 |
注意 19. | 指定ルーチン実行中は,RTFI(高速割り込みからの復帰)命令を使用しないでください。 |
注意 20. | 指定ルーチン内で以下が発生しないようにしてください。
[ブレークポイント,ブレークイベント,トレース開始イベント/トレース終了イベント]
例えば,実行開始前に実行するルーチン内でブレークイベントが発生すると,プログラム実行開始直後にプログラムが停止します。また,指定ルーチン内でトレース開始イベントが発生すると,指定ルーチン実行中のトレースは取得されませんが,その後のプログラム実行開始からトレースが取得されることになり,期待するエミュレータ動作にならない場合があります。 |
注意 21. | 指定ルーチン実行機能にてStartファンクションからユーザプログラムへ移行しない場合,およびStopファンクションが停止しない場合は,“START/STOP時の指定ルーチン実行処理でタイムアウトエラーが発生しました。システムリセットを発行しました。”とエラーメッセージが表示され,エミュレータを初期化してユーザ・プログラムが停止します。システムリセット発行後は,トレース記録も初期化します。なお,デバッグを継続して行うことが可能です。 |