ewarmを用いたcortex-m...本ドキュメントについて 2 目的...

37
September 2016 IAR Systems K.K. FAE Team EWARMを用いたCortex-M デバッグテクニック

Upload: others

Post on 04-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

September 2016

IAR Systems K.K.

FAE Team

EWARMを用いたCortex-M

デバッグテクニック

Page 2: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

本ドキュメントについて

2

目的

Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理解し、ARM用統合開発環境、ARM用IAR Embedded Workbench(EWARM)を用いて、効率的なデバッグテクニックを習得する。

内容

ARM Cortex-MのCoreSight

Cortex-Mの基本的なデバッグ機能

Cortex-M3/4、M7のSWOトレース機能

Cortex-M3/4、M7のETMトレース機能

※コネクタ詳細は、「STM32デバッグのためのICE・コネクタガイド」を参照

※本ドキュメントは、2015年4月現在のIARシステムズWebサイト、ST社Webサイト、およびEWARMバージョン7.40.2を元に作成しています。

Page 3: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

168 Employees with HQ in Uppsala, Sweden

Listed in Stockholm/Nasdaq

R&D investment 32% of revenue

32 years in the industry

Uppsala

Munich

Sao Paulo

Tokyo

Seoul

Shanghai

London

Paris

San Francisco

Dallas

Boston

Los Angeles

+Distributor representation in

43 countries

24 hour technical support in

13 languages

0

5

10

15

20

0

5

10

15

20

2010 2011 2012 2013License # Operating Margin

Licenses

# (000’s) Operating

Margin %

2010 - 2013

Stability and growth

IAR SYSTEMS— A LEADING GLOBAL VENDOR

Page 4: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

ARM Cortex-MのCoreSight

Page 5: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-MのCoreSightテクノロジ

Cortex-Mマイコンには、様々なデバッグ機能とインタフェースが搭載

5

DWT

FPB

ITM

ETM

DAP 4 watchpoints

PC sampler

ETM trigger

interrupt trace

CPU statistics

6 breakpoints

software trace

32 channels

time stamping

instruction trace

live

core access

JTAG

SWD/SWO

trace port

Page 6: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-MのCoreSightテクノロジ

名称 接続 ICE 基本機能 特徴

JTAG

I-jet I-jet Trace ST-LINK

○ ・ディジーチェーン可能 ・(低速)printfデバッグ

SWD

I-jet I-jet Trace ST-LINK

○ ・必要PIN数:最小(2本) ・(低速)printfデバッグ ・SWVトレースが可能 Cortex-MではSWDが主流

TMS TCK TDO TDI

nRESET

SWDIO SWDCLK SWO - nRESET

TMS TCK TDO TDI

nRESET

SWDIO SWDCLK SWO - nRESET

デバッグ 制御

名称 接続 ICE 方式 特徴

SWV

I-jet I-jet Trace ST-LINK

サンプリング ・パソコンにリアルタイム転送 ・(高速)prinfデバッグ ・ピン数:1 ・データ欠落可能性→大 ・様々なデータ出力

ETM

I-jet Trace

分岐トレース (実行)

・ICEのメモリに保存→ブレーク時にパソコンに転送 ・対応しているかはCPU依存 ・データ欠落可能性→小 ※データ線の本数に依存する

TMS TCK TDO TDI

nRESET

SWDIO SWDCLK SWO - nRESET

CLK D0 D1 D2 D3

トレース 機能

1,2,4本 から選択

M0,M3/4,M7

M0,M3/4,M7

M3/4,M7

M3/4,M7

(注意点)実装により機能が外されることがあります。

Cortex-Mのデバッグピンは、デバッグ制御用とトレース用がある

6

Page 7: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

JTAG/SWD接続で実現する基本デバッグ

Page 8: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

JTAG/SWD接続で実現する基本デバッグ

8

CoreSightテクノロジを活用し、様々なデバッグが実現可能

• 実行制御 • 停止 • 実行 • ステップ実行

• ブレークポイント

• コードブレークポイント • データブレークポイント • ベクタキャッチ

• 表示

• 変数 • メモリ • レジスタ

接続方式はソフト的に切り替え可能

Page 9: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:実行制御

9

デバッグ画面のアイコンあるいは、メニュー、ショートカットで制御

実行

ステップアウト

ステップイン

ステップオーバ

ブレーク

リセット

次のステートメント

カーソルまで実行

デバッグの終了

Page 10: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:ブレークポイント

10

ブレークポイントはコアにより、対応する数が異なる。

ハードウェア ブレークポイント

ソフトウェア ブレークポイント

データ ブレーク

Cortex-M0/M0+ 4 ∞ 2

Cortex-M3/M4 6 ∞ 4

Cortex-M7 8 ∞ 4

Flashメモリに対しコードブレークを設定

RAMメモリに対し コードブレークを設定

静的変数のアドレスアクセスに対し、ブレークを設定

クリックで設置 もう一度クリックで解除

Page 11: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:ブレークポイント

11

データブレークポイントで、データ異常を検知

静的変数を右クリックし、データブレークポイントを 設定。

変数へのアクセスでブレーク

表示>ブレークポイントで 右クリック>編集 リード、ライトアクセス指定可能

Page 12: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:ブレークポイント

12

ICEによっては、ベクタテーブルにブレークポイントを設置できる

リセットイベント発生

Page 13: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

新機能:フラッシュブレークポイント

13

EWARM7.60から、フラッシュメモリに配置するブレークポイントを 無制限に拡張する機能が追加 ※I-jetのみ

該当行で右クリックして、 ブレークポイントの切り替え(Flash)

リリースノートの デバイスサポートで対応を確認

Page 14: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:表示機能

14

基本的な変数ウォッチ以外にも多くの表示機能を使用可能

ウィンドウ 更新タイミング 観測対象の選択

観測可能なもの

オート C-SPY停止時 自動 実行近くの文や式にある変数や式

ローカル C-SPY停止時 自動 現在の関数のローカル変数および引数

静的 C-SPY停止時 自動 静的変数 ただし、volatile変数は除く

ウォッチ C-SPY停止時 人手 C-SPY式や変数値をモニタ可能。配列/構造体/共用体は展開可能。

シンボル C-SPY停止時 自動 静的な位置情報を持つ変数、関数などすべて表示

メモリ C-SPY停止時or 今すぐ更新orライブ更新

自動 メモリ上の値

スタック C-SPY停止時 自動 スタック

レジスタ C-SPY停止時 自動 CPUレジスタ/周辺レジスタ

クイック 再評価ボタンor 式の入力

人手 C-SPYマクロ、関数、C-SPY式や変数や式などを評価可能。

ライブ 実行時(サンプリング*1)

人手 特定のアドレスに配置された変数(ローカル変数のようにスタック上の変数は観測不可)

Page 15: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:表示機能

15

ライブウォッチやメモリは、実行を停めずに更新可能

ツール>オプション デバッガ から更新間隔を設定 ※デフォルト 1000m秒

変数値を実行しながら観測可能

メモリ画面でも ライブ機能が利用可能

Page 16: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

基本デバッグ:表示機能

16

レジスタからサイクルカウンタの確認可能 →ニ点間処理速度計測

CYCLECOUNTER 64bitの起動からのサイクル数 ※書き込み可能 CCTIMER1 / CCTIMER2 CYCLECOUNTERのソフト拡張 任意に書き込み可能 CCSTEP 前回表示(ブレーク)時からの 経過サイクル数。

表示>レジスタ>CPUレジスタ

2,742,812,247 + 126 = 2,742,812,373

前回CYCLECOUNTER CCSTEP 現在CYCLECOUNTER

Page 17: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-M3/4、M7のSWOトレース機能

Page 18: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

SWD+SWOを使用して、トレース実現

18

SWD経由で機能を有効にすることで、SWOから様々なデータを取得可能 ※M3/M4,M7のみ対応

• SWOトレース

• 割込みログ

• データログ

• イベントログ • 高速printf

JTAG接続では、SWOピンを他の用途で使用するため、SWOは使えない

Page 19: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

SWOトレース

19

定期的にプログラムカウンタを取得し、簡易トレース実現

[ICE] > SWOトレース

数百から数千サイクルに一度プログラムカウンタを取得 ※CPUオーバヘッドなし

サイクルカウンタ

実行アドレス

実行命令

Page 20: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

割込みログ

20

各種割込みの、開始、終了を自動的にログ収集

発生時間 割込み名 In / Out

[ICE] > 割込みログ

終了するまでの 処理時間

※CPUオーバヘッドなし

Page 21: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

データログ

21

指定した静的変数(M3/M4は最大4つ)へのアクセスログを生成

発生時間 実行アドレス データの値 変数のアドレス

[ICE] > データログ

表示 > ブレークポイントから 右クリック>編集 で設定可能

※CPUオーバヘッドなし

Page 22: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

イベントログ (1/2)

22

専用コードを記述することで、コードの実行履歴を取得可能

arm_itm.hをインクルード

一つ目の引数:チャンネル(1-4) 二つ目の引数:任意の値(変数も可)

20-40サイクル程度のCPUオーバヘッド

Page 23: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

イベントログ (2/2)

23

専用コードを記述することで、コードの実行履歴を取得可能

発生時間 実行アドレス データの値

チャンネル1のデータの値

チャンネル2のデータの値

Page 24: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

高速printf (1/2)

24

SWOのITMポート0を使って、printf出力可能

stdio.hをinclude

stdoutをSWO経由に指定

インタフェースはSWD固定になる

※printf自体のオーバヘッドは大きい

Page 25: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

高速printf (2/2)

25

SWOのITMポート0を使って、printf出力可能

表示>ターミナルI/Oを開いて実行

stdoutをセミホスティング経由に指定するとJTAG/SWDでprintf出力

JTAGも選択可能

Page 26: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-M3/4のETMトレース機能

Page 27: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-M3/4のETMトレース機能

27

JTAG/SWDとは別に、専用TRACEポートから実行履歴データを取得 ※取得データを元に解析・表示

• ETMトレース

• 関数トレース

• 関数プロファイラ

• コードカバレッジ

MCUからの出力

ETMトレース設定

Page 28: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

Cortex-M3/4のETMトレース機能

28

ETMトレース対応ICE(I-jet Traceなど)の内蔵メモリに トレースデータを蓄積し、デバッグ停止時にPCに転送

ICE内蔵メモリに トレースデータを蓄積

トレースデータ

Page 29: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

ETMトレース

29

実行の開始から停止までのトレースデータを取得

アドレス 命令 命令モード (Thumb固定)

有効化

Page 30: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

関数トレース

30

ETMトレースの結果を、関数In/Outで解析表示

関数の開始 アドレス

関数の実行 命令モード (Thumb固定)

有効化

Page 31: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

関数プロファイラ

31

関数ごとの呼び出し回数および、コードの実行時間を表示

関数名

関数の呼び出し回数

関数自体の 実行時間

全トレース データ内の割合

全トレース データ内の割合

関数から呼ぶ内部関数も含めた実行時間

有効化

Page 32: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

コードカバレッジ

32

アプリケーション内の各関数のコード実行率を表示

赤:0%実行

緑:100%実行

クリックで展開

有効化

Page 33: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

まとめ

Page 34: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

まとめ

34

Cortex-Mベースのデバイスには、強力なデバッグモジュールが搭載されている。

CPU停止時の表示系には、解析につながる様々なウィンドウが用意されている。

SWOトレースを応用することで、リアルタイム系の解析が可能となる。

クリティカルなトラブルや、統計にはETMトレースが有効な解決手段となる。

Page 35: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

本資料について

Page 36: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

本資料取り扱い上の注意

36

本資料は2015年4月1日時点の情報を基に作成されており、将来変更の可能性 のあるものです。あわせてご紹介する設定や機能に関連して、動作保証をお約束するものではございませんので、ご了承ください 本資料で提供している情報は、ご利用されている方のご判断・責任においてご使用ください。提供した情報に関連して、ご利用される方が不利益等を被る事態が生じたとしても、弊社及び執筆者は一切の責任を負いかねますので、ご了承ください。 本資料の内容に関する弊社または各社へのお問合せはご遠慮ください。 本資料及びデータの再配布・無断転用・転載等はご遠慮ください。

Page 37: EWARMを用いたCortex-M...本ドキュメントについて 2 目的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM用統合開発環境、ARM用IAR

商標について

37

• IAR Systems, IAR Embedded Workbench, C-SPY, C-RUN, C-STAT, visualSTATE, Focus on Your Code, IAR KickStart Kit, I-jet, I-scope, IAR, および IAR Systems のロゴタイプはIAR Systems ABが所有する商標または登録商標です。

• ARMおよびCortexは、ARM Limited(またはその子会社)のEUまたはその他の国における登録商標です。CoreSightは、ARM Limited(またはその子会社)のEUまたはその他の国における商標です。 All rights reserved.

• STM32は、STマイクロエレクトロニクスの登録商標です。

• その他、本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標または登録商標です。