I-jet設定ガイド
Rev.1.8
1. I-jetでデバッグするまでのステップ 2. 接続できない(MCUと通信できない)ときの確認 3. ダウンロードできないときの確認 4. 正常にデバッグできないときの確認 5. SWOトレースできないときの確認 6. [メモリ構成]の設定方法 7. EmuDiagの使い方 8. 良くあるエラーメッセージと対処方法 9. 参考資料
目次
I-jetでデバッグするまでのステップ
3
I-jetでデバッグするまでのステップ
USB接続 MCUと通信 ダウンロード(ROM) デバッグ開始 ダウンロード(RAM) メモリ構成設定*必要に応じ、初回のみ
5
デバッグログ例
ロードされたマクロファイル: C:¥Program Files (x86)¥IAR Systems¥ARM¥6502¥arm¥config¥flashloader¥ST¥FlashSTM32F10xxx.mac I-jet/JTAGjetドライバをロードしています
Probe: Probe SW module ver 1.08
Probe: Opened connection to I-jet:72072
Probe: USB connection verified (3980 packets/sec) Probe: I-jet FW ver 2, HW rev A
Probe: IJET-ARM20 adapter detected Emulation layer version 3.12 Emulation layer status 0x0 CPU status - NO POWER JTAG clock detected: 12MHz
Connecting Cortex-M core ID = 0x14770011 on DAP port 0
Debug resources: 6 instruction comparators, 4 data watchpoints. CPU status OK
LowLevelReset(script, delay 200)
Calling reset script: C:¥Program Files (x86)¥IAR Systems¥ARM¥6502¥arm¥config¥debugger¥ST¥STM32.ProbeScript@ConnectUnderReset Connecting Cortex-M core ID = 0x14770011 on DAP port 0
Debug resources: 6 instruction comparators, 4 data watchpoints. -I- execUserFlashInit!
ロードされたデバッギー: C:¥Program Files (x86)¥IAR Systems¥ARM¥6502¥arm¥config¥flashloader¥ST¥FlashSTM32F10xxxRAM16K.out ターゲットリセット
フラッシュメモリへのD:¥arm¥examples¥ST¥STM32F10x¥IAR-STM32-SK¥GettingStarted¥Flash Debug¥Exe¥GettingStarted.outのダウンロード ロードされたマクロファイル: C:¥Program Files (x86)¥IAR Systems¥ARM¥6502¥arm¥config¥debugger¥ST¥Trace_STM32F1xx.dmac
ロードされたデバッギー: D:¥arm¥examples¥ST¥STM32F10x¥IAR-STM32-SK¥GettingStarted¥Flash Debug¥Exe¥GettingStarted.out LowLevelReset(software, delay 200)
LowLevelReset(script, delay 200)
Calling reset script: C:¥Program Files (x86)¥IAR Systems¥ARM¥6502¥arm¥config¥debugger¥ST¥STM32.ProbeScript@ConnectUnderReset Connecting Cortex-M core ID = 0x14770011 on DAP port 0
Debug resources: 6 instruction comparators, 4 data watchpoints. SWO: CPU clock = 72000kHz, Auto divider = 4
ダウンロードが完了し、検証に成功しました。 LowLevelReset(software, delay 200)
SWO: CPU clock = 72000kHz, Auto divider = 4 ターゲットリセット USB接続 MCU接続 ダウンロード (ROM) デバッグ ※上記は一例であり、ターゲットMCUやプロジェクトによりログの中身は変動します
接続できない(MCUと通信できない)ときの確認
1.
USBデバイスとしてPCに認識されていますか?
2.
USBデバイスとして正常に動作していますか?
3.
回路・接続は正しいですか?
4.
書き込まれているプログラムでJTAGポートを別用途に使用していませんか?
5.
コネクタ・ケーブルに接触不良等はありませんか?
6.
ICEはI-jetが選択されていますか?
7.
電源供給は正しく行われていますか?
8.
接続速度は適正ですか?
9.
I-jetのインジケータがエラーになっていませんか?
7接続できない(MCUと通信できない)ときの確認
• USBデバイスとしてPCに認識されていますか?
– Windows OSのデバイスマネージャから確認
接続できない(MCUと通信できない)ときの確認
• USBデバイスとして正常に動作していますか?
– EWARM付属のEmuDiagアプリケーションより確認
• ⇒Part 7を参照
9
接続できない(MCUと通信できない)ときの確認
• 回路・接続は正しいですか?
デバッグ接続をご確認ください JTAG/SWD接続接続できない(MCUと通信できない)ときの確認
JTAG/SWD - MIPI-20 JTAG/SWD - MIPI-10MIPI-20 - ARM-20 JTAG アダプタ回路図
各ピンの説明など、詳細は「IAR I-jet プローブガイド」をご参照ください。
• 回路・接続は正しいですか?
– Vtref(電源監視)は必須です。
– GNDは全てのpin接続してください。
•
GNDが少ないために不安定となるケースが多くあります。
11接続できない(MCUと通信できない)ときの確認
必須 オプション JTAG接続 SWD接続• 回路・接続は正しいですか?
– JTAG/SWDインタフェースはプロジェクトオプションで選択します。
•
書き込まれているプログラムでJTAGポートを別用途に使用していませんか?
– Flashメモリに、JTAG端子をGPIOあるいはその他のポートに
切り替えるコードが入っていると、I-jetからデバッグ接続を行うことが
できません。
– ベンダ提供のFlash書き込みツールなどで、Flash消去を行なって
ください。
13接続できない(MCUと通信できない)ときの確認
• コネクタ・ケーブルに接触不良等はありませんか?
– ケーブル・コネクタに破損はありませんか?
– 抜き差しの際にゆるんでいませんか?
– ケーブルの向きはあっていますか?
• 電源を確認ください
– ボードにあった給電は行われていますか? • ICEから給電 or 外部電源 – ICEから給電の場合、I-jetは正しく設定されていますか? 15接続できない(MCUと通信できない)ときの確認
• ICEはI-jetが選択されていますか?
– デバッガのオプション画面で、ドライバに
[I-jet]が選択されていますか?
• 接続速度は適正ですか?
– 接続速度を手動で遅くしたら動作しますか?
※JTAG接続の適切速度は、回路設計、距離、コネクタ仕様などに
より異なります。
遅くすることで、より安定動作します。
17接続できない(MCUと通信できない)ときの確認
I-jetのインジケータがエラーになっていませんか?
接続できない(MCUと通信できない)ときの確認
• ダウンロードできないときの確認
19
1. メモリマッピングはMCUと合っていますか?
2. ダウンロード設定は適切ですか?
3. リセットの方式は適切ですか?
4. セットアップマクロは適切ですか?
5. RAM上にはダウンロードできますか?
6. 接続速度は適切ですか?
ダウンロードできないときの確認
• メモリマッピングはMCUと合っていますか?
– ダウンロード領域でない領域にデータが配置されていませんか?
⇒リンカ設定ファイルおよびmapファイルを確認
21
• ダウンロード設定は適切ですか?
– 「フラッシュローダを使用する」にチェックが入っていますか?
•
ROM領域にダウンロードする際には、専用のフラッシュローダが
必要です。
• リセットの方式は適切ですか?
– 適切なリセット方式はCPU種類、デバッグの方式などにより異なります。
デフォルトで動作確認されていますが、他方式が適切なケースがあります。
23ダウンロードできないときの確認
Disabled(no reset): Software: Hardware: Core: Systems (default) : リセットを行いません。 PC (プログラムカウンタ)をプログラム開始アドレスに設定します(ソフトウェアリセット)。JTAG コネクタの nRESET 端子をトグルしてリセットします。リセットタイミングは Duration・Delay after オプションにて設定可能です。
VECTRESET ビットを経由してコアをリセットします。ペリフェラルは影響を受けません。Cortex-M デバイスのみ使用可能です。
• セットアップマクロは適切ですか?
– 起動時に特別な処理が必要な場合、C-SPYマクロを呼びだす必要が
あります。
※外部メモリアクセス用のレジスタ設定、ベクタテーブルオフセットの設定
など
ダウンロードできないときの確認
• RAM上にはダウンロードできますか?
– 状況切り分けのために、RAM上で動作するプログラムを作成し、ダウンロー
ドできるか確認することが有効です。
※RAM上へのダウンロードはフラッシュローダを必要としないので、
フラッシュローダの問題かそれ以外の問題が切り分けができます。
25ダウンロードできないときの確認
• 接続速度は適切ですか?
• 基本的な接続ができていても、ダウンロードするためには接続速度の
見直しが必要となることがあります。
• デバッグできないときの確認
27
1. リセットの方式は適切ですか?
2. セットアップマクロは適切ですか?
3. リセットハンドラからの動作は確認できますか?
• リセットの方式は適切ですか?
– デバッグの方法により、適切なリセット方式を選択する必要が
あるケースがあります。
⇒異なるリセット方式を試行してください。
29デバッグできないときの確認
Disabled(no reset): Software: Hardware: Core: Systems (default) : リセットを行いません。 PC をプログラム開始アドレスに設定します(ソフトウェアリセット)。JTAG コネクタの nRESET 端子をトグルしてリセットします。リセットタイミングは Duration・Delay after オプションにて設定可能です。
VECTRESET ビットを経由してコアをリセットします。ペリフェラルは影響を受けません。Cortex-M デバイスのみ使用可能です。
• セットアップマクロは適切ですか?
– デバッグの方式によっては、C-SPYマクロでデバッグ初期化を
行う必要があるケースがあります。
※ベクタテーブルのオフセット、ETMトレース用レジスタの設定など
⇒[デバッグ]→[設定]→[セットアップマクロ]の指定マクロを見直してください。
デバッグできないときの確認
• リセットハンドラからの動作は確認できますか?
– main関数にたどり着くまでに何らかの問題が発生している可能性が
あります。
⇒[デバッグ]→[設定]→[main to]のチェックを外してください。
31デバッグできないときの確認
• SWOトレースできないときの確認
1. SWD接続が選ばれていますか?
2. SWOピンの接続は適切ですか?
3. プロトコル設定は適切ですか?
4. トレース機能は正しく設定されていますか?
5. データ量は適切ですか?
33SWOトレースできないときの確認
• SWD接続が選ばれていますか?
• SWO
トレースを行うにはデバッグインタフェースとしてJTAG接続ではなく
SWD接続を使用する必要があります。
⇒[デバッグ]→[I-jet]→[JTAG/SWD]で[SWD]を選択してください。
• SWOピンの接続は適切ですか?
– コネクタのSWOピンとMCUが結線されているか確認してください。
35
• プロトコル設定は適切ですか?
– SWOトレースプロトコルは、速度設定が必要です。
自動が動作しないときはマンチェスタまたはUART方式を指定してください。
UARTを選択したときは[CPUクロック]に実際のデバッグ中のCPU速度を
指定してください。
※SWOプリスケーラは値を大きくするほど安定します。
SWOトレースできないときの確認
• トレース機能は正しく設定されていますか?
– 各種トレース機能が正しく設定されている必要があります。
・トレース機能ウィンドウを開いたあと「有効化」されていますか?
⇒[ヘルプ]→[デバッグガイド]のトレース関連項目を参照ください。
37SWOトレースできないときの確認
• データ量は適切ですか?
– データ量が多すぎるとオーバーフローが発生します。 • 複数機能を有効にするとデータ量が多くなります。 ⇒正常に動作するデータ量から、安定動作するデータ量を設定 してください。 ⇒[ヘルプ]→[デバッグガイド]のトレース関連項目を参照ください。SWOトレースできないときの確認
• [メモリ構成]の設定
39
• [メモリ構成]の目的
– メモリ領域を適切に指定することで、不要あるいは意図せぬメモリ
アクセスを防止し、効果的なデバッグを実現します。
• 設定ファイルの連携
– プロジェクトで指定したデバイス記述ファイルに適切なメモリ構成情報が
含まれている場合、その情報が引き渡されます。
41
• デフォルト設定とプロジェクト毎のカスタマイズ
[メモリ構成]の設定
デバイス毎のデフォルト設定
プロジェクト毎のカスタマイズ設定
43
[メモリ構成]の設定
キャッシュタイプの説明
キャッシュタイプ • RAM • ターゲット実行時でないとき(ブレーク時)は メモリからのリードは1度だけ行われます。 また、ブレーク時のメモリへの書き込みは C-SPY内でキャッシュされ、実行再開時に まとめフラッシュされます。 • ROM/フラッシュ • ダウンロード時にメモリをC-SPY内にキャッシュ され、デバッグセッション中は読み書きが発生 しません。 • デバッグセッション中に不揮発データ領域など として変更が生じる場合は、該当領域をRAMの 領域として指定しないと、変更が画面に 反映されません。 • Uncached/SFR • キャッシュは行わず、デバッグセッション中の 読み書きは都度メモリアクセスが発生します。[メモリ構成]の設定
ゾーンの説明
• Memory • デフォルトの指定となり、通常は問題あ りません。 • Memory8/16/32/64 • I/Oレジスタなどの要件により、 8,16,32,64ビット としてのアクセスが必要となる場合は、 適宜 指定をしてください。45
[メモリ構成]の設定
手動指定
デバイス定義ファイルで、十分なメモリ構成情報がない状態でデバッグを開始すると 下記のダイアログが表示されます。 [新規][編集]ボタンをクリックし、デバイスに合わせて 適切に指定してください。 ※キャッシュ指定によるメモリアクセス効率化を 考慮しない場合、暫定的にメモリ全領域をSFR領域と 指定することでデバッグ動作可能です。 ※カスタム作成した設定は、プロジェクトの settings¥project.dniファイルに保存されます。• EmuDiagの使い方
• EmuDiagの主な機能
1. USBデバイスとしての診断
2. FWのアップデート
3. ターゲット電圧の確認
4. JTAGスキャンチェーンの確認
5. MCUとの接続確認
6. 適正接続速度の確認
47EmuDiagの使い方
※詳細はProgram Files¥IAR Systems¥Embedded Workbench 6.x¥arm¥bin¥jet emudiag.pdfを参照
• EmuDiagの起動
– EWARMインストール先にあるarm¥bin¥jetフォルダを開き、
– EmuDiag.exeを起動
EmuDiagの使い方
診断するエミュレータ(I-jet)を選択してください。
• メイン画面
49EmuDiagの使い方
診断したい項目に応じてボタンをクリックします。 FWのアップデート USB接続の確認 デバッグ接続の確認 ターゲット電圧の確認• USB接続の確認
• ターゲット電圧の確認
51
EmuDiagの使い方
ターゲットボードに電源を供給した状態で
• MCUとの接続確認(SWD接続)
EmuDiagの使い方
1:ARM-SWD 20/10pinを選択
3:JTAG Clockを10kHzに設定
2:Use SWD CoreSight Portにチェック
• MCUとの接続確認(JTAG接続)
53EmuDiagの使い方
CPU情報を取得できたら、JTAG Clockを上げて最適値を確認。 1:JTAG Headerを設定 2:JTAG Clockを25kHzに設定 3:Autodetectを実行• よくあるエラーメッセージと対処方法
55
致命的なエラー:プローブがありません
PCからI-jetが認識されていません。 ・デバイスドライバがインストールされているか? ・PCとI-jetがUSBで接続されているか? 確認してください。致命的なエラー:プローブへの接続に失敗しました
使用しようとしたI-jetが有効ではありません。
・他のアプリケーション(EWARMまたはEmuDiag)で既に使用されていないか 確認してください。
57
Warning: I-jet FW is outdated
現在使用しているI-jetのFWより新しいFWがEWARMに同梱されています。 Emudiagを使用して、FWのアップデートすることを推奨します。
ターゲットシステムのメモリレイアウトに一致しません。
I-jetのメモリ構成設定と、ビルドされたプログラムの設定(ROM/RAM/SFR)が適合しません。 I-jetメニューの[メモリ構成]を開き、実体と合わせて調整してください。
59
RAMに指定されたメモリにC変数が配置されていません
リンカによって配置された変数が、RAM以外の領域に配置されています。
意図した配置(暫定的に全領域SFR指定にした、など)ではない場合、[メモリ構成]から 修正してください。
CPUステータス
– 電源なし
VTRefがターゲットマイコンの電圧を検出できていません。 ・電源が供給されているか
61
CPUステータスの読み込みに失敗しました
電源の供給はされていますが、JTAG通信ができていません。 ・リセットの方式が適切か? ・信号線が適切に接続されているか? ・JTAG/SWD設定は正しいか? 最小接続なのにJTAG接続が選択されていないか? 確認してください。フラッシュローダプログラムでエラーが報告されました。
起動初期の基本的な接続、通信はできていますが、フラッシュローダの実行時にエラーが発生しています。 ・リセット方式が適切か ・setupマクロが必要でないか ・使用しているフラッシュローダが実際に使用するボード構成と合致しているか 確認してください ※フラッシュローダの詳細は63
CPUへの接続に失敗しました
デバッガがCPUと接続しようとした際にCPUの応答がない場合にエラーが発生します。 ・ハードウェア的に信号線は正しく接続できているか EmuDiagでCPUが認識できるか? ・ユーザプログラムによって、デバッグ用のポートをGPIO等にアサイン設定していないか ・低消費電力モード等デバッグモジュールが無効となる設定となっていないか ・クロックが停止する等の設定になっていないか ・リセット方式が適切か ・setupマクロが必要でないか• 参考資料
•
デバッグガイド
•
[ヘルプ]→[Embedded Workbenchデバッグガイド]
•
デバッグ全般、C-SPYマクロ、トレース設定、メモリ構成など
•
I-jetユーザガイド
•
[ヘルプ]→[I-jet User Guide]
•
I-jetハードウェア仕様など
•
EmuDiagマニュアル
•
[EWARM]→[arm]→[bin]→[jet]→[EmuDiag.pdf]
•
EmuDiagアプリケーションの使用方法
•
C/C++開発ガイド
•
[ヘルプ]→[C/C++ 開発ガイド]
•
リンカ設定方法など
65参考資料
• 本資料で解決しない場合は・・・
[email protected]に下記情報をご提供ください 1. どの段階で問題となっているか 1. 下記チェックリストをダウンロードし、確認結果を記載ください。 http://www.iar.com/Global/KK_pages/UserGuide/I-jet_check_list_JPN.xlsx 2. 問題の発生確率(100%? たまに?) 3. EWARMのバージョン 4. MCU情報/基板情報 5. ログ情報3点(次ページ参照) 6. エラーの場合、スクリーンショット 7. プロジェクト一式 ※無理な場合は*.ewpファイル、*ewdファイルとSettings¥**.dniファイル 8. 保守契約番号もしくはライセンス番号 ※有効な保守契約が無い場合にはご回答できません。 67
本資料で解決しない場合は・・・
• ログ情報
本資料で解決しない場合は・・・
a. デバッグログ
b. 通信ログ
• ログ情報
69本資料で解決しない場合は・・・
c. フラッシュローダログ
.ewpファイルと同じディレクトリに空の[flash0.trace]ファイルを作成してください。 次回デバッグセッション開始時にログが追記されます。• 保守契約番号もしくはライセンス番号
保守契約時に発行される番号
• もしくは、ライセンス番号
Embedded Workbenchから[ヘルプ]-[ライセンスマネージャ]
IAR License Manager上でクリック(表示はライセンスのタイプによって異なります)、 ライセンスの詳細画面にライセンス番号は表示されます
本資料で解決しない場合は・・・
71