takahito kagawa [email protected] april/ 8 / …...• c:/t32/t32.men, t32jp.men を...

59
実行制御に関する基本操作および機能 Takahito Kagawa [email protected] April/ 8 / 2019

Upload: others

Post on 05-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

実行制御に関する基本操作および機能

Takahito Kagawa • [email protected] • April/ 8 / 2019

2 / 59April/8/2019

Agenda

• 製品構成および準備する環境

• 実行制御とメモリ参照

• RTOSサポート機能

• Snooper (メモリログ)

• サンプリングベースパフォーマンス測定

• 2点間時間測定

• マルチコアデバッグ

3 / 59April/8/2019

製品構成および準備する環境

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)

• ウィンドウレイアウトの保存

• コマンドスクリプトファイルとして保存 →

• スクリプトファイルを実行し、ウィンドウを再現

12 / 59April/8/2019

TRACE32 PowerView (デバッガGUI)

• コマンドライン

• B::コマンドプロンプト

• コマンドの構成

13 / 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

18 / 59April/8/2019

実行制御

• [Command]

Go. Break. Step.

19 / 59April/8/2019

メモリ参照

• [Command] Data.Dump

20 / 59April/8/2019

メモリ参照

• [Command] Data.Dump

• 範囲指定

• 開始アドレス--最終アドレス

• 開始アドレス..最終アドレス

• 開始アドレス++オフセット(Byte)

21 / 59April/8/2019

メモリ内容の変更

• [Command] Data.Set

• 変更したいアドレスのメモリをダブルクリックすると、自動的に変更するためのコマンドが B::コマンドラインに現れる

[Command] Data.Set SD:0x551C %LE %Long 0x12345678

22 / 59April/8/2019

実行中のメモリアクセス(Read/Write)

• プログラム実行させながらメモリマップ上のメモリをRead/Write

23 / 59April/8/2019

変更があった箇所を色付け

• “/SpotLight”オプションを付加

[Command] Data.Dump flags /SpotLight /Byte

24 / 59April/8/2019

アセンブラ/HLLリスト表示

• プログラムカウンタ付近のアセンブラリスト/HLLを表示

[Command] Data.List

List

25 / 59April/8/2019

アセンブラ/HLLリスト表示

• シンボルブラウザから関数指定で表示

[Command] Data.List

List

26 / 59April/8/2019

アセンブラ/HLLリスト表示

• シンボルブラウザから関数指定で表示

[Command] List main

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点間時間測定

• マルチコアデバッグ

33 / 59April/8/2019

RTOSサポート機能

• AUTOSAR/OSEKサポート

• C:/T32/PDF/rtos_orti.pdf

34 / 59April/8/2019

RTOSサポート機能

• AUTOSAR/OSEKサポート(設定項目)

• [Command] TASK.ORTI <orti file>

• .ort もしくは .ortiファイルを読み込み

• ターゲットプログラムのシンボル情報

35 / 59April/8/2019

RTOSサポート機能

• AUTOSAR/OSEKサポート

• タスクリスト

• スタックメモリリスト

• カウンタリスト

• アプリリスト

• …

36 / 59April/8/2019

RTOSサポート機能

• AUTOSAR/OSEKサポート

• タスク関連ブレークポイント

37 / 59April/8/2019

RTOSサポート機能

• サンプリングベースプロファイリング

• 各タスクの相対的な実行率を測定

• フックルーチン不要

38 / 59April/8/2019

RTOSサポート機能

• トレースベースの実行時間測定(タスク)

• トレース結果のタイムスタンプから各タスクの実行時間測定

• フックルーチン不要

39 / 59April/8/2019

RTOSサポート機能

• トレースベースの実行時間測定(ISR)

• トレース結果のタイムスタンプから各タスクの実行時間測定

• フックルーチン不要

40 / 59April/8/2019

Agenda

• 製品構成および準備する環境

• 実行制御とメモリ参照

• RTOSサポート機能

• Snooper (メモリログ)

• サンプリングベースパフォーマンス測定

• 2点間時間測定

• マルチコアデバッグ

41 / 59April/8/2019

Snooper (メモリログ)

• メモリデータロギング

• C:/T32/PDF/app_snooper.pdf

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

44 / 59April/8/2019

Snooper (メモリログ)

• メモリデータロギング - リストと描画

[Command] SNOOPer.List

SNOOPer.Draw

45 / 59April/8/2019

Agenda

• 製品構成および準備する環境

• 実行制御とメモリ参照

• RTOSサポート機能

• Snooper (メモリログ)

• サンプリングベースパフォーマンス測定

• 2点間時間測定

• マルチコアデバッグ

46 / 59April/8/2019

サンプリングベースパフォーマンス測定

• PERF機能

• C:/T32/PDF/general_ref_p.pdf

47 / 59April/8/2019

サンプリングベースパフォーマンス測定

• PERF機能

• 関数レベルでの相対的なプロファイリング

• プログラム実行中にプログラムカウンタをサンプリング

• プログラムカウンタスヌープ機能が実装されたデバイスで利用可能

• プログラムのリアルタイム実行性に影響なし

• タスクレベルでも利用可能(要OSサポート機能)

48 / 59April/8/2019

サンプリングベースパフォーマンス測定

• PERF機能

• 関数レベルで表示

49 / 59April/8/2019

サンプリングベースパフォーマンス測定

• PERF機能 (関数レベル解析の詳細)

50 / 59April/8/2019

サンプリングベースパフォーマンス測定

• PERF機能

• タスクレベルで表示

• RTOSサポートの設定を事前に実施

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