takahito kagawa [email protected] april/ 8 / …...• c:/t32/t32.men, t32jp.men を...
TRANSCRIPT
2 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
4 / 59April/8/2019
本体モジュール• LA-3500 PowerDebug USB3
• LA-3505 PowerDebug PRO
デバッグプローブ• LA-2707 TriCore用デバッガ• LA-2708 MPC5XXX/SPC5XX用デバッガ• LA-2709 RH850用デバッガ• LA-7843 Cortex-A/R(ARMv7)用デバッガ• LA-3743 Cortex-A/R(ARMv8)用デバッガ
製品構成および準備する環境
5 / 59April/8/2019
製品構成および準備する環境
• ホストパソコンWindows 32bit/64bit, Linux 32bit/64bit, MacOS
• ターゲットボードとの接続コネクタ[Aurix] OCDS16pin (0.1インチピッチ) or
DAP10pin (ハーフピッチ)
[MPC5XXX/SPC5XX] OnCE 14pin (0.1インチピッチ)
[RH850] JTAG14pin (0.1インチピッチ)
[ARM] JTAG20pin (0.1インチピッチ) or
MIPI規格のコネクタ(ハーフピッチ)
6 / 59April/8/2019
製品構成および準備する環境
• スクリプト[ハードウェアごとのサンプル] ~~/demo/<arch>/hardware
[Flashプログラミング] ~~/demo/<arch>/flash
• マニュアルC:/T32/PDF/training_debugger.pdf
C:/T32/PDF/training_hll.pdf
C:/T32/PDF/tutor_setup.pdf
C:/T32/PDF/debugger_<arch>.pdf
C:/T32/PDF/rtos_orti.pdf
C:/T32/PDF/app_t32start.pdf
7 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
8 / 59April/8/2019
TRACE32 PowerView (デバッガGUI)
• 何れのホストPCでも共通のインタフェース
• 何れのターゲットCPUアーキテクチャでも共通のインタフェース
• 軽快な動作
• サードパーティツールとの連携
• リモートAPI
メニューバー
ツールバー
コマンドライン
メッセージライン
ソフトキーライン
9 / 59April/8/2019
TRACE32 PowerView (デバッガGUI)
• ファンクションキーにアクセラレータとして機能を割当て
• メニューバーのカスタマイズ
• C:/T32/t32.men, t32jp.men を元に形成
メニューバー
アクセラレータ
[Command] MENU.AddMenu "Set PC to main, ALT+F10" "Register.Set pc main"
10 / 59April/8/2019
TRACE32 PowerView (デバッガGUI)
• ツールバーのカスタマイズ
[Command] MENU.AddTool "Set PC to main" "PM,X" "Register.Set PC main"
メニューバー、ツールバーカスタマイズについての動画
http://www.lauterbach.com/tut_customization.html
11 / 59April/8/2019
TRACE32 PowerView (デバッガGUI)
• ウィンドウレイアウトの保存
• コマンドスクリプトファイルとして保存 →
• スクリプトファイルを実行し、ウィンドウを再現
↓
14 / 59April/8/2019
TRACE32 PowerView (デバッガGUI)
• ステータスライン
• アドレス
• シンボル
• デバッグ --- “stopped”, “running”, “stopped at breakpoint” 等々
“system down”, “power down”, “system ready” 等々
15 / 59April/8/2019
JTAGデバッグ通信の確立
• SYStem.Down
• デバッグ通信途絶
• SYStem.Mode Attach
• リセットを入れずにデバッグ接続
• SYStem.Mode StandBy
• ターゲット電源を検知したら自動的にデバッグ接続
• SYStem.Up
• ターゲットにリセットを入れた上、デバッグ接続
16 / 59April/8/2019
JTAGデバッグ通信の確立
• SYStem.MemAccess
• 実行中のメモリアクセス方法
• SYS.O IMASKASM/IMASKHLL
• ステップ実行中の割り込み禁止
• SYS.O DUALPORT
• 実行中のメモリへのRead/Write
• SYS.JtagClock / SYS.BdmClock
• JTAG通信の動作クロック
17 / 59April/8/2019
JTAGデバッグ通信の確立
• デバッグシナリオごとの例
• C:/T32/PDF/tutor_setup.pdf
• コアアーキテクチャごとのオプション
• C/:T32/PDF/debuger_xxxxx.pdf
20 / 59April/8/2019
メモリ参照
• [Command] Data.Dump
• 範囲指定
• 開始アドレス--最終アドレス
• 開始アドレス..最終アドレス
• 開始アドレス++オフセット(Byte)
21 / 59April/8/2019
メモリ内容の変更
• [Command] Data.Set
• 変更したいアドレスのメモリをダブルクリックすると、自動的に変更するためのコマンドが B::コマンドラインに現れる
[Command] Data.Set SD:0x551C %LE %Long 0x12345678
27 / 59April/8/2019
ブレークポイント
• コマンド:Break.Set
• ソフトウェアブレークポイント
• Read/Write可能なメモリ領域のプログラムコードに設定可
• 一度に設定できる数に上限なし
• オンチップブレークポイント
• FlashROM上およびアクセスブレークポイント設定時に使用
• 一度に設定できる数は、コアのデバッグリソースに依存
28 / 59April/8/2019
ブレークポイント
• コマンド:Break.List
• オンチップBPの場合 “ONCHIP”, ソフトウェアBPの場合 “SOFT”
• Break.Listで有効/無効を切り替え
• Data.Listウィンドウ上で命令行でダブルクリックで設定/消去
29 / 59April/8/2019
ブレークポイントの種類 (プログラムブレークポイント)
• 赤い細長いタグが目印
• 赤い細長いタグをダブルクリックするとブレークポイントを無効化(灰色に変わる)
• 設定しているアドレスラインをダブルクリックすると、ブレークポイントが消去される
30 / 59April/8/2019
ブレークポイントの種類 (Read/Write/ReadWrite)
• ソース表示上のグローバル変数を右クリックし、アクセスブレークポイントを設定
• 多くのコアでは、アクセスが発生した後に停止
[Command]
Break.Set repeatCnt /Read
Var.Break repeatCnt /Read
31 / 59April/8/2019
ブレークポイント (Advanced)
• 複雑なブレークポイントイベント
• 0x40001000 への WriteアクセスBP
• その時の値が 0xFF10A1Fx (最終バイトをマスク)
• カレントタスクが “TASKSND1”(要RTOSサポート)
• 変数 var1 が 0x1000
• コマンド自動実行 “data.save.binary …)
• 繰り返し(RESUMEオプション)
32 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
34 / 59April/8/2019
RTOSサポート機能
• AUTOSAR/OSEKサポート(設定項目)
• [Command] TASK.ORTI <orti file>
• .ort もしくは .ortiファイルを読み込み
• ターゲットプログラムのシンボル情報
40 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
42 / 59April/8/2019
Snooper (メモリログ)
• メモリデータロギング
• JTAG/DAP経由でメモリマップ上のメモリ内容を一定時間ごとに記録
• 最速で約50~60usec周期 (JTAGクロックに依存)
• 1点の最大ビット長は 8bit ~ 64bit
• 最大16点まで指定可能
• 変化があったときのみデータ採取可
43 / 59April/8/2019
Snooper (メモリログ)
• メモリデータロギング - 設定
Trace.METHOD SNOOPer
SNOOPer.SELECT 0x40000c80++0x3
; SNOOPer.SELECT Var.Range(msgAnum)
SNOOPer.Mode Fifo
SNOOPer.Mode Changes ON
SNOOPer.Rate 1.0us
SNOOPer.Init
SNOOPer.List
45 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
47 / 59April/8/2019
サンプリングベースパフォーマンス測定
• PERF機能
• 関数レベルでの相対的なプロファイリング
• プログラム実行中にプログラムカウンタをサンプリング
• プログラムカウンタスヌープ機能が実装されたデバイスで利用可能
• プログラムのリアルタイム実行性に影響なし
• タスクレベルでも利用可能(要OSサポート機能)
51 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
52 / 59April/8/2019
2点間時間測定
• JTAGデバッガソフトウェアによる2点間測定
• C:/T32/PDF/general_ref_r.pdf
• ベンチマークカウンタを使ったイベント発生回数解析
• C:/T32/PDF/app_rh850_bmc.pdf
• C:/T32/PDF/debugger_tricore.pdf
• C:/T32/PDF/debugger_mpc5500.pdf
53 / 59April/8/2019
2点間時間測定
• JTAGデバッガソフトウェアによる2点間測定
[Command] RunTime
• メリット&デメリット
• メリット:利用方法が簡単
• デメリット:ディレーを含む余地が多分にある
54 / 59April/8/2019
2点間時間測定
• JTAGデバッガソフトウェアによる2点間測定
[Command]
Runtime
RunTime.RESet
RunTime.refA ;カレントPCを点Aとする
Break.Set <address_B> ;2点目のアドレスにBP
Go ; 実行後、BPで停止
Runtime.refB ;2点目のアドレスを点Bとする
55 / 59April/8/2019
2点間時間測定
• ベンチマークカウンタ(B::BMC)を使ったイベント発生回数から解析
• CPUコアが提供するパフォーマンスカウンタを利用
• コアの種類によっては利用できないものもある(特にPowerArchitectureコア)
• メリット&デメリット
• メリット:JTAGデバッグ接続だけで正確な2点間時間測定が可能
• デメリット?:全てのコアで可能というわけではない
56 / 59April/8/2019
2点間時間測定
• ベンチマークカウンタ(B::BMC)を使った解析ーAurixの場合
CLOCK.ON
Break.Set sieve /Program /Alpha
Break.Set sYmbol.EXIT(sieve)-2 /Program /Beta
Break.Set sYmbol.EXIT(sieve)
BMC.ICNT ON
BMC.ICNT.ATOB ON
57 / 59April/8/2019
Agenda
• 製品構成および準備する環境
• 実行制御とメモリ参照
• RTOSサポート機能
• Snooper (メモリログ)
• サンプリングベースパフォーマンス測定
• 2点間時間測定
• マルチコアデバッグ
58 / 59April/8/2019
マルチコアデバッグ
• 1台のデバッグツールで2つ以上のコアを同時にデバッグ
• 複数の同じコアアーキテクチャを1つのデバッガGUIでデバッグ
• 複数の同じコアアーキテクチャを個別のデバッガGUIでデバッグ
• 異なるコアアーキテクチャを個別のデバッガGUIでデバッグ
• C:/T32/PDF/training_debugger_smp.pdf
Takahito Kagawa • [email protected] • Apr / 8 / 2019