Cortex-Mコア対応エミュレータデバッグ制御インターフェースとトレース機能

Similar documents
CSIDE Version6への移行について

, 0 ピンコネクタ (JTAG 接続 ) ピン配列コネクタ型番 SAMTEC 製 SHF-1-01-L-D-TH 表 0 ピンコネクタ (JTAG 接続 ) ピン配列 コネクタピン番号 CPU 信号名 備考 1 VTRef IO 電源 TMS 3 GND 4 TCLK 5 GND 6 TDO 7

ARM関連 JTAG/SWD/SWV/ETM ターゲット・インターフェース技術資料

本ドキュメントについて 的 STM32(Cortex-M) マイコンには 性能なデバッグモジュール (CoreSight) が搭載されています 従来の printf デバッグとは 較にならないほど 効率の いデバッグを実現するための JTAG ICE(In Circuit Emulator) と 基

PowerPoint Presentation

JTAGプローブ技術資料SH編 Rev.16

2 取り扱い上の注意 本書では製品を安全にお使いいただくための項目を次のように記載しています 特定しない一般的な注意 警告を示します 感電のおそれがあることを示します 発煙または発火のおそれがあることを示します 本製品を安全にお使いいただくために次の注意事項をお守りください 煙や異臭 異音がしたら使

JTAGプローブ技術資料 RX編Rev.7

オンボード・フラッシュ・プログラマ FP-10技術資料

ターゲット項目の設定について

adviceシリーズスタートアップガイド(Cortex-M3編)

adviceシリーズスタートアップガイド(ARM9編)

Notes and Points for TMPR454 Flash memory

IAR Embedded Workbench for ARM

TRQerS - Introduction

CM-3G 周辺モジュール拡張技術文書 INA226センサ(電流、電圧、電力)

JTAG バウンダリスキャンテストの容易化設計を支援する OrCAD Capture の無償プラグイン 21 July 2017 ( 富士設備 / 浅野義雄 )

目次 1. 概要 動作環境

CodeRecorderでカバレッジ

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

AKI-PIC16F877A開発キット (Ver1

KEIm-25ヘッダーボードハードウェアマニュアル

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

KEIm-08SoMハードウェアマニュアル

UCB User's Manual

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

Microsoft Word - Cubesuite+_78K0R.doc

計算機アーキテクチャ

QuartusII SOPC_Builderで利用できるGPIF-AVALONブリッジとは?

著作権および商標 この文書には が所有権を持つ機密事項が含まれます この資料のいかなる部分も許 可無く複製 使用 公開することを固く禁じます 本書は の従業員および許可された 取引先だけに使用が認められています 本書で提供されたデータは正確で信頼性の高いものですが このデータの使用について株式会社

バーコードハンディターミナル BT-1000 シリーズセットアップガイド ( 第 1 版 ) CE ***

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

PowerPoint プレゼンテーション

CSIDEチュートリアルブック

1 PARTNER-Jet2 用 TRACE ユニット TypeA [ 型番 JET2H-TR38A] ARM 向けマニュアル この度は JTAG 専用デバッガ PARTNER-Jet2 をお買い上げ頂きまして誠に有難うございます PARTNER は 効率的なターゲット システムのデバッグ環境を提供

変更履歴 項番版数内容更新日 版新規作成 2013 年 11 月 18 日 1

現行のICカードリーダRW4040インストーラの課題

PIC の書き込み解説 PICライターを使うときに間違った使い方を見受ける 書き込み失敗の原因は知識不足にある やってはいけないことをしている 単に失敗だけならまだしも部品を壊してしまう 正しい知識を身に着けよう 書き込みに必要なピンと意味 ICSPを意識した回路設計の必要性 ICSP:In Cir

ヤマハDante機器と他社AES67機器の接続ガイド

I-jet-1-J

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

PowerPoint Presentation

ワイヤレスセンサモジュール取扱説明書

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

商品番号 : UTS-422 USB-RS422( シリアル ) 変換ケーブル (USB1.1 規格対応 ) 概要 UTS-422 は RS-422 インターフェースを持つ外部周辺機器をパソコンの USB ポートを介してコントロールするための USB-RS422 変換ケーブルです 最大 3Mbps

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

内容 1. APX-3302 の特長 APX-3312 から APX-3302 へ変更するためには 差分詳細 ハードウェア ハードウェア性能および仕様 ソフトウェア仕様および制限 Ini ファイルの設

EB-RL7023+SB/D2

注意 本製品は FCC Class A 装置です 一般家庭でご使用になると 電波干渉を起こすことがあります その際には ユーザーご自身で適切な処置を行ってください 本製品は FCC( 米国連邦通信委員会 ) 規則の Part15 に準拠したデジタル装置 Class A の制限事項を満たして設計され

PowerPoint プレゼンテーション

Quartus Prime はじめてガイド - デバイス・プログラミングの方法

LANカード(PG-2871) 取扱説明書

CCD リニアイメージセンサ用駆動回路 C CCD リニアイメージセンサ (S11155/S ) 用 C は 当社製 CCDリニアイメージセンサ S11155/S 用に開発された駆動回路です S11155/S11156-

ComputerArchitecture.ppt

4 本体の入力を USB-B 端子に対応する入力に切り換える 下記の画面表示になります 手順 8 の画面になるまでしばらくお待ちください 5 解凍したフォルダー内にある "Setup.exe" をダブルクリックして実行する InstallShield ウィザードが表示されます xxxxxxxxxx.

仮想化基礎演習テキスト Ⅰ 第 1.0 版 演習で学ぶ仮想化基礎 ( クライアント仮想化編 ) 九州ラーニングネット株式会社 特定非営利活動法人パソコン整備士協会

4 本体の入力を USB-B 端子に対応する入力に切り換える 下記の画面表示になります 手順 8 の画面になるまでしばらくお待ちください 5 解凍したフォルダー内にある "Setup.exe" をダブルクリックして実行する InstallShield ウィザードが表示されます xxxxxxxxxx.

:30 18:00 9:30 12:00 13:00 17:00

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

Taro-82ADAカ.jtd

この取扱説明書について USB DAC 端子に USB ケーブルでコンピューターを接続すると コンピューターからの音声信号を再生できます この機能を使って PCM を再生する場合 ドライバーソフトウェアをコンピューターにインストールする必要はありません ただし この機能を使って DSD 音源をネイテ

第 7.0 版 利用履歴管理 ETCPRO5 セットアップマニュアル (Ver5.002) カードリーダモデル変更 ( 表示付き 表示なし ) に伴い 改訂 Windows10 対応に伴い 改訂 参考ホームページサイト :

USBドライバインストールマニュアル [Windows Vista/Windows 7]

Microsoft Word - XPC4ソフトマニュアル.doc

おことわり 本書の内容の一部又は全部を無断転載することは禁止されています 本機の外観及び仕様は改良のため 将来予告無しに変更することがあります 本書の内容について万一不審な点や誤りなどのお気付きの点がありましたらご連絡ください 本書に記載されている会社名 商品名などは 一般に各社の商標又は登録商標で

IBIS

目次 1 はじめに 登録商標 商標 注意事項 免債事項 SR-IOV の機能概要 性能検証事例 測定環境 測定結果 各方式による共有 NIC 性能比較 ( ポートあ

Microsoft Word - r0703.doc

Touch Panel Settings Tool

PLD-XC2S-A

ColorNavigator 7使い方ガイド(ColorNavigator 6アップグレード編)

App Note Template

GTR Board

Microsoft Word - Cubesuite+_V850_AM.doc

タッチパネルの概要

PRONETA

PowerPoint プレゼンテーション

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

開発環境構築ガイド

NGN IPv6 ISP接続<トンネル方式>用 アダプタガイドライン概要

目次 1. はじめに ご注意 アイコン表記について NET Framework3.5(3.0/2.0) のインストールについて ネットワークに接続せずにインストールする方法 高速スタートアップの無効化について...

Warp demo station manual

Singapore Contec Pte Ltd. Opening Ceremony

TF Series with Tio1608-D System Setup Guide

PowerPoint Presentation

アルテラ USB-Blastre ドライバのインストール方法 for Windows OS

Jan/25/2019 errata_c17m11_10 S1C17 マニュアル正誤表 項目 リセット保持時間 対象マニュアル発行 No. 項目ページ S1C17M10 テクニカルマニュアル システムリセットコントローラ (SRC) 特性 19-3 S1C17M20/M

Nios II マイコン活用ガイド Nios II マイコンボード紹介 ステップ 1 AuCE C3 製品紹介 AuCE C3 は ソフトコア プロセッサ Nios II( アルテラ社 ) を搭載可能なマイコンボードです 弊社の基本ソフトウェアをインストールし FPGA 開発者のデザインと Nios

Microsoft PowerPoint - RL78G1E_スタータキットデモ手順_2012_1119修正版.pptx

STM32F405VG 搭載 CPU 基板の仕様 V /10/14 STMicroelectronics 社製の Cortex-M4 ARM CPU STM32F405VGT6 を搭載した CPU 基板です 目次 1. 概要 CPU 基板のブロック図 C

標準画面 手動操作 サンプル画面説明書

ムービートランス 2 使い方マニュアル目次 1 はじめに 2 ムービートランス 2 のインストール方法 3 ムービートランス 2 を最新版にアップデートする方法 4 動画変換機能の使い方 5 動画結合機能の使い方 6 設定の変更方法 7 サポートページのご案内 8 テクニカルサポートへのお問い合わせ

WindowsXPインストール

Microsoft PowerPoint - kougi7.ppt

RS-422/485 ボード取扱説明書 RS-422/485 ボード取扱説明書 Revision 0.3 コアスタッフ株式会社技術部エンジニアリング課 Copyright 2009 Core Staff Co.,Ltd. All Rights Reserved - 1 of 17

SEIWA Bluetooth 適合表 B.xlsx

開発環境構築ガイド

Arduinoで計る,測る,量る

【実験6】 各種USB-シリアル変換ケーブルで動作する通信速度の調査

Transcription:

2013 年 3 月第 2 版 Copyright (C)2010 CS0015(B)1303

TU 第......6......6... Cortex-M コア対応エミュレータデバッグ制御インターフェースとトレース機能 目次 1 章はじめに UT...3 TU1.1 はじめにUT...3 TU1.2 Cortex-Mコアのデバッグ機能 UT...3T TU 第 2 章デバッグ制御インターフェースUT...4 TU2.1 JTAGエミュレータUT...4 TU2.2 デバッグ制御インターフェースUT TU2.2.1 JTAGUT...6 TU2.2.2 SWD (Serial Wire Debug )UT TU2.2.3 CSIDEでの設定方法 UT...7 TU2.3 どちらの方式を選べばよいのか?UT...7T TU 第 3 章トレース機能 UT...8 TU3.1 /とは?UT...8 TU3.2 との違いUT...8 TU3.2.1 トレース内容の違いUT...8 TU3.2.2 接続端子数 UT... 10 TU3.2.3 リアルタイム性 UT... 10 TU3.2.4 トレースの取得条件 UT... 10 TU3.2.5 タイムスタンプの正確性 UT 10 TU3.2.6 トレースデータの欠落 UT 11 TU3.2.7 まとめUT... 12 TU3.3 デバッグ制御インターフェースとトレース機能の組合せUT... 12 TU3.4 /を使用したCSIDEの機能 UT 13 2

第 1 章はじめに 1.1 はじめに Cortex-M コアのデバッグ環境を揃えられる際に JTAG SWD という言葉がキーワードとしてでてきます 本書では デバッグ制御インターフェース (JTAG SWD) やトレース機能 ( ) について解説を行い これらの機能を使用するには どのモデルをどのように使用すればよいのかについても解説します 本書の内容をご覧いただき JTAG エミュレータ本体モデルとターゲットインターフェースをご選択ください 1.2 Cortex-M コアのデバッグ機能 Cortex-M コアのデバッグ機能には様々な機能がありますが その機能はプログラムのダウンロードや実行 / ブレークといった CPU の制御を行なうデバッグ制御とプログラムの実行履歴を出力するトレース機能に 大きく分けられます 前者の CPU のデバッグ制御を行なう機能としては CPU が持つデバッグ制御インターフェースの JTAG と SWD があります これらを通じて ICE 本体から Cortex-M コアを制御することで各種デバッグ機能を実現しています 後者のトレース機能は と という機能です トレース機能は デバッグ制御部分に付加される形となり デバッグ制御インターフェースの端子に加えて トレース端子を接続することで使用可能となります これらのデバッグ制御 トレース機能を それぞれに分けて機能の解説を行っていきます 3

第 2 章デバッグ制御インターフェース 本章では プログラムのダウンロードや実行 / ブレークの制御など デバッガの制御を行なうためのデバッグ制御インターフェースについて説明を行ないます 2.1 JTAG エミュレータ 現在の Cortex-M コアに対応するデバッガは JTAG エミュレータが主流となっています JTAG エミュレータは CPU が搭載しているデバッグ機能を JTAG インターフェースを使用して ICE から制御を行なう方式のデバッガで 実際にターゲットシステム上に製品チップを実装してデバッグを行なうため 製品に近い状態でデバッグを行なうことができることが特徴で インターフェース名から JTAG エミュレータと呼ばれます この JTAG エミュレータで使用する Cortex-M コアの持つデバッグ機能が JTAG SWD なのです JTAG エミュレータの構成 JTAG エミュレータのモデル Cortex-M コアに対応する JTAG エミュレータには 基本となる JTAG モデルと JTAG モデルにトレース機能を追加した モデル ( トレースモデル ) の 2 種類のモデルがあります JTAG モデル JTAG モデルは デバッガの基本機能を実現する JTAG/SWD を搭載したモデルになります ターゲットボードとの接続は 20 ピン もしくは 10 ピンで行ないます デバッグ制御インターフェースは JTAG 接続 SWD 接続に対応 トレース機能は に対応します 4

モデル ( トレースモデル ) モデルは JTAG/SWD に加えて トレース機能である を追加したモデルです Cortex M コアの CPU の場合 ターゲットボードとの接続は 20 ピン接続です ( 変換アダプタを使用しての接続となります ) デバッグ制御インターフェースには JTAG 接続 SWD 接続に対応 トレース機能は に対応します モデルは JTAG 機能にトレース機能が付加されたフルスペック機能のモデルです それぞれのモデルの対応機能は 以下の通りです デバッグ制御インターフェース トレース機能 JTAG SWD ( ) JTAG モデル モデル は SWD 接続の場合にのみ使用可能 この表からもわかる通り モデルの違いは 純粋に トレース機能の有無です ですので どちらのモデルを使用すればよいかは トレースを必要とされるかどうかになります なお モデルを使用されていて 評価ボード等で 20 ピンの JTAG コネクタしか実装されていない場合には オプションの変換アダプタを使用することで JTAG モデルとして使用することが可能です 5

2.2 デバッグ制御インターフェース JTAG エミュレータは CPU が内蔵するデバッグ機能を デバッグ制御インターフェースを通して制御する事によって デバッガの各機能を実現しています この CPU と JTAG エミュレータを繋ぐデバッグ制御インターフェースが JTAG であり また Cortex 世代から新たに実装された SWD です この 2 種類のデバッグ制御インターフェースがありますが どのような違いがあって どちらを選択すればよいのかという疑問があるかと思います ここでは それぞれのインターフェースについての解説します なお JTAG エミュレータでは デバッグ機能自体をそれぞれの CPU が持っているため 全ての CPU で同一の機能が提供されるのではなく 使用する CPU によって機能や仕様が若干異なります 2.2.1 JTAG JTAG とは バウンダリスキャンテスト等の基板検査を行うための標準規格 IEEE1149.1 の通称名です 規格を定めた業界団体 Joint European Test Action Group の名称の略から JTAG と呼ばれています JTAG は 集積回路のピン間隔が狭くなったり BGA などの表面実装が普及してきたりなど物理的にプローブを当てての検査が困難となってきたため デバイス同士をデイジーチェーン接続にして 接続されたデバイスの状態を読み出す方式 ( バウンダリスキャンテスト ) として規格化されました そして この仕組をデバッガ制御に応用したエミュレータを総称して JTAG エミュレータ (JTAG ICE) と言います 元々の成り立ちが基板検査であるため ARM コア CPU に限らず様々なアーキテクチャの CPU にて採用されている方式です CPU の制御には 基本的に TDI/TDO/TCK/TMS/TRST の 5 本の JTAG 信号線を使用して行ないます 2.2.2 SWD (Serial Wire Debug ) SWD は ARM の Cortex 世代から採用された総合的なデバッグソリューションである CoreSight オンチップ デバッグ / トレース テクノロジーにて新たに採用された デバッガの制御を双方向データ信号 (SWDIO) とクロック (SWCLK) の 2 本で行なう事を可能になった ARM 独自の新インターフェースです JTAG に対して SWD を使用することでのメリットとデメリットを以下に示します メリット 端子数の減少 JTAG では 5 本の信号を使用して行っていた CPU のデバッグ制御を SWD では 2 本の信号で行なうことが可能となります 端子数の制限が厳しい中 デバッグ時に JTAG エミュレータが占有する端子が少ないということは 今までデバッガに使用していた端子もユーザ側で使用できるようになり 大きなメリットとなります コネクタの実装面積の減少デバッガを接続するための端子数が減るため ターゲットボードとの接続が JTAG の 20 ピンでの接続の所が 10 ピンでも接続が可能となり コネクタの実装面積が少なくすむこともメリットになります の使用後述する トレースは JTAG 接続との組合せで使用することができません SWD 接続の場合にのみ トレースを使用することができます デメリット SWD は デバッグ専用ポートですので JTAG 本来の機能である検査ポートとしては使用できません JTAG 接続 SWD 接続 TCK TMS TDO TDI TRST SWCLK (TCK) SWDIO (TMS) SWO (TDO) 空 (TDI) 空 (TRST) I C E 本体側 I C E 本体側 6

SWD と JTAG は ハードウェアから見れば制御方式が異なるためインターフェース部分が異なりますが デバッガのソフトウェア上から見た場合 それぞれの接続方式によって デバッガ上で使用できる機能の違いは全くなく インターフェースの違いを認識される所はありません また 信号数が減って データ通信がシリアル通信となることで通信速度の低下の影響を懸念されるかもしれませんが 実際には CPU との通信以外の制御部分が処理の大半を占めるため デバッガの動作速度の低下を体感することは ほとんどなくお使い頂けます なお SWD と JTAG は 兼用端子として機能を兼用している CPU の場合 JTAG 信号をインターフェースとして設計されているターゲットであれば SWD 接続に切り替えて使用することも可能です この場合 ハードウェア上にスイッチ等を設けていただく必要はなく CSIDE 上の設定を変更するだけで 起動処理中に機能を切り替えて起動させることも可能です それぞれの端子が別れている CPU どちら一方の機能しか実装されていない CPU もありますので ご使用になる前に CPU の仕様をご確認ください 2.2.3 CSIDE での設定方法 CSIDE は 初期設定では JTAG 接続で起動するようになっています SWD 接続でデバッガを起動させる場合には 以下の設定にチェックを入れます ターゲットシステムの設定ダイアログ [ 初期値の設定 ]-[SWD/]-[ シリアル ワイヤ デバッグ モードを使用する ] この設定にチェックを入れるだけで SWD 方式での動作となります 2.3 どちらの方式を選べばよいのか? SWD JTAG というデバッグ制御インターフェースは 制御方法が JTAG 信号を使用するのか SWD 信号を使用するのかの違いがあるだけで CSIDE 上で実現できる機能や動作速度に違いはないため どちらの方式を採用されても遜色ありません デバッガ専用インターフェースとしては 占有する端子数が少なく かつ JTAG に対してのデメリットが SWD 接続にはありませんので 使用する CPU が SWD インターフェースを搭載している場合には 今後は SWD インターフェースを採用されることをお薦めします ただ バウンダリスキャンの検査ポートとしての使用できませんので 検査ポートとしての JTAG が必要となるのであれば 1 つのコネクタで兼用できる JTAG をご使用ください 7

第 3 章トレース機能 Cortex-M コアには 実行したプログラムの実行状況を解析する方法として というトレース機能が実装されています 本章では このトレース機能について解説していきます 3.1 / とは? Cortex-M コアには 実行したプログラムの履歴を確認する方法として というトレース機能があります まずは これらの機能の特徴を説明します ( Embedded Trace Macrocell ) とは CPU コア内部の実行命令の情報を専用のトレース バスを介して外部にトレース情報として出力させるためのユニットです 実行するユーザプログラムに影響を与えることなく プログラムの実行履歴やデータアクセスの情報などを取得することができます CPU の単なる実行 / ブレークの繰り返しでは発見出来できない システムがフルスピードで可動した際にハードウェアとソフトウェアの微妙なタイミングで起こるような不具合を調査する場合など リアルタイム性が要求される組み込み開発環境において 正確な実行履歴を知ることができる非常に有用な機能です ただ は半導体メーカーごとのオプション機能であるため ユニットを搭載することで 出力用端子が必要となること CPU 単価が上がること に対応した ICE が必要となることなどから 全ての CPU に搭載されていません ( Serial Wire Viewer ) は SWD と共に Cortex コア世代からの CoreSight オンチップ デバッグ / トレース テクノロジーにて採用されたトレース技術で も プログラムに影響を及ぼすことなく 実行中の CPU コアにアクセスして トレース情報を出力させます は に比べ 必要となる端子が少なく のように対応モデルの ICE も必要としないため 低コストで様々な CPU の情報を得ることの出来る機能です 特に ピン制限が厳しい少ピンタイプの CPU やチップ単価に敏感な CPU では を搭載されることが難しいため このような分野では特に有効となるデバッグ機能です 3.2 と の違い 共に 実行中のプログラムに影響を及ぼすことなく トレース情報を出力するものですが 出力されるデータの特性に違いがあり 使用用途が異なります 本項では の違いについて解説を行ないます 3.2.1 トレース内容の違い と は どちらも実行されたプログラムがどこを実行していたのか 履歴を知ることができますが そのトレース内容には違いがあります トレースは 実行されたプログラム中の分岐命令の情報がトレースデータとして出力され その分岐情報を元に デバッガが分岐間に実行された内容を補完して 実行履歴として表示を行ないます 分岐時の分岐元アドレスと分岐先アドレスが出力されますので プログラムが実行された経路を正確に把握することができます また プログラム中でのデータアクセスの履歴も合わせて出力されるため データアクセスの状況も把握することが出来ます 8

トレースのイメージとしては 下図のようにプログラムが分岐する際の矢印の地点で どこからどこへ分岐するかの情報が出力されるため プログラムの動きを正確に知ることができます トレースイメージ : プログラムカウンタの遷移 : 情報の出力点 関数 A 関数 B 関数 C プログラムが分岐するタイミングの情報が に出力されます トレースは 指定したサンプリング サイクル間隔で指定したデータを取得 ( サンプリング ) する機能です 例えば でプログラムの実行の履歴を見る場合 プログラムカウンタの値を出力するように設定することで 設定したサンプリング サイクル数ごとにその時点のプログラムカウンタの値がトレースとして出力されます は 下のイメージ図のように プログラムの動きに関係なく一定間隔でサンプリングして情報が出力されます トレースイメージ 1 : プログラムカウンタの遷移 : サンプリングタイミング 関数 A 関数 B 関数 C この機能は 実行中の CPU の状態を定期的にサンプリングする機能になるため サンプリングとサンプリングの間にプログラムがどこを実行しているのかわかりません このためサンプリング間隔の間に 終了してしまう処理では トレース上に情報が出力されないということになります トレースイメージ 2 : プログラムカウンタの遷移 : サンプリングタイミング 関数 A 関数 B 関数 C サンプリング間隔の間に 処理が呼ばれて終了しているため トレース上に情報が出力されない この場合 サンプリング間隔を短くして補うということが考えられますが サンプリング間隔を短くすることで取得するトレースデータが増加するため トレースデータの転送が追いつかず 後述するトレースデータの欠落が頻繁に発生してしまい補うことはできません ただ はプログラムカウンタ以外にも 例外情報やデータアクセスの情報を出力させることも出来るため 様々なデータのサンプリングトレースとして使用することができます 9

3.2.2 接続端子数 トレースを取得するには デバッグ制御インターフェースに加えて 用のクロック端子とデータ端子の接続が必要となります データ端子の本数は ARM コアごとに対応する出力ビット数が異なります また 端子が他の機能と兼用となっていることが多く ユーザターゲットにて のデータ端子として使用できるかを予め確認しておく必要があります Cortex-M コアの場合 は 1 ビット 2 ビット 4 ビットでの出力に対応しています 最低限 クロック端子 1 本とデータ端子 1 本を接続すれば トレースを取得することが出来ます 接続するデータ端子の本数によって ARM コアから出力される情報が変わるということはありませんので 1 本でも取得は行なえます ただし 接続本数が少ない場合 デバッガへのデータ転送のラインが少ないため 転送が間に合わずにデータがオーバーフローしてしまい データが欠落する可能性が高くなります 多くのデータ端子を接続していただくことで データが欠落することを防ぐ事ができますので を使用される場合には できるだけ多くのデータ端子を接続してのご使用をお薦めいたします は 1 本の端子で取得することが可能です SWD インターフェースの端子と合わせて 合計 3 ピンで デバッグ制御 トレースの各機能を使用できるようになり ユーザターゲットの端子を多数占有することなく様々な機能を使用することができます 3.2.3 リアルタイム性 トレースは プログラム実行中に ARM コアから出力される 情報を ICE 内のトレースメモリ上に貯めて プログラムのブレーク時に表示が行われます 実行中にリアルタイムにトレース内容を確認することはできません 一度に取得出来るトレース容量は ICE 本体に搭載されているトレースメモリ容量分となります トレースは 実行中のプログラムに影響を与えることなく リアルタイムに取得 表示を行なうことができます また トレースは 実行中にリアルタイムにデータを ICE ホスト PC へ送って表示を行なうため のように取得できる容量に限りはありません ( ただし ホスト PC の性能によってデータの欠落が発生する可能性があります ) 3.2.4 トレースの取得条件 Cortex-M コアの の仕様はアドレストレースのみとなっており データトレースを取得することはできません 指定した番地が実行されたらトレースの取得を開始することはできますが 特定範囲内にデータアクセスがあった場合にトレースを取得するという条件を指定することはできません においてトレース条件を指定する場合 データアクセスが条件となります このため特定の番地が実行されたらトレースを取得することは特定のアドレスにアクセスがあった場合にトレースを取得するという形での条件設定となります 3.2.5 タイムスタンプの正確性 では CPU から出力される情報の中に タイムスタンプは含まれていないため ICE 側で 情報を取得したタイミングでタイムスタンプを付加して表示を行っています このためトレースの開始点から終了点までのトータルの時間については 正確な値となりますが 表示される各命令のタイムスタンプには誤差が含まれるため注意が必要です 10

の情報の中に情報を取得した際のタイムスタンプを付加することができるため トレース上に表示されるタイムスタンプは 実際に CPU から出力された正確な値になっています このため データアクセスの検出の間隔を計測される場合などには 非常に有効な手段となります 3.2.6 トレースデータの欠落 は共に トレースデータの出力時にデータの欠落が発生することがあります ターゲット上の CPU の動作速度に対して CPU と ICE ICE とホスト PC の通信速度は相対的に遅いため トレースデータが集中して出力される状況となると ICE 側へのデータ転送が間に合わなくなり トレースデータの欠落が発生します は プログラムの実行中に を通じてトレース情報が出力され ICE 内のトレースメモリにデータを転送しています は に比べて転送速度が速く また 最大 4bit のデータ端子を使用してデータ転送を行なえるため と比較するとデータの欠落は発生しにくいのですが 間接分岐を繰り返されるなどして出力する トレースの情報量が集中した場合には トレースメモリへのデータ転送が間に合わなくなり トレースデータの欠落が発生します ( 間接分岐は 分岐先アドレスの情報も に出力されるため これを多重に繰り返すことで情報量が増えます ) また 接続されている のデータ端子が少ない場合 時間当りの転送量が減るため ボトルネックとなりデータの欠落が発生しやすくなります このため データ端子は できるだけ多くの端子を接続されることをお薦めいたします ARM CPU データ端子の接続数が少ない場合 ボトルネックとなります ARM Core ICE TPIU トレースメモリ は CPU から ICE 本体へのトレースデータの転送を リアルタイムに 1 本の信号線のシリアル通信で行い また 通信速度も遅いため トレースと比較してデータの欠落が発生しやすくなります また ではトレースデータの ICE からホスト PC へのデータ転送もリアルタイムに行なうため ホスト PC の性能が低い場合には こちらもボトルネックとなり データの欠落が発生する要因になります ただ は 出力させるトレースデータの内容の選択やサンプリング間隔を設定することができます もし を使用して頻繁にトレースデータの欠落が発生する場合には 一度に複数の情報を出力させないようにしたり トリガー条件を指定し必要な情報だけを取得するようにしたり データ取得のサンプリング間隔を空けるようにしたりなど 出力されるデータ量が減少するよう工夫して使用することで データの欠落をある程度避ける事が出来ます ARM CPU データ量が多い場合 ボトルネックとなります ARM Core ICE DWT ITM TPIU バッファ ホスト PC が低スペックの場合 ボトルネックとなります 11

3.2.7 まとめ これまでの と のそれぞれの違いをまとめると以下の表となります 1トレース 実行履歴 サンプリング 2 接続端子数 JTAG or SWD 接続に加えて +2 ピン or3 ピン or5 ピンで取得可能 SWD 接続に加えて +1ピンで取得可能 3 表示 ブレーク時のみ表示可能 リアルタイムに表示可能 4トレース取得条件 アドレス条件 データアクセス 5タイムスタンプ 若干の誤差が含まれる CPU の正確な値が取得可能 6トレースデータの欠落 少ない 多い 7その他機能 - 例外トレース printf 機能など これまでの説明の中で と というは どちらも Cortex-M コアのトレースソリューションなのでプログラムの実行履歴を示すものではありますが デバッグ時の使用目的が全く異なる機能であることをご理解いただけたのではないかと思います は プログラム実行履歴を正確に確認することができるため 実行履歴からプログラムの不具合箇所を特定する用途に適していますし は 実行中のプログラムがおおよそ正常に動作しているかをリアルタイムに確認したり 例外の発生間隔やデータアクセスの発生間隔などプログラムの測定等の用途に適しています これらの機能の特性をご理解いただき 用途に応じて使い分け 効率よくデバッグを行っていただければと思います 3.3 デバッグ制御インターフェースとトレース機能の組合せ CSIDE にて デバッグ制御インターフェースとトレース機能の使用可能な組合せを以下に示します JTAG + + JTAG + + JTAG + + SWD + + SWD + + SWD + + ( 但し と は切り替えての使用になります 同時に使用出来ません ) 12

3.4 / を使用した CSIDE の機能 / を使用することで CSDIE 上で以下のデバッグ機能を使用することが可能となります CPU トレース機能取得した トレースを表示します 関数の遷移図と逆アセンブルコードが表示されます 遷移状況を確認しつつ 下の逆アセンブル表示にして 問題点を調べることが出来ます トレース CPU から出力されたトレース情報を履歴として確認することができるウィンドウです 条件指定により プログラムカウンタのサンプリング 周辺レジスタなど特定のデータの観察 CPU のアクセスデータ 例外情報など様々な情報を得ることが出来ます 13

例外トレース トレースを使用して得た例外の遷移状態や発生状況等の情報を 専用のウィンドウで確認することができます また タイムスタンプの取得設定を行なうことで 例外の処理時間を表示させることも出来ます プロファイラプログラムカウンタのサンプリング情報を元に モジュールごとの実行比率をグラフ表示します 使用頻度の高い関数 時間占有率の高い関数を調査するのに便利な機能です Printf デバッグ機能 の ITM( 計装トレース マクロセル ) を使用して プログラム中から任意の文字列 数値を CSIDE 上のターミナルウィンドウ上に表示させることができます CSIDE の RTOS デバッグ拡張機能である RTOS タスクトレース機能は を使用した機能ではありません 14

本書の内容の一部 または全部を無断で使用することや 複製することはできません 本書に関する疑問点や誤り 記載漏れ ご意見 ご感想 ご要望などがありましたら当社までご連絡ください 本書で取り上げるプログラム名 CPU 名などは 一般に各メーカの商標または登録商標です CSIDE に関する著作権は ( 株 ) コンピューテックスに帰属します PALMiCE CSIDE および COMPUTEX は ( 株 ) コンピューテックスの登録商標です 株式会社コンピューテックス 本社 605-0846 京都市東山区五条橋東四丁目 432-13 對嵐坊ビル TEL.075(551)0528( 代表 ) FAX.075(551)2585 営業部 101-0047 東京都千代田区内神田二丁目 15-2 内神田 DNK ビル 7F TEL.03(3253)2901( 代表 ) FAX.03(3253)2902 テクニカルセンタ TEL.075(551)0373 FAX.075(551)2585 Cortex-M コア対応エミュレータデバッグ制御インターフェースとトレース機能 2013 年 03 月第 2 版 CS0015(B)1303