適用先: ULINK USB-JTAG Debugger
この記事に含まれている情報の適用先:
- ULINK USB-JTAG Adapter
- ULINK2 USB-JTAG Adapter
質問
いくつかの定数を異なるメモリ領域(今回の場合は、外部 Flash)に移動しました。その後、デバッガが起動すると、memory mismatch が発生しています。 ただし、Flash プログラミング中(直前に実行していた処理)は、まったく問題がありません。この問題の原因は何でしょうか?
回答
初期設定では、デバッガの起動時に、CPU のリセットが発行され、メモリの内容が検証されます。Flash の一部が有効になっていない場合(一部の構成レジスタが設定されていない場合など)、Flash が適切にプログラミングされても、検証(ベリファイ)エラーが返されます。
次の 2 種類の解決方法があります。
- Project→Options→Debug→ULINK Settings でダウンロード オプション Verify Code Download を無効にします。プログラムが適切にロードされている場合は、この方法が適しています。
- ソフトウェアの初期化フェーズと同じ要領でデバイス レジスタを設定するデバッガ INI ファイルを用意します。このデバッガ INI ファイルは、Flash プログラミングで使用されるファイルと同じようなものです。ただし、Project→Options→Debug ダイアログで Load Application at Startup オプションを無効にして、デバイスの初期化後に LOAD コマンドを実行する必要があります。
以下に例を示します。
// A.20..23 を P2.4..7 に配置
// (プッシュプル出力を交換 + CS.0/1 P2.0..1 を有効化)
_WDWORD(0xE0005000, (_RDWORD(0xE0005000) | 0x00F3) ); // PC0
_WDWORD(0xE0005004, (_RDWORD(0xE0005004) | 0x00F3) ); // PC1
_WDWORD(0xE0005008, (_RDWORD(0xE0005008) | 0x00F3) ); // PC2
// 必要に応じて、他の設定で外部メモリを有効化する
// ...
LOAD file.ELF INCREMENTAL // アプリケーションをロード
g, main // main まで実行(オプション)
詳細
- Getting Started User's Guide、Flash Programming、Prepare Flash Programming
関連項目
- ARM での JTAG 通信エラーについて
- JTAG が無効な場合の STR71X の復旧について
- ARM: PROGRAM OFF-CHIP FLASH ROM ON STR71X