目次 EWARM のマニュアルガイド ARM の命令セット インストールファイルとドキュメント EWARM のオプション設定概要 ビルド時の生成ファイル スタートアップシーケンス Cortex の CoreSight デバッグコネクタ情報 SWV(SWO) 機能 ETM トレース機能 デバッグウィン

Similar documents
PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint Presentation

PowerPoint プレゼンテーション

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

IAR Embedded Workbench for ARM

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

PowerPoint Presentation

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

統合開発環境 High-performance Embedded Workshop V へのリビジョンアップのお知らせ

Microsoft Word - tool01.doc

Application Note Application Note No. ESC-APN Document No.: ESC-APN adviceluna Linux デバッグ手順 (MIPS コア編 ) はじめに adviceluna Linux デバッグ手順 ( 以

インテル(R) Visual Fortran コンパイラ 10.0

24th Embarcadero Developer Camp

内容 1 はじめに 本ガイドの目的 本ガイドの対象者 対象製品 表記について リンカ設定ファイル例 ソースファイル例 名前の付け方 リンカオプションとリンカ設定ファ

, 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

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

Notes and Points for TMPR454 Flash memory

開発環境構築ガイド

開発環境構築ガイド

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

TRQerS - Introduction

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

PowerPoint Presentation

本ドキュメントについて 的 ARM 統合開発環境である ARM IAR Embedded Workbench(EWARM) と ST マイクロエレクトニクス社 (ST 社 ) 提供のサンプルプロジェクト および設計 援ツールを使 して ST 社評価ボード のソフトウェアを実際にビルド デバッグする

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

自己診断プログラム_基本設定

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

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

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

ARM Corporate Presentation

PDFオートコンバータEX

1. プログラム実行時の動作プログラムを実行すると以下のように動作します 1) NUCLEO-F401RE 上の LED LD2( 緑 ) が 200mSec 間隔で点滅します 2. プロジェクトの構成 2.1. プロジェクト F401N_BlinkLD2 の起動画面 TrueSTUDIO で作成し

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

RH850の割り込み/例外実現方法 CC-RHアプリケーションガイド

1. 新規プロジェクト作成の準備新規プロジェクトのためのフォルダを用意して そこにプロジェクトを作成します [ 新しいフォルダー ] をクリックして希望のフォルダに新しいフォルダを作成します この例では TrST_F401N_BlinkLD2 というフォルダを作成しました TrST_F401N_Bl

PowerPoint Presentation

1. 使用する信号 1.1. UART 信号 UART 通信に使用する信号と接続相手との接続は以下の通りです UART 信号表 番号 CPU 機能名 CPU 信号名 基板コネクタピン番号 方向 接続相手の信号名 1 USART1_TX PA9 CN > RxD 2 USART1_R

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

PCL6115-EV 取扱説明書

1. 概念 STM32F4 Discovery 基板は Mini USB を接続して デバッグやプログラムの書き込みができるようになっています 通常は CPU の 0x 番地からプログラムを実行します では なぜわざわざこのプロジェクトの雛形を使用して CPU の 0x

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

プログラミング基礎

ReTRY HUB

TOPPERS活用アイデア・アプリケーション開発

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

リファレンスアプリケーション RefApp7

Microsoft Word - RefApp7インストールガイド.doc

Page 2 ワークスペースはプロジェクト管理の最上位であり IAR Embedded Workbench を起動すると自動的にオープンします ワークスペースには複数のプロジェクトを登録することができるので ここではメインのアプリケーションとブートローダのプロジェクトを登録します このワークスペース

MINI2440マニュアル

Maser - User Operation Manual

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

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

スライド 1

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

Cortex®-M統合開発環境のご紹介とソフトウェアエンジニア様向けのCortex®-Mマイコン導入支援紹介 IARシステムズ株式会社

スライド 1

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

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

設定ソフト Ver1.0.5版 マニュアル

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

Studuinoライブラリ環境設定Mac編

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

PGRelief C/C++ 強化ポイント説明書

Microsoft Word - 補足説明_Win7_Server2008R2__R1.doc

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

智美塾 ゆもつよメソッドのアーキテクチャ

Microsoft Word - XOOPS インストールマニュアルv12.doc

Microsoft PowerPoint _Spotfire Installation from Scistore.pptx

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

作業環境カスタマイズ 機能ガイド(応用編)

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

I-jet-1-J

Nios II Flash Programmer ユーザ・ガイド

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

RICOH Device Manager Pro バックアップ/バージョンアップ作業手順書

Visual DSP++ install and tutorial

同期を開始する ( 初期設定 ) 2 1 Remote Link PC Sync を起動する 2 1 接続機器の [PIN コード ] [ ユーザー名 ] [ パスワード ] を入力する [PIN コード ] などの情報は 接続機器の設定画面でご確認ください 例 )HLS-C シリーズの場合 :[R

AN1609 GNUコンパイラ導入ガイド

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

GettingStartedTK2

開発ツールのコラボレーション機能を検証する

Transcription:

EWARM 付録情報 IAR システムズ株式会社 www.iar.com 改訂日 : 2014 年 8 月 1 日

目次 EWARM のマニュアルガイド ARM の命令セット インストールファイルとドキュメント EWARM のオプション設定概要 ビルド時の生成ファイル スタートアップシーケンス Cortex の CoreSight デバッグコネクタ情報 SWV(SWO) 機能 ETM トレース機能 デバッグウィンドウ シミュレータ機能 EWARM の最適化 Update Update EWARM の便利な開発テクニック EWARM の速度性能評価手順 EWARM 関連情報 URL 2

EWARM 付録情報 EWARM のマニュアルガイド www.iar.com

EWARM のマニュアルガイド インフォメーションセンタからのリンク 4

EWARM のマニュアルガイド インフォメーションセンタ ユーザガイド (1/3) EWARMを使った開発の手順 アプリケーションとしてのIDEの使い方 EWARMのデバッグ設定 使い方 コンパイラ/ リンカの設定方法 使い方 アセンブラの設定方法 使い方 旧バージョンからのアップデート注意 MISRA-C:1998チェッカの使用方法 説明 MISRA-C:2004チェッカの使用方法 説明 5

EWARM のマニュアルガイド インフォメーションセンタ ユーザガイド (2/3) インストール手順 ライセンスのクイックガイド インストール手順 ライセンスの詳細 エミュレータ (ICE) 固有のマニュアル CMSIS 規格説明 (ARM 社提供 ) 6

EWARM のマニュアルガイド ソフトウェア構成とマニュアルの関係 IAR Embedd Workbench IDE IDE ツール ビルドツール IAR C-SPY デバッガ エディタ プロジェクトマネージャ ライブラリビルダ ライブラリアン IAR C/C++ コンパイラ アセンブラ リンカ シミュレータ ハードウェアシステムドライバ Power デバッグ RTOS プラグイン 設定開発デバッグ 7

発フェーズ取り扱い方法開EWARM のマニュアルガイド 推奨するマニュアル参照順序 EWARM 全体概要の把握 IAR Embedded Workbench の使用開始の手順 アプリ操作プロジェクト設定 コンパイラ設定リンカ設定 リンカ設定実践 デバッグ設定デバッグ手法 ICE のスペック IDE ユーザガイド C/C++ コンパイラリファレンスガイド ILINK 設定ガイド C-SPY デバッガガイド エミュレータ (ICE) 固有のマニュアル IAR 日本法人作成ガイド http://www.iar.com/global/kk_pages/ UserGuide/EW_IlinkGuide.JPN.pdf 8

EWARM のマニュアルガイド IAR Embedded Workbench の標準的なマニュアル構成 Part.1 関連モジュールの概要説明 教科書 Part.2 関連モジュールの詳細説明 辞書 9

EWARM のマニュアルガイド Embedded Workbench IDE ユーザガイド 章目次 パート 1. プロジェクト管理とビルド 開発環境 プロジェクト管理 ビルド 編集 パート 2. リファレンス情報 インストールファイル IAR Embedded Workbench IDE リファレンス 一般オプション コンパイラオプション アセンブラオプション 出力コンバータオプション カスタムビルドオプション ビルドアクションオプション リンカのオプション ライブラリビルダオプション 10

EWARM のマニュアルガイド C/C++ コンパイラリファレンスガイド パート 1. ビルドツール IAR ビルドツールの概要 組込みアプリケーションの開発 データ記憶 関数 ILINK を使用したリンク アプリケーションのリンク DLIB ランタイムライブラリ アセンブラ言語インタフェース C の使用 C++ の使用 アプリケーションに関する考慮事項 組込みアプリケーション用の効率的なコーディング 章目次 パート 2. リファレンス情報 外部インタフェースの詳細 コンパイラオプション リンカオプション データ表現 拡張キーワード プラグマディレクティブ 組込み関数 プリプロセッサ ライブラリ関数 リンカ設定ファイル セクションリファレンス スタック使用制御ファイル IAR ユーティリティ C 規格の処理系定義の動作 C89 の処理系定義の動作 11

EWARM のマニュアルガイド C-SPY デバッガガイド 章目次 IAR C-SPY デバッガ C-SPY を使用するにあたって アプリケーションの実行 変数と式の扱い ブレークポイントの使用 メモリとレジスタのモニタ JTAGjet ドライバでのトレースデータの収集と使用 トレースデータの収集と使用 プロファイラの使用 Power ドメインのデバッグ コードカバレッジ 割込み C-SPY マクロの使用 C-SPY コマンドラインユーティリティ cspybat デバッガオプション C-SPY ドライバについての追加情報 フラッシュローダの使用 12

EWARM のマニュアルガイド 同梱ドキュメント一覧 1/2 [Program Files] [IAR Systems] [IAR Embedded Workbench for ARM ***] [arm] [doc] AVIXPluginIarEwarm_v0500.pdf cmx_quickstart.pdf embos_iar_plugin.pdf EW_MisraC1998Reference.ENU.pdf EW_MisraC2004Reference.ENU.pdf EWARM_ADSMigrationGuide.ENU.pdf EWARM_AssemblerReference.ENU.pdf EWARM_AssemblerReference.JPN.pdf EWARM_DDFFormat.pdf EWARM_DebuggingGuide.ENU.pdf EWARM_DebuggingGuide.JPN.pdf EWARM_DevelopmentGuide.ENU.pdf EWARM_DevelopmentGuide.JPN.pdf EWARM_HeaderFormat.pdf EWARM_HeaderTemplate.pdf EWARM_IDEGuide.ENU.pdf EWARM_IDEGuide.JPN.pdf デバッガ用 DDF ファイルフォーマット ヘッダファイルフォーマット ヘッダファイルテンプレート ENU: 英語版 JPN: 日本語版上記がないものは英語版 13

EWARM のマニュアルガイド 同梱ドキュメント一覧 2/2 [Program Files] [IAR Systems] [IAR Embedded Workbench for ARM ***] [arm] [doc] EWARM_MigrationGuide.ENU.pdf EWARM_MigrationGuide.JPN.pdf EWARM_RealViewMigrationGuide.ENU.pdf FlashLoaderGuide.ENU.pdf FlashLoaderGuide.JPN.pdf フラッシュローダ開発ガイド IAR_KScard_QuickStart.pdf IAR_KScard_ROM_monitor_settings.pdf I-jet-ARM.ENU.pdf I-jet-ARM.JPN.pdf jet_usb_install.pdf JLink_J-TraceARM.pdf JLinkARM.pdf PEMicroSettings.pdf ThreadX_IAR_C-SPY_Plugin.pdf uc-os-ii-ka-cspy-userguide.pdf ENU: 英語版 JPN: 日本語版上記がないものは英語版 14

EWARM 付録情報 ARM の命令セット www.iar.com

ARM の命令セット ARM の命令種類 命令セットビット特徴 ARM Thumb Thumb2 32bit 16bit 16bit + 32bit フル命令セット * パフォーマンス いがコード密度低い ARM 命令のサブセット * コード密度 いがパフォーマンスやや低い Thumb 命令のスーパーセット * パフォーマンスおよびコード密度 い ARMv6-M Thumb 16bit + 32bit ARM ファミリー毎の命令対応 Thumb2 命令のサブセット 名称ビット特徴 ARM6 ARM 命令 ARM7 ARM9 ARM11 ARM 命令 +Thumb 命令 命令セットを使い分ける際には CPU のモード切替が必要 Cortex-M3/M4 Thumb2 命令 CPU モードを変えることなく必要に応じて 32bit 命令を使 Cortex- M0/M0+ ARMv6-M Thumb ほとんどの 16bitThumb 命令と 重要な 6 個の 32bit Thumb 命令 16

EWARM 付録情報 インストールファイルとドキュメント www.iar.com

インストールファイル (1) インストールファイルの構成 ルートディレクトリ EWARM 固有のファイル 各コンポーネントの実行ファイル CMSIS 関連ファイル開発環境 プロジェクト設定に使用するファイルリリースノート ユーザガイド C-SPYデバッガで必要なデバイスドライバサンプルプロジェクトヘッダファイルライブラリファイルプラグインモジュール RTOS 関連ファイルライブラリ関連のソースファイルチュートリアルプロジェクトファイル 共通コンポーネント用の実行ファイル EW 製品共通のファイル IDE 設定保存用に使用されるファイルリリースノート ユーザガイドプラグインモジュール 18

インストールファイル (2) arm ディレクトリの内容 oarm bin oarm config oarm doc oarm drivers oarm example oarm inc oarm lib oarm plugin oarm src oarm tutor 各コンポーネントの実行ファイル開発環境 プロジェクト設定に使用するファイルリリースノート ユーザガイド C-SPYデバッガで必要なデバイスドライバサンプルプロジェクトヘッダファイルライブラリファイルプラグインモジュールライブラリ関連のソースファイルチュートリアルプロジェクトファイル 19

インストールファイル (3) Common ディレクトリの内容 ocommon bin ocommon config ocommon doc ocommon plugin 共通コンポーネント用の実行ファイル IDE 設定保存用に使用されるファイルリリースノート ユーザガイドプラグインモジュール 20

重要マニュアル IAR Embedd Workbench IDE IDE ツール ビルドツール IAR C-SPY デバッガ エディタ プロジェクトマネージャ ライブラリビルダ ライブラリアン IAR C/C++ コンパイラ アセンブラ リンカ シミュレータ ハードウェアシステムドライバ Power デバッグ RTOS プラグイン 設定開発デバッグ 21

EWARM 付録情報 EWARM のオプション設定概要 www.iar.com

EWARM のオプション設定概要 ツールオプションとプロジェクトオプション PC に保存されるツール全般オプション プロジェクト固有のオプション設定 23

ツールオプション概要 表 操作性カスタマイズ ビルドメッセージカスタマイズ ビルド動作等カスタマイズ ソースコード管理カスタマイズ デバッガ動作等カスタマイズ デバッグ時スタック解析動作等カスタマイズ 24

プロジェクトオプション概要 ターゲット設定ライブラリ設定 開発フロー コンパイラ設定 最適化など リンカ設定 メモリ配置 チェックサム デバッグ 設定 ICE 選択書き込み設定 ICE 固有の設定 リセット 速度 25

EWARM 付録情報 ビルド時の生成ファイル www.iar.com

ビルド時の生成ファイル 生成ファイル一覧 生成ファイル 説明.out 実行可能ファイル (Elf/Dwarf 形式 ).a ライブラリファイル.srec (,.hex,.sim).map Flash ライター用などに変換されたファイル [ プロジェクト ] [ オプション ] [ 出力コンバータ ] [ 追加出力ファイルを生成 ] にチェック リンク後のマップファイル [ プロジェクト ] [ オプション ] [ リンカ ] [ リスト ] [ リンカマップファイルの表示 ] project1 Debug Exe project1.out project1.srec List project1.map Tutor.lst Utilities.lst tutor_library Debug Exe tutor_library.a.lst C ソースファイル毎の静的解析情報 [ プロジェクト ] [ オプション ] [C/C++ コンパイラ ] [ リスト ] [ リストファイルの出力 ] 27

ビルド時の生成ファイル.out ファイル 実 可能ファイル (Elf/Dwarf 形式 ) 28

ビルド時の生成ファイル.a ファイル ライブラリファイル 29

ビルド時の生成ファイル.srec(.hex,.sim) ファイル S010000070726F6A656374312E73726563EC S11300003804002019030000B3020000B30200000A S1130010B3020000B3020000B302000000000000BD S1130020000000000000000000000000B302000017 S1130030B302000000000000B3020000B30200009D S113004038B52D2401201349486012490860022064 S1130050040024B20A2C0FDA24B2200000F00DF8B8 S1130280A142F8D110BD00BF2C0000004C000000BA S11302B07047FEE7DDFFFFFF2C0000000800002070 S11302C000000000BBFEFFFF080000005800000013 S11302D0000000200000000000F009F8002801D010 S11302E0FFF7C0FF0020FFF7ADFF00F002F8012088 S11302F0704700F001B800000746384600F002F8E5 S1130300FBE7000080B5FFF751FF024A11001820F7 S1130310ABBEFBE726000200C046C046C046C0464E S10F0320FFF7DAFFFFFFFFFFFFFFFFFF06 S9030319E0 30

ビルド時の生成ファイル.map ファイル *** PLACEMENT SUMMARY *** "A1": place at 0x00000000 { ro section.intvec }; "P1": place in [from 0x00000000 to 0x0007ffff] { ro }; "P2": place in [from 0x20000000 to 0x2000ffff] { rw, block CSTACK, block HEAP }; Section Kind Address Size Object ------- ---- ------- ---- ------ "A1": 0x40.intvec ro code 0x00000000 0x40 vector_table_m.o [4] - 0x00000040 0x40 "P2", part 3 of 3: 0x400 CSTACK 0x20000038 0x400 <Block> CSTACK uninit 0x20000038 0x400 <Block tail> - 0x20000438 0x400 ************************************************************************ ******* *** STACK USAGE *** Program entry iar_program_start: 0x00000319 Maximum call chain 112 bytes ************************************************************************ ******* *** MODULE SUMMARY *** 768 bytes of readonly code memory 44 bytes of readonly data memory 1 076 bytes of readwrite data memory Errors: none Warnings: none 31

ビルド時の生成ファイル.lst ファイル In section.bss, align 4 29 int callcount; callcount: 00000000 DS8 4 30 31 /* Increase the 'callcount' variable by one. */ In section.text, align 2, keep-with-next 32 void NextCounter(void) 33 { 34 callcount += 1; NextCounter: 00000000 0x... LDR.N R0,??DataTable2 00000002 0x6800 LDR R0,[R0, #+0] 00000004 0x1C40 ADDS R0,R0,#+1 00000006 0x... LDR.N R1,??DataTable2 00000008 0x6008 STR R0,[R1, #+0] 35 } 0000000A 0x4770 BX LR ;; return Maximum stack usage in bytes:.cstack Function ------- -------- 8 DoForegroundProcess 8 -> GetFib 8 -> NextCounter 8 -> PutFib 0 NextCounter Section sizes: Bytes Function/Label ----- -------------- 4??DataTable2 24 DoForegroundProcess 12 NextCounter 4 callcount 28 main 4 bytes in section.bss 68 bytes in section.text 68 bytes of CODE memory 4 bytes of DATA memory Errors: none Warnings: none 32

EWARM 付録情報 スタートアップシーケンス www.iar.com

スタートアップシーケンス IAR DLIB ランライムライブラリのコードただし上書き可能 参照 ジャンプ Cortex-M0/M3/M4 Vector Table: thumb vector_table_m.s or thumb cstartup_m.c デフォルトプログラムエントリ : thumb cstartup_m.s or thumb cstartup_m.c Vector No. Vector Offset 例外 & 割り込み 値 00 0x00 Stack Top sfe (CSTACK) 01 0x04 Reset iar_program_start 02 0x08 NMI Default Handler 03 0x0C Hard Fault Default Handler 04 0x10 Memory Management Default Handler 05 0x14 Bus Fault Default Handler 06 0x18 Usage Fault Default Handler 07~10 0x1C~0x28 Reserved 0 11 0x2C SVCall Default Handler 12 0x30 Debug Monitor Default Handler 13 0x34 Reserved 0 14 0x38 PendSV Default Handler 15 0x3C SysTick Default Handler 16 ~ 255 0x40~0x3FC External Interrupts Interrupt Handlers iar_program_start: bl iar_init_core ; optional bl iar_init_vfp ; optional, enable VFP, thumb fpinit_m.s bl cmain main() 前の初期化 : thumb cmain.s cmain: bl low_level_init bl iar_data_init3 bl main ; low_level_init.c ; initialize data sections, init data_init3.c ユーザコード User s Application: int main (void) { } void xxx_interrupthandler (void) { } 34

EWARM 付録情報 Cortex の CoreSight www.iar.com

CoreSight テクノロジー : 機能 接続まとめ デバッグ制御 名称接続 ICE 基本機能特徴 JTAG SWD Serial Wire Debug TMS TCK TDO TDI nreset TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - SWDIO SWDCLK SWO - - I-jet J-Link JTAGjet I-jet J-Link JTAGjet バウンダリスキャン printf デバッグ 必要信号数 :2 本 SWV 使 可能 printf デバッグ 名称接続 ICE トレース 式特徴 トレース機能 *M3/M4 のみ Serial Wire Viewer SWV ETM Embedded Trace Macrocell TMS TCK TDO TDI nreset CLK D0 D1 D2 D3 SWDIO SWDCLK SWO - - 1,2,4 本から選択 I-jet J-Link JTAGjet Serial Wire Output JTAGjet -Trace J-Trace *JTAG-Trace は 4 本 (4bit) 固定 サンプリング 分岐トレース ( 実 ) パソコンにリアルタイム転送 PC( プログラムカウンタ ) 取得 特定データのサンプリング 例外処理のトレース ( 速 )prinf デバッグ ピン数 :1 データ 落可能性 ICE のメモリに保存 ブレーク時にパソコンに転送 実 履歴を確実に追跡 対応しているかは CPU 依存 タイムスタンプは誤差あり データ 落可能性 データ線の本数に依存する 36

CoreSight テクノロジー : 可能組み合わせ JTAG SWD SWV ETM TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - CLK D0 D1 D2 D3 TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - CLK D0 D1 D2 D3 TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - TMS TCK TDO TDI nreset SWDIO SWDCLK SWO - - CLK D0 D1 D2 D3 ETM および SWV を同時に使 する際は SWV のトレースデータは ETM トレースバッファで収集され 実 が停 したタイミングで 表 更新されます 37

CoreSight テクノロジー : トレースタイミング トレース情報が取得できない sub_2() SWV トレース sub_1() main() 定間隔でサンプリング sub_2() ETM トレース sub_1() main() プログラムが分岐するタイミングでトレースバッファに出 38

CoreSight テクノロジー : よくある質問 Q. デバッグに最 限必要なピン数は? デバイスと開発環境がSWDに対応していれば 3もしくは4 本 SWDデバッグで 最低限必要なピン数は3 本 (I/O クロック グラウンド ) もしくはこれにリセットを加えた4 本 リセット機能は必須機能ではないため 最低ということであれば3 本 グラウンドの本数が少ないと信号が弱くなったりノイズがのるリスクあります (Jtag だと通常 5 本程度使 ) 般的にはおそらくグラウンドは 1 本でも開発可能ですが この精度は 基板や ICE の品質にも関わってくるためユーザー様にて確認の必要があります SWD は 般的に Cortex A,R,M に対応していますが デバッガとデバイスが共に SWD に対応していることが条件となります 39

CoreSight テクノロジー : 機能 接続まとめ Q. SWD を使 すると信号線が減るが クロック差やスピード差はあるか? SWD や JTAG と べて信号線が減りますが 実際には CPU との通信以外の制御部分が処理の 半を占めるため デバッガの動作速度の低下を体感することはありません Q. JTAG と SWD を べて できることできないことは? [JTAG でできて SWD できないこと ] JTAG 本来の機能である端 のバウンダリスキャンテスト [SWD でできて JTAG でできないこと ] トレース機能である SWV トレース [ その他 SWD のメリット ] デバッグ の端 数の現象 ( 5->2 ) 上記に伴うコネクタ実装 積の現象 40

CoreSight テクノロジー : 関連 URL ARM 社 HP の解説 SWD ETM http://www.arm.com/ja/products/system-ip/debug-trace/coresight-soccomponents/serial-wire-debug.php http://www.arm.com/ja/products/system-ip/debug-trace/tracemacrocells-etm/index.php 41

EWARM 付録情報 デバッグコネクタ情報 www.iar.com

デバッグインタフェースコネクタ :I-jet(1) ハーフピッチ 20 ピンコネクタ :MIPI-20(JTAG, SWD/SWV) 標準対応 ( ケーブル付 ) 11pin, 13pin から 5V 供給可能 43

デバッグインタフェースコネクタ :I-jet(2) ハーフピッチ 10 ピンコネクタ :MIPI-10(JTAG, SWD/SWV) 標準対応 ( ケーブル付 ) ピン配置はハーフピッチ 19 ピンコネクタの 1~10 番と同じ 44

デバッグインタフェースコネクタ :I-jet(3) 標準ピッチ 20 ピン変換アダプタ :ARM-20(JTAG,SWD/SWV 用 ) アダプタ標準添付 19pin から 5V 供給可能 45

デバッグインタフェースコネクタ :JTAGjet-trace ハーフピッチ 20 ピンコネクタ :MIPI-20(JTAG/,SWD, ETM) 標準対応 ( ケーブル付 ) ピン機能詳細は ETM トレース機能 を参照 46

デバッグインタフェースコネクタ :J-Link(1) 標準ピッチ 20 ピンコネクタ (JTAG SWD/SWV 用 ) JTAG 接続 SWD/SWV 接続 J-Link J-Trace では標準対応 ( ケーブル付 ) 19pin から 5V 供給可能 47

デバッグインタフェースコネクタ :J-Link(2) ハーフピッチ 19 ピンコネクタ (JTAG SWD/SWV J-Trace では標準対応 ( ケーブル付 ) J-Link で使用する場合は変換ケーブル ( 別売 ) が必要 11pin, 13pin から電源供給可能 48

デバッグインタフェースコネクタ :J-Link(3) ハーフピッチ 9 ピンコネクタ (JTAG SWD/SWV 用 ) J-Link J-Trace で使用する場合は変換ケーブル ( 別売 ) が必要ピン配置はハーフピッチ 19 ピンコネクタの 1~10 番と同じ 49

デバッグインタフェースコネクタ例 コネクタ種類 ハーフピッチ 20(19)pin *MIPI-20 ハーフピッチ 10(9)pin *MIPI-10 フルピッチ 20(19)pin *ARM-20 コネクタ例 SAMTEC:FTSH-110-01-L-DV-K SAMTEC:FTSH-105-01-L-DV-K Harting:09185206803 Molex:90635-1202 Tyco Electronics:2-215882-0 *J-Link マニュアルではキー pin を除いて 19pin/9pin と記述 50

EWARM 付録情報 SWV(SWO) 機能 www.iar.com

SWV 機能の使用条件 MCU の対応 Cortex-M3/M4 SWV トレース対応エミュレータ (ICE) I-jet / I-jet-Lite / SEGGER 社 J-Link が対応 コネクタの対応 接続 式 SWO ピンの接続に対応したコネクタが必要 SWD 接続を選択 レジスタ設定による SWO ポートピンの有効化 MCU によっては SWO ポートピンが多重化されて他の機能に割り当てられていることがあるため FW またはマクロで有効化する必要がある 52

SWV 対応コネクタ SWD 接続 SWO ピン 53

SWV 機能使用時のプロジェクト設定 [ 設定 ] [ ドライバ ] を [I-jet/JTAGjet] を選択 [ デバッガ ] [I-jet/JTAGjet] [JTAG/SWD] でインタフェースに [SWD] を選択 [ 一般オプション ] ライブラリ設定 stdout/stderr が SWO 経由になっていると強制的に SWD が選択される [I-jet / JTAGjet] 54

SWV(SWO) 機能 :SWV トレース こんなときに コードの流れをバックトレースしたい コード実 時のタイムスタンプを たいなど * 補 SWV トレースは 1 秒間に数千サンプリング程度なので 実 コード全てを追うことできない 55

SWV(SWO) 機能 :SWV トレース 使用方法 1.SWO トレースウィンドウ設定 2. SWO トレース 3. デバッグ開始 3. 右クリックして [ 有効 ] 56

SWV(SWO) 機能 : コードカバレッジ こんなときに 実装されているコードが想定通りに実 されているか確認したい など * 補 デフォルトで有効となっている コードカバレッジ プラグインの機能を使 サンプリングタイミングにより 抜け落ちることがあるが 時間トレースすることで信頼性のあるデータとなる 57

SWV(SWO) 機能 : コードカバレッジ 使用方法 SWV トレースが可能な状態で 4.[ 更新 ] 1. コードカバレッジ コードカバレッジが更新表示される 3. デバッグ実行 2. 右クリックして [ 有効化 ] 58

SWV(SWO) 機能 : データログ こんなときに 特定の変数やアドレスへの読み書きアクセスをロギングしたい 上記アクセスの時間を知りたい など * 補 変数またはアドレスは 4 つまで指定可能 59

SWV(SWO) 機能 : データアクセスサマリー こんなときに データアクセスが何回あったか 読み書きが何回あったか確認したい など * 補 すべてのアクセス 数が読み書きアクセスの合計より きい場合 アクセスの属性情報が正確にとれなかったサンプリングがある 60

SWV(SWO) 機能 : データアクセス : タイムライン こんなときに データの変わったタイミングを時間軸上でみたい 他の割り込みなどとの時間関係を たい など * 補 い箇所はオーバフローが発 61

SWV(SWO) 機能 : データログ使用方法 (1/2) 1. 静的変数上で右クリック 2. 変数 のデータログブレークポイントを設定 3.[ 表示 ] [ ブレークポイント ] 4. 右クリックして [ 編集 ] 5. ログ対象アクションを選択 62

SWV(SWO) 機能 : データログ使用方法 (2/2) 2. 右クリックして有効化 1. デバッグ開始 1. データログ 63

SWV(SWO) 機能 : 割り込みログ こんなときに プログラム実 中に発 した割り込みや例外をロギングしたい 割り込みハンドラ関数の処理でかかった時間を知りたい など 64

SWV(SWO) 機能 : 割り込みログ一覧 こんなときに 各割れ込みの発 回数や発 頻度を確認したい など 65

SWV(SWO) 機能 : 割り込みログ : タイムライン こんなときに 割り込みの発 タイミングを時間軸上で たい 割り込みハンドラの処理にかかった時間を時間軸上で たい その他のイベントとの関係を時間軸上で たい など 66

SWV(SWO) 機能 : 割込みログ 使用方法 1. 割込みログ 2. 右クリックして [ 有効化 ] 3. デバッグ開始 67

SWV(SWO) 機能 :ITM イベント : ログ こんなときに コードの実 タイミングを正確に知りたい 実 時の変数の値を たい マルチタスクの各タスク り 出 に仕掛けて タスク状況を把握したい など * 補 ソースコード上で arm_itm.h を include ITM_EVENT8_WITH_PC(1,1) と記述 チャンネルは 1-4 * 参考 URL http://supp.iar.com/support/?note=26891 http://netstorage.iar.com/suppdb/public/support/004765/time%20measurement%20by%20swo.pdf 68

SWV(SWO) 機能 :ITM イベント : サマリー こんなときに 各チャンネルの ITM イベント発 回数や頻度を知りたい 実 時間が適正な間隔になっているか知りたい ウォッチしている値が適正な値になっているか知りたい など 69

SWV(SWO) 機能 :ITM イベント : タイムライン こんなときに ITM イベントの発 タイミングを時間軸上で たい 各 ITM イベント間の関係や割り込みなどのと関係を時間軸上で たい イベント間をドラッグドップで 経過時間を知りたいなど 70

SWV(SWO) 機能 :ITM イベント 使用方法 1.arm_itm.h をインクルード 5. 右クリックして [ 有効化 ] 2. マクロをコードに記述 3. ビルド & ダウンロード 4. イベントログ 6. デバッグ開始 71

SWV(SWO) 機能 : タイムライン表示 使用方法 2. 表示したい機能の上で右クリックして [ 有効化 ] 4. デバッグ開始 3. 右クリックして [ ズーム ] [ 任意の時間軸 ] 1. タイムライン 72

EWARM 付録情報 ETM トレース機能 www.iar.com

ETM トレース機能の使用条件 MCU の対応 ETM 機能の実装は MCU ベンダの選択による Trace Data ピン (1-4 本 ) は MCU ベンダの選択による トレース機能付きエミュレータ (ICE) を使 JTAGjet-Trace が対応 SEGGER 社 J-Trace が対応 コネクタの対応 トレースピンの接続に対応したコネクタが必要 レジスタ設定によるトレースポートピンの有効化 MCU によってはトレースポートピンが多重化されて他の機能に割り当てられていることがあるため FW またはマクロで有効化する必要がある 74

ETM トレース対応コネクタ ETM トレース用クロック ETM トレース用データポート 75

ETM トレース使用時のプロジェクト設定 : JTAGjet-trace [ 設定 ] [ ドライバ ] を [I-jet/JTAGjet] を選択 [ デバッガ ] [I-jet/JTAGjet] の特別な設定はなし [I-jet / JTAGjet] 76

デバッグ画面での [ETM トレース設定 ] デフォルト設定で動作可能 設定項目の詳細は [ ヘルプ ] [Embedded Workbench デバッグガイド ] を参照 77

ETM トレース用のブレークポイント設定 トレース取得を開始したいコード上で右クリックし [ ブレークポイントの切り替え ( トレース開始 )] を指定 トレースを停止したいコード上で [ ブレークポイントの切り替え ( トレース停止 )] を指定 ブレークしたときに トレースデータが ICE から読み出され画面に表示される 78

ETM トレース機能 :[ETM トレース ] [ETM トレース ] 実行されたコードを表示 79

ETM トレース機能 :[ETM 関数トレース ] [ETM 関数トレース ] ETM トレースで取得したデータを関数遷移で表示 80

ETM トレース機能 :[ コードカバレッジ ] [ 逆アセンブリ ] [ コードカバレッジ ] ETM トレースで通過したアドレスに を付ける 81

ETM トレース機能 : [ タイムライン ] [ コールスタック ] [ タイムライン ] 82

EWARM 付録情報 デバッグウィンドウ www.iar.com

デバッグウィンドウ : ブレークポイント こんなときに ブレークポイントの 覧が たい ブレークポイントを貼っているソースコードに びたい 時的にブレークポイントを全て無効にしてデバッグしたい ブレークポイントを削除したい ブレークポイントを編集したい など 84

デバッグウィンドウ : 逆アセンブリ こんなときに アセンブラレベルでステップ実 したい 実 中のアドレスを たい ライブラリなど ソースファイルのないプログラムをデバッグしたい 最適化の影響を確認したい など 85

デバッグウィンドウ : メモリ こんなときに 現在のメモリの値を たい メモリをPC 上の保存したい メモリ上でデータを検索したいなど 86

デバッグウィンドウ : シンボルメモリ こんなときに アドレス順に変数や関数の 覧を たい など 87

デバッグウィンドウ : レジスタ こんなときに 現在の各種レジスタの値が たい デバッグ にレジスタの値を変えてみたいなど 88

デバッグウィンドウ : ウォッチ こんなときに 特定の静的変数やグローバル変数の値をモニタリングしたい ローカル変数の値をスコープ内でモニタリングしたい など 89

デバッグウィンドウ : ローカル こんなときに 関数内のローカル変数や引数を 動的にモニタリングしたい など 90

デバッグウィンドウ : 静的変数 こんなときに プログラム内の静的変数やグローバル変数を 動的にモニタリングしたい など 91

デバッグウィンドウ : 自動 ( オート ) こんなときに ステップ実 でデバッグをしているときに近辺の変数や関数情報を 動的にモニタリングしたい など 92

デバッグウィンドウ : ライブウォッチ こんなときに 特定の静的変数やグローバル変数を プログラム実 状態のまま定期的にモニタリングしたい など 93

デバッグウィンドウ : クイックウォッチ こんなときに 変数を簡単な式で評価したい * data > 200 など真なら 1 任意のタイミングで C-Spy マクロを実 したい など * 補 C-Spy マクロは 常に強 かつ柔軟 [ ヘルプ ] [Embedded Workbench デバッグガイド ] の [C-SPY マクロの使 ] を参照 94

デバッグウィンドウ : 呼び出しスタック こんなときに 実 中の関数の呼び出し元を知りたい 各関数の引数も たいなど 95

デバッグウィンドウ : スタック こんなときに 現在のスタック使 状況を たい 現在のスタック使 率を たい それまでの最 スタック使 量を知りたいなど * 補 OS を搭載している場合 OS 側で各タスクのスタックを管理するので 別途プラグインなどを活 してスタック管理 96

デバッグウィンドウ : ブレークポイント こんなときに printf デバッグがしたい デバッグ にパラメータなどを scanf で EWARM の画 上から したいなど * 補 <stdio.h> を include コードサイズが きくなってしまう場合は [ プロジェクト ] [ オプション ] [ 般オプション ] [ ライブラリオプション ] から調整可能 printf はデフォルトだとターミナル IO に出 されるが putchar にユーザコードで実装することで UART などに変更可能 97

デバッグウィンドウ : イメージ こんなときに 現在のイメージ ( デバッグ情報 ) を確認したい など * 補 ブートローダプロジェクトなどで複数バイナリをデバッグするとき以外は出番なし 98

EWARM 付録情報 シミュレータ機能 www.iar.com

シミュレータの設定 [ 設定 ] [ ドライバ ] を [ シミュレータ ] を選択 100

シュミレータでできること C-SPYシミュレータで出来ることは以下の通りとなります 1. 命令レベルのシミュレーション 2. メモリの構成 検証 3. 割込みシミュレーション 4. イミディエイトブレークポイントとC-SPY マクロシステムを使用した周辺シミュレーションデフォルトではCPUコア単体 + メモリの状態でのシミュレーションが可能です 周辺や割込みを使うシミュレーションは3または4に関してユーザ側で準備が必要となります 1.CPU コア 2. メモリ 3. 割込みを疑似発生 4.C-SPY マクロ周辺の模擬 101

割込みシミュレーション ここでは 3の割込みシミュレーションの用い方を説明しますシミュレータ動作時に 1シミュレータ 2 割込み設定割込み設定画面で 3 割込みシミュレーションを有効にするをONに 4 新規作成を押す割込みの編集画面になるので 5 初回の割込みを起こしたいサイクル 周期などを設定してください あとは通常の手順でシミュレーションを実施ください 1 2 3 4 5 必要な項目を設定して下さい 102

シミュレーションによる再現性 CPU コア単体でのシミュレーションとなります EWARM_DebuggingGuide.JPN.pdf に C-SPY シミュレータは ターゲットプロセッサの機能をソフトウェアで完全にシミュレーションするため ハードウェアがすべて揃っていなくてもプログラムロジックをデバッグできます と記載があるように シミュレータは実機がない場合などに多く用いられており 実機がある場合には実機を用いてのソフト開発が適しています 103

EWARM 付録情報 EWARM の最適化 www.iar.com

最適化 最適化の設定 105

最適化 最適化レベル なし 低 *1 中 高 ( バランス ) *2 高 ( 速度 ) 高 ( サイズ ) *1 ビルド構成がDebugの場合の初期値 *2 ビルド構成がReleaseの場合の初期値 デバッグ時は なし か 低 に設定してください 106

最適化 最適化とデバッグ の情報保持 変数の位置情報 変数のスコープおよび存在情報 ステップポイント ステップ実 時のソースコードと機械語の対応 関数のステップイン / アウト ブレークポイントの設置 コールスタック情報 関数を特定する情報およびコールスタック内での変数情報 最適化レベル 変数の位置情報 ステップポイント コールスタック情報 なし 保持 保持 保持 低 ほぼ保持 保持 保持 中 保持されない 保持 保持 保持されない 保持されない 保持 107

最適化 最適化の適 範囲 プロジェクト全体 ソースグループ単位 ソースコード単位 関数単位 プロジェクト全体 ソースグループ単位 関数単位 ソースコード単位 108

最適化 最適化の適 範囲 プロジェクト全体 ソースグループ単位 ソースコード単位 関数単位 グループまたはソースコード個別に上書きする際には [ 継承した設定をオーバーライド ] にチェック ダブルクリック 109

最適化 最適化の適 範囲 プロジェクト全体 ソースグループ単位 ソースコード単位 関数単位 #pragma optimize の直下に記述された関数のみ適用される ファイルソースに適用されている最適化レベルを下げる方向にのみ指定可能 ファイルの最適化レベルが [ 中 ] のコードに対して #pragma optimize= high は適用できない 関数単位 110

最適化 最適化例 1: 共通部分式除去 if ( a - b * c / 150 % 12 == 5) do_something(); : : return(a - b * c / 150 + 5); コンパイラは 予め a - b * c / 150 を計算する関数を作成し 評価式とリターン値で結果を使用する 111

最適化 最適化例 2: ループ展開 for ( i = 0; i < 3; i++) { j[i] = i; } j[0] = 0; j[0] = 1; j[0] = 2; 112

最適化 最適化の考え方 最適化の手法は 効果が一定の効果が保証されるものではなくコンパイラによって発見的 探索的に適用されます 最適化の考え方 デバッグのしやすさ メンテナンスのしやすさを考慮し サイズの削減が必要なコード 処理速度の追求が必要なコードごとに 適用範囲 ( ソースファイル / グループ ) を限定して 高い最適化レベルを適用することを推奨いたします 各適用モジュール毎に単体テストを行い 効果的な最適化オプションを試行してください 113

EWARM 付録情報 EWARM の便利な開発テクニック www.iar.com

RAM 上での関数実行 ramfunc キーワードを関数の前に追加するだけ ramfunc void foo(void); 注意 : main 関数開始前には使用できません 115

デバッグ開始と同時にプログラムをスタート [ デバッガ ] [Run to] に exit を指定するだけ 116

EWARM 付録情報 EWARM の速度性能評価手順 www.iar.com

速度の性能評価の全体手順 1. プロジェクトのビルド設定 1. 適切なCPUの選択 2. コンパイラオプション設定 3. リンカ設定 4. デバッガ設定 2. ソースコード上の設定 1. CPU クロックの設定 2. ITMイベントの埋め込み *M3/M4のみ 3. RAM 関数化 3. ビルド結果の評価 1..map ファイルからの情報 4. 処理時間の測定 *M3/M4 のみ 1. SWO トレース (ITM イベント ) の利 118

1. プロジェクトのビルド設定 1. 適切な CPU の選択 119

1. プロジェクトのビルド設定 2. コンパイラオプション設定 [ 最適化 ] 最適化レベル [ ] のときのみ [ 速度 ][ サイズ ][ バランス ] の選択が可能 120

1. プロジェクトのビルド設定 2. コンパイラオプション設定 [ 複数ファイルのコンパイル ] C C C まとめてコンパイルすることで最適化の効率上昇 C デバッグは困難になる 121

1. プロジェクトのビルド設定 3. リンカ設定 [ 最適化 ] 122

1. プロジェクトのビルド設定 3. リンカ設定 [ コードを RAM に展開 ] リンカ設定ファイルの中 をエディタで編集 例 //initialize by copy { readwrite }; initialize by copy { readonly, readwrite }; 詳細は [ ヘルプ ] [Embedded Workbench C/C++ 開発ガイド ] コードを初期化する (ROM から RAM にコピーする ) を参照 123

1. プロジェクトのビルド設定 3. リンカ設定 [ リスト ] ビルド時に map ファイルが同時 成される 124

1. プロジェクトのビルド設定 4. デバッガ設定 [J-Link/J-Trace] [ 設定 ] CPU クロックを実際のクロックと合わせる 125

1. プロジェクトのビルド設定 4. デバッガ設定 [J-Link/J-Trace] [SWD] インタフェースで SWD を選択 (ITM イベント ) 126

2. ソースコード上の設定 1.CPU クロックの設定 測定対象箇所の前で PLL の設定やプリスケーラの設定などを搭載しているクロックに合わせて う 実際のコードやサンプルプロジェクトやデータシートを参照 127

2. ソースコード上の設定 2.ITM イベントの埋め込み #include arn_itm.h を記述 ITM_EVENT8_WITH_PC(1,0); 測定対象箇所 ITM_EVENT8_WITH_PC(1,100); と記述 ITM_EVENTn_WITH_PC(Channel,value); 128

2. ソースコード上の設定 3.RAM 関数化 ramfunc を対象の関数の前に設定リンカ設定で [ コードを RAM に展開 ] を適 している場合は効果なし 129

3. ビルド結果の評価 1.map ファイルからの情報 Outout フォルダのプロジェクト名.map ファイルをダブルクリック 130

3. ビルド結果の評価 1.map ファイルからの情報 ROM サイズ RAM サイズの確認 必要な ROM サイズ 896 + 5,124 = 6020 必要な RAM サイズ 5,088 + 13,828 = 18,916 RAM 上にコードをコピーして実 するときのみ出現 131

3. ビルド結果の評価 1.map ファイルからの情報 最 スタック使 サイズの静的解析情報 確保する必要があるスタックサイズ 132

4. 処理時間の測定 1. SWO トレース (ITM イベント ) の利 デバッグウィンドウを開く 133

4. 処理時間の測定 1. SWO トレース (ITM イベント ) の利 イベントのペイン上で右クリック 134

4. 処理時間の測定 1. SWO トレース (ITM イベント ) の利 ITM_EVENT8_WITH_PC の経過時間が表 される イベントの上でマウスオーバー 135

参考サンプルプロジェクトの実測値 Drhystone を独 にカスタマイズしたプロジェクト コンパイラ最適化 * 追加オプション 1 * 追加オプション 2 ROM (CODE) ROM RAM (CODE) ROM (DATA) RAM (DATA) 最 Stack 経過時間 (μ 秒 ) 相対効率 なし 6548 0 144 13830 240 128,500 1.0 低 6488 0 144 13830 232 122,500 1.1 中 6172 0 16 13832 248 97,375 1.3 ( 速度 ) 6064 0 16 13828 248 65,000 2.0 ( 速度 ) 複数コンパイル 5860 0 16 13828 240 32,000 4.0 ( 速度 ) リンカ最適化 5852 0 16 13828 248 65,000 2.0 ( 速度 ) RAMコピー 850 5088 5126 13828 248 57,125 2.2 ( 速度 ) 複数コンパイル RAMコピー 1556 4188 4224 13828 240 32,625 3.9 ( 速度 ) RAM 実 6104 0 16 13828 248 53,500 2.4 ( 速度 ) 複数コンパイル RAM 実 5860 0 16 13828 240 26,500 4.8 デバッグ に全てを RAM に 最適化を何もしないときを 1 とする きいほうが速い 136

参考サンプルプロジェクトの実測値 Drhystone を独 にカスタマイズしたプロジェクト コンパイラ最適化 * 追加オプション 1 * 追加オプション 2 ROM (CODE) ROM RAM (CODE) ROM (DATA) RAM (DATA) 最 Stack 経過時間 (μ 秒 ) 相対効率 なし 6548 0 144 13830 240 128,500 1.0 低 6488 0 144 13830 232 122,500 1.1 中 6172 0 16 13832 248 97,375 1.3 ( 速度 ) 6064 0 16 13828 248 65,000 2.0 ( 速度 ) 複数コンパイル 5860 0 16 13828 240 32,000 4.0 ( 速度 ) リンカ最適化 5852 0 16 13828 248 65,000 2.0 ( 速度 ) RAMコピー 850 5088 5126 13828 248 57,125 2.2 ( 速度 ) 複数コンパイル RAMコピー 1556 4188 4224 13828 240 32,625 3.9 ( 速度 ) RAM 実 6104 0 16 13828 248 53,500 2.4 ( 速度 ) 複数コンパイル RAM 実 5860 0 16 13828 240 26,500 4.8 このアプリケーションにおいては 最適化 : ( 速度 ) が有効 複数コンパイルが有効 ROM のアクセスがボトルネックになっている (Wait がある ) ため コードの RAM 化が有効 有効な設定はプロジェクトによって異なる 137

EWARM 付録情報 EWARM 関連情報 URL www.iar.com

EWARM 関連情報 URL IAR システムズ株式会社 HP http://www.iar.com/jp 製品ページ http://www.iar.com/jp/products/ マイページ http://www.iarsys.co.jp/customer/ お問い合わせ http://www.iarsys.co.jp/customer/inquiries 評価版ダウンロードページ http://www.iar.com/jp/service-center/downloads/ サポート窓口メールアドレス support.jp@iar.com 139

EWARM 関連情報 URL FAQ http://www.iarsys.co.jp/customer/faqs 技術情報のページ http://www.iar.com/jp/service-center/resources/ 参考になる検索キーワードの例 : Coresight technique debug Trace 140

EWARM 関連情報 URL ARM 社 HP( 日本 ) http://www.arm.com/ja/index.php シリアルワイヤデバッグ解説 http://www.arm.com/ja/products/system-ip/debug-trace/coresight-soccomponents/serial-wire-debug.php ETM 解説 http://www.arm.com/ja/products/system-ip/debug-trace/trace-macrocellsetm/index.php CMSIS 解説 http://www.arm.com/ja/products/processors/cortex-m/cortex-microcontrollersoftware-interface-standard.php 141