• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
141
0
0

読み込み中.... (全文を見る)

全文

(1)

www.iar.com

EWARM付録情報

IAR システムズ株式会社

(2)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 2

目次

EWARMのマニュアルガイド

ARMの命令セット

インストールファイルとドキュメント

EWARMのオプション設定概要

ビルド時の生成ファイル

スタートアップシーケンス

CortexのCoreSight

デバッグコネクタ情報

SWV(SWO)機能

ETMトレース機能

デバッグウィンドウ

シミュレータ機能

EWARMの最適化

EWARMの便利な開発テクニック

EWARMの速度性能評価手順

EWARM関連情報URL

Update Update

(3)

www.iar.com

EWARM付録情報

(4)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 4

EWARMのマニュアルガイド

インフォメーションセンタからのリンク

(5)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 5

EWARMのマニュアルガイド

インフォメーションセンタ

→ユーザガイド (1/3)

M0 / M0+ M3 / M4

・・・EWARMを使った開発の手順

・・・アプリケーションとしてのIDEの使い方

・・・EWARMのデバッグ設定・使い方

・・・コンパイラ/リンカの設定方法・使い方

・・・アセンブラの設定方法・使い方

・・・旧バージョンからのアップデート注意

・・・MISRA-C:1998チェッカの使用方法・説明

・・・MISRA-C:2004チェッカの使用方法・説明

(6)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 6

EWARMのマニュアルガイド

インフォメーションセンタ

→ユーザガイド (2/3)

M0 / M0+ M3 / M4

・・・インストール手順・ライセンスのクイックガイド

・・・インストール手順・ライセンスの詳細

・・・エミュレータ(ICE)固有のマニュアル

・・・CMSIS規格説明(ARM社提供)

(7)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 7

EWARMのマニュアルガイド

ソフトウェア構成とマニュアルの関係

M0 / M0+ M3 / M4

IAR Embedd Workbench IDE

IAR Embedd Workbench IDE

IDEツール

IDEツール

エディタ プロジェクト マネージャ ライブラリ ビルダ ライブラリアン

ビルドツー

ビルドツー

IAR C/C++ コンパイラ アセンブラ リンカ

IAR C-SPY

デバッガ

IAR C-SPY

デバッガ

シミュレータ ハードウェア システムドライバ Powerデバッグ RTOSプラグイン

設定

開発

デバッグ

(8)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 8

EWARMのマニュアルガイド

推奨するマニュアル参照順序

M0 / M0+ M3 / M4

IAR Embedded Workbenchの使用開始の手順

IDEユーザガイド

C/C++コンパイラリファレンスガイド

C-SPYデバッガガイド

エミュレータ(ICE)固有のマニュアル

ILINK設定ガイド

※http://www.iar.com/Global/KK_pages/IAR日本法人作成ガイド UserGuide/EW_IlinkGuide.JPN.pdf EWARM全体概要の把握 アプリ操作 プロジェクト設定 コンパイラ設定 リンカ設定 リンカ設定実践 デバッグ設定 デバッグ手法 ICEのスペック 取り扱い方法

開発フェーズ

(9)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 9

EWARMのマニュアルガイド

IAR Embedded Workbenchの標準的なマニュアル構成

M0 / M0+ M3 / M4

Part.1

関連モジュールの概要説明

Part.2

関連モジュールの詳細説

教科書

辞書

(10)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 10

EWARMのマニュアルガイド

Embedded Workbench IDEユーザガイド 章目次

M0 / M0+ M3 / M4

パート

1. プロジェクト管理とビルド

・開発環境

・プロジェクト管理

・ビルド

・編集

パート

2. リファレンス情報

・インストールファイル

・IAR Embedded Workbench IDE リファレンス

・一般オプション

・コンパイラオプション

・アセンブラオプション

・出力コンバータオプション

・カスタムビルドオプション

・ビルドアクションオプション

・リンカのオプション

・ライブラリビルダオプション

(11)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 11

EWARMのマニュアルガイド

C/C++コンパイラリファレンスガイド 章目次

M0 / M0+ M3 / M4

パート

1. ビルドツール

IAR ビルドツールの概要

・組込みアプリケーションの開発

・データ記憶

・関数

・ILINK を使用したリンク

・アプリケーションのリンク

DLIB ランタイムライブラリ

・アセンブラ言語インタフェース

C の使用

・C++ の使用

・アプリケーションに関する考慮事項

・組込みアプリケーション用の効率的なコーディ

ング

パート

2. リファレンス情報

・外部インタフェースの詳細

・コンパイラオプション

・リンカオプション

・データ表現

・拡張キーワード

・プラグマディレクティブ

・組込み関数

・プリプロセッサ

・ライブラリ関数

・リンカ設定ファイル

・セクションリファレンス

・スタック使用制御ファイル

IAR ユーティリティ

C 規格の処理系定義の動作

・C89 の処理系定義の動作

(12)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 12

EWARMのマニュアルガイド

C-SPYデバッガガイド 章目次

M0 / M0+ M3 / M4

IAR C-SPY デバッガ

C-SPY を使用するにあたって

・アプリケーションの実行

・変数と式の扱い

・ブレークポイントの使用

・メモリとレジスタのモニタ

JTAGjet ドライバでのトレースデータの収集と使用

・トレースデータの収集と使用

・プロファイラの使用

Power ドメインのデバッグ

・コードカバレッジ

・割込み

C-SPY マクロの使用

C-SPY コマンドラインユーティリティ — cspybat

・デバッガオプション

・C-SPY ドライバについての追加情報

・フラッシュローダの使用

(13)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 13

EWARMのマニュアルガイド

同梱ドキュメント一覧

1/2

M0 / M0+ M3 / M4

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

[Program Files]→[IAR Systems]→[IAR Embedded Workbench for ARM ***]→[arm]→[doc]

・・・デバッガ用DDFファイルフォーマット

・・・ヘッダファイルフォーマット

・・・ヘッダファイルテンプレート

ENU:英語版 JPN:日本語版 上記がないものは英語版

(14)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 14

EWARMのマニュアルガイド

同梱ドキュメント一覧

2/2

M0 / M0+ M3 / M4

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

[Program Files]→[IAR Systems]→[IAR Embedded Workbench for ARM ***]→[arm]→[doc]

・・・フラッシュローダ開発ガイド

ENU:英語版 JPN:日本語版

(15)

www.iar.com

EWARM付録情報

(16)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 16

ARMの命令セット

M0 / M0+ M3 / M4

ARMの命令種類

命令セット ビット 特徴 ARM 32bit フル命令セット*パフォーマンス⾼いがコード密度低い

Thumb 16bit ARM命令のサブセット*コード密度⾼いがパフォーマンスやや低い

Thumb2 16bit + 32bit Thumb命令のスーパーセット*パフォーマンスおよびコード密度⾼い ARMv6-M

Thumb 16bit + 32bit Thumb2命令のサブセット

名称 ビット 特徴

ARM6 ARM命令

ARM7 ARM9

ARM11 ARM命令+Thumb命令

命令セットを使い分ける際にはCPUのモード切替が必要

Cortex-M3/M4 Thumb2命令 CPUモードを変えることなく必要に応じて32bit命令を使⽤

Cortex-M0/M0+ ARMv6-MThumb ほとんどの16bitThumb命令と、重要な6個の32bit Thumb命令

(17)

www.iar.com

EWARM付録情報

(18)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 18

インストールファイル

(1)

インストールファイルの構成

M0 / M0+ M3 / M4

EWARM 固有のファイル

EW 製品共通のファイル

ルートディレクトリ

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

(19)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 19 o

arm¥bin

各コンポーネントの実行ファイル

o

arm¥config

開発環境、プロジェクト設定に使用するファイル

o

arm¥doc

リリースノート、ユーザガイド

o

arm¥drivers

C-SPYデバッガで必要なデバイスドライバ

o

arm¥example

サンプルプロジェクト

o

arm¥inc

ヘッダファイル

o

arm¥lib

ライブラリファイル

o

arm¥plugin

プラグインモジュール

o

arm¥src

ライブラリ関連のソースファイル

o

arm¥tutor

チュートリアルプロジェクトファイル

インストールファイル

(2)

arm ディレクトリの内容

M0 / M0+ M3 / M4

(20)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 20 o

common¥bin

共通コンポーネント用の実行ファイル

o

common¥config

IDE設定保存用に使用されるファイル

o

common¥doc

リリースノート、ユーザガイド

o

common¥plugin

プラグインモジュール

インストールファイル

(3)

Commonディレクトリの内容

M0 / M0+ M3 / M4

(21)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 21

重要マニュアル

M0 / M0+ M3 / M4

IAR Embedd Workbench IDE

IAR Embedd Workbench IDE

IDEツール

IDEツール

エディタ プロジェクト マネージャ ライブラリ ビルダ ライブラリアン

ビルドツー

ビルドツー

IAR C/C++ コンパイラ アセンブラ リンカ

IAR C-SPY

デバッガ

IAR C-SPY

デバッガ

シミュレータ ハードウェア システムドライバ Powerデバッグ RTOSプラグイン

設定

開発

デバッグ

(22)

www.iar.com

EWARM付録情報

(23)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 23

EWARMのオプション設定概要

ツールオプションとプロジェクトオプション

M0 / M0+ M3 / M4

PCに保存されるツール全般オプション

プロジェクト固有のオプション設定

(24)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 24

ツールオプション概要

M0 / M0+ M3 / M4 表⽰・操作性 カスタマイズ ビルドメッセージカ スタマイズ ビルド動作等 カスタマイズ ソースコード管理 カスタマイズ デバッグ時スタック 解析動作等 カスタマイズ デバッガ動作等 カスタマイズ

(25)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 25

プロジェクトオプション概要

M0 / M0+ M3 / M4

開発フロー

ターゲット設定

ライブラリ設定

コンパイラ設定

最適化など

リンカ設定

メモリ配置、

チェックサム

デバッグ⽤設定

ICE

選択

書き込み設定

ICE

固有の設定

リセット・速度

(26)

www.iar.com

EWARM付録情報

(27)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 27

ビルド時の生成ファイル

生成ファイル一覧

M0 / M0+ M3 / M4

project1

└─Debug

├─Exe

│ project1.

out

│ project1.

srec

└─List

project1.

map

Tutor.

lst

Utilities.

lst

tutor_library

└─Debug

└─Exe

tutor_library.

a

生成ファイル

説明

.out

実行可能ファイル

(Elf/Dwarf形式)

.a

ライブラリファイル

.srec (, .hex, .sim)

Flashライター用などに変換されたファ

イル

[プロジェクト]→[オプション]→[出力コンバータ]→ [追加出力ファイルを生成]にチェック

.map

リンク後のマップファイル

[プロジェクト]→[オプション]→[リンカ]→[リスト]→ [リンカマップファイルの表示]

.lst

Cソースファイル毎の静的解析情報

[プロジェクト]→[オプション]→[C/C++コンパイラ]→ [リスト]→[リストファイルの出力]

(28)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 28

ビルド時の生成ファイル

.outファイル

M0 / M0+ M3 / M4

(29)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 29

ビルド時の生成ファイル

.aファイル

M0 / M0+ M3 / M4

(30)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 30

ビルド時の生成ファイル

.srec(.hex, .sim)ファイル

M0 / M0+ M3 / M4 S010000070726F6A656374312E73726563EC S11300003804002019030000B3020000B30200000A S1130010B3020000B3020000B302000000000000BD S1130020000000000000000000000000B302000017 S1130030B302000000000000B3020000B30200009D S113004038B52D2401201349486012490860022064 S1130050040024B20A2C0FDA24B2200000F00DF8B8 ・・・ S1130280A142F8D110BD00BF2C0000004C000000BA S11302B07047FEE7DDFFFFFF2C0000000800002070 S11302C000000000BBFEFFFF080000005800000013 S11302D0000000200000000000F009F8002801D010 S11302E0FFF7C0FF0020FFF7ADFF00F002F8012088 S11302F0704700F001B800000746384600F002F8E5 S1130300FBE7000080B5FFF751FF024A11001820F7 S1130310ABBEFBE726000200C046C046C046C0464E S10F0320FFF7DAFFFFFFFFFFFFFFFFFF06 S9030319E0

(31)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 31

ビルド時の生成ファイル

.mapファイル

M0 / M0+ M3 / M4 *** 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

(32)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 32

ビルド時の生成ファイル

.lstファイル

M0 / M0+ M3 / M4 ¥ 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

(33)

www.iar.com

EWARM付録情報

(34)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 34

スタートアップシーケンス

M0 / M0+ M3 / M4

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

__cmain:

bl __low_level_init ; low_level_init.c

bl __iar_data_init3 ; initialize data sections, init¥data_init3.c bl main

int main (void) { …… }

void xxx_InterruptHandler (void) { …… }

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 main()前の初期化: thumb¥cmain.s User’s Application: IAR DLIB ランライム ライブラリの コード ただし 上書き可能 ユーザコード 参照 ジャンプ

(35)

www.iar.com

EWARM付録情報

(36)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 36

CoreSight™テクノロジー:

機能・接続まとめ

M0 / M0+ M3 / M4 名称 接続 ICE 基本機能 特徴 JTAG I-jet J-Link JTAGjet ○ ・バウンダリスキャン ・printfデバッグ SWD I-jet J-Link JTAGjet ○ ・必要信号数:2本 ・SWV使⽤可能 ・printfデバッグ TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -名称 接続 ICE トレース⽅式 特徴 SWV I-jet J-Link JTAGjet サンプリング ・パソコンにリアルタイム転送 ・PC(プログラムカウンタ)取得 ・特定データのサンプリング ・例外処理のトレース ・(⾼速)prinfデバッグ ・ピン数:1 ・データ⽋落可能性→⼤ ETM JTAGjet -Trace J-Trace 分岐トレース (実⾏) ・ICEのメモリに保存→ブレーク時にパソコンに転送 ・実⾏履歴を確実に追跡 ・対応しているかはCPU依存 ・タイムスタンプは誤差あり ・データ⽋落可能性→⼩ ※データ線の本数に依存する TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -CLK D0 D1 D2 D3

デバッグ制御

トレース機能

*M3/M4のみ

Serial Wire Debug

Serial Wire Viewer

Serial Wire Output

1,2,4本 から選択

*JTAG-Traceは4本(4bit)固定

(37)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 37

CoreSight™テクノロジー:

可能組み合わせ

M3 / M4

JTAG

SWD

SWV

ETM

TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO -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 CLK D0 D1 D2 D3 CLK D0 D1 D2 D3 ※ETMおよびSWVを同時に使⽤する際は、SWVのトレース データはETMトレースバッファで収集され、実⾏が 停⽌したタイミングで、表⽰更新されます。

(38)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 38

CoreSight™テクノロジー:

トレースタイミング

M3 / M4

main()

sub_1()

sub_2()

main()

sub_1()

sub_2()

SWVトレース

ETMトレース

トレース情報が取得できない ⼀定間隔でサンプリング プログラムが分岐するタイミングでトレースバッファに出⼒

(39)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 39

CoreSight™テクノロジー:

よくある質問

M0 / M0+ M3 / M4

Q. デバッグに最⼩限必要なピン数は?

デバイスと開発環境がSWDに対応していれば、3もしくは4本。

SWDデバッグで、最低限必要なピン数は3本(I/O、クロック、グラウン

ド)、もしくはこれにリセットを加えた4本。リセット機能は必須機能ではな

いため、最低ということであれば3本。

※グラウンドの本数が少ないと信号が弱くなったりノイズがのるリスクありま

す。(Jtagだと通常5本程度使⽤)。⼀般的にはおそらくグラウンドは1本で

も開発可能ですが、この精度は、基板やICEの品質にも関わってくるためユー

ザー様にて確認の必要があります。

※SWDは、⼀般的にCortex A,R,Mに対応していますが、デバッガとデバイス

が共にSWDに対応していることが条件となります。

(40)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 40

CoreSight™テクノロジー:

機能・接続まとめ

M0 / M0+ M3 / M4

Q. SWDを使⽤すると信号線が減るが、クロック差やスピード差はあ

るか?

SWDやJTAGと⽐べて信号線が減りますが、実際にはCPUとの通信以外の制御

部分が処理の⼤半を占めるため、デバッガの動作速度の低下を体感することは

ありません。

Q. JTAGとSWDを⽐べて、できることできないことは?

[JTAGでできてSWDできないこと]

JTAG本来の機能である端⼦のバウンダリスキャンテスト

[SWDでできてJTAGでできないこと]

トレース機能であるSWVトレース

[その他SWDのメリット]

デバッグ⽤の端⼦数の現象( 5->2 )

上記に伴うコネクタ実装⾯積の現象

(41)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 41

CoreSight™テクノロジー:

関連

URL

M0 / M0+ M3 / M4

ARM社HPの解説

SWD

http://www.arm.com/ja/products/system-ip/debug-trace/coresight-soc-components/serial-wire-debug.php

ETM

http://www.arm.com/ja/products/system-ip/debug-trace/trace-macrocells-etm/index.php

(42)

www.iar.com

EWARM付録情報

(43)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 43

デバッグインタフェースコネクタ

:I-jet(1)

ハーフピッチ

20ピンコネクタ:MIPI-20(JTAG, SWD/SWV)

M0 / M0+ M3 / M4

標準対応(ケーブル付)

11pin, 13pinから5V供給可能

(44)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 44

デバッグインタフェースコネクタ

:I-jet(2)

ハーフピッチ

10ピンコネクタ:MIPI-10(JTAG, SWD/SWV)

M0 / M0+ M3 / M4

標準対応(ケーブル付)

ピン配置はハーフピッチ

19ピンコネクタの1~10番と同じ

(45)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 45

デバッグインタフェースコネクタ

:I-jet(3)

標準ピッチ

20ピン変換アダプタ:ARM-20(JTAG,SWD/SWV用)

M0 / M0+ M3 / M4

アダプタ標準添付

19pinから5V供給可能

(46)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 46

デバッグインタフェースコネクタ

:JTAGjet-trace

ハーフピッチ

20ピンコネクタ:MIPI-20(JTAG/,SWD, ETM)

M0 / M0+ M3 / M4

標準対応(ケーブル付)

※ピン機能詳細は「

ETMトレース機能」を参照

(47)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 47

デバッグインタフェースコネクタ

:J-Link(1)

標準ピッチ

20ピンコネクタ(JTAG、SWD/SWV用)

M0 / M0+ M3 / M4

JTAG接続

SWD/SWV接続

J-Link、J-Traceでは標準対応(ケーブ

ル付)

19pinから5V供給可能

(48)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 48

デバッグインタフェースコネクタ

:J-Link(2)

ハーフピッチ

19ピンコネクタ(JTAG、SWD/SWV

M0 / M0+ M3 / M4

J-Traceでは標準対応(ケーブル付)

J-Linkで使用する場合は変換ケーブル(別売)が必要

11pin, 13pinから電源供給可能

(49)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 49

デバッグインタフェースコネクタ

:J-Link(3)

ハーフピッチ

9ピンコネクタ(JTAG、SWD/SWV用)

M0 / M0+ M3 / M4

J-Link、J-Traceで使用する場合は変換ケーブル(別売)が必要

ピン配置はハーフピッチ

19ピンコネクタの1~10番と同じ

(50)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 50

デバッグインタフェースコネクタ例

M0 / M0+ M3 / M4

コネクタ種類

コネクタ例

ハーフピッチ

20(19)pin

*MIPI-20

SAMTEC:FTSH-110-01-L-DV-K

ハーフピッチ

10(9)pin

*MIPI-10

SAMTEC:FTSH-105-01-L-DV-K

フルピッチ

20(19)pin

*ARM-20

Harting:09185206803

Molex:90635-1202

Tyco Electronics:2-215882-0

*J-Linkマニュアルではキーpinを除いて19pin/9pinと記述

(51)

www.iar.com

EWARM付録情報

(52)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 52

MCU

の対応

Cortex-M3/M4

SWV

トレース対応エミュレータ(ICE)

I-jet / I-jet-Lite / SEGGER

社 J-Linkが対応

コネクタの対応

SWO

ピンの接続に対応したコネクタが必要

接続⽅式

SWD

接続を選択

レジスタ設定によるSWOポートピンの有効化

MCU

によってはSWOポートピンが多重化されて他の機能に割り当てられていること

があるため、FWまたはマクロで有効化する必要がある

SWV機能の使用条件

M3 / M4

(53)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 53

SWV対応コネクタ

M3 / M4

SWD接続

(54)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 54

SWV機能使用時のプロジェクト設定

M3 / M4

[デバッガ]

[I-jet / JTAGjet]

[設定]→[ドライバ]を[I-jet/JTAGjet]を選択

[I-jet/JTAGjet] → [JTAG/SWD]で

インタフェースに

[SWD]を選択

[一般オプション]→ライブラリ設定

stdout/stderrがSWO経由になっていると

強制的に

SWDが選択される

(55)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 55

SWV(SWO)機能:SWVトレース

M3 / M4

■こんなときに・・・

• コードの流れをバックトレースしたい • コード実⾏時のタイムスタンプを⾒たい など *補⾜ • SWVトレースは1秒間に数千サンプリング程 度なので、実⾏コード全てを追うことできな い。

(56)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 56

SWV(SWO)機能:SWVトレース 使用方法

M3 / M4

1.SWOトレースウィンドウ設定

2. SWOトレース

3. デバッグ開始

3. 右クリックして[有効]

(57)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 57

SWV(SWO) 機能:コードカバレッジ

M3 / M4

■こんなときに・・・

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

(58)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 58

SWV(SWO)機能:コードカバレッジ 使用方法

M3 / M4

SWVトレースが可能な状態で・・

1.コードカバレッジ

2.右クリックして[有効化]

3.デバッグ実行

4.[更新]

コードカバレッジが更新表示される

(59)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 59

SWV(SWO) 機能:データログ

M3 / M4

■こんなときに・・・

• 特定の変数やアドレスへの読み書きアクセ スをロギングしたい。 • 上記アクセスの時間を知りたい など *補⾜ • 変数またはアドレスは4つまで指定可能

(60)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 60

SWV(SWO)機能:データアクセスサマリー

M3 / M4

■こんなときに・・・

データアクセスが何回あったか、読み書き が何回あったか確認したい。 など *補⾜ • 「すべてのアクセス」数が読み書きアクセス の合計より⼤きい場合、アクセスの属性情報 が正確にとれなかったサンプリングがある。

(61)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 61

SWV(SWO)機能:データアクセス

:タイムライン

M3 / M4

■こんなときに・・・

• データの変わったタイミングを時間軸上で みたい • 他の割り込みなどとの時間関係を⾒たい など *補⾜ • ⾚い箇所はオーバフローが発⽣

(62)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 62

SWV(SWO)機能:データログ 使用方法 (1/2)

M3 / M4

1.静的変数上で右クリック

2.’変数’のデータログブレークポイントを設定

3.[表示]→[ブレークポイント]

4.右クリックして[編集]

5.ログ対象アクションを選択

(63)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 63

SWV(SWO)機能:データログ 使用方法 (2/2)

M3 / M4

1.データログ

2.右クリックして有効化

1.デバッグ開始

(64)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 64

SWV(SWO)機能:割り込みログ

M3 / M4

■こんなときに・・・

• プログラム実⾏中に発⽣した割り込みや例 外をロギングしたい • 割り込みハンドラ関数の処理でかかった時 間を知りたい など

(65)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 65

SWV(SWO)機能:割り込みログ一覧

M3 / M4

■こんなときに・・・

• 各割れ込みの発⽣回数や発⽣頻度を確認し たい など

(66)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 66

SWV(SWO)機能:割り込みログ:タイムライン

M3 / M4

■こんなときに・・・

割り込みの発⽣タイミングを時間軸上で⾒ たい • 割り込みハンドラの処理にかかった時間を 時間軸上で⾒たい • その他のイベントとの関係を時間軸上で⾒ たい など

(67)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 67

SWV(SWO)機能:割込みログ 使用方法

M3 / M4

1.割込みログ

2.右クリックして[有効化]

(68)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 68

SWV(SWO)機能:ITMイベント:ログ

M3 / M4

■こんなときに・・・

コードの実⾏タイミングを正確に知りたい実⾏時の変数の値を⾒たい • マルチタスクの各タスク⼊り⼝出⼝に仕掛 けて、タスク状況を把握したい など *補⾜ • ソースコード上で 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

(69)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 69

SWV(SWO)機能:ITMイベント:サマリー

M3 / M4

■こんなときに・・・

• 各チャンネルのITMイベント発⽣回数や頻 度を知りたい • 実⾏時間が適正な間隔になっているか知り たい • ウォッチしている値が適正な値になってい るか知りたい など

(70)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 70

SWV(SWO)機能:ITMイベント:タイムライン

M3 / M4

■こんなときに・・・

• ITMイベントの発⽣タイミングを時間軸上 で⾒たい • 各ITMイベント間の関係や割り込みなどの と関係を時間軸上で⾒たい • イベント間をドラッグドップで、経過時間 を知りたい など

(71)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 71

SWV(SWO)機能:ITMイベント 使用方法

M3 / M4

1.arm_itm.hをインクルード

2.マクロをコードに記述

4.イベントログ

5.右クリックして[有効化]

6.デバッグ開始

3.ビルド&ダウンロード

(72)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 72

SWV(SWO)機能:タイムライン表示 使用方法

M3 / M4

1.タイムライン

2.表示したい機能の上で右クリックして[有効化]

3. 右クリックして[ズーム]→[任意の時間軸]

4. デバッグ開始

(73)

www.iar.com

EWARM付録情報

(74)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 74

MCU

の対応

ETM

機能の実装はMCUベンダの選択による

Trace Data

ピン(1-4本)はMCUベンダの選択による

トレース機能付きエミュレータ(ICE)を使⽤

JTAGjet-Trace

が対応

SEGGER

社J-Traceが対応

コネクタの対応

トレースピンの接続に対応したコネクタが必要

レジスタ設定によるトレースポートピンの有効化

MCU

によってはトレースポートピンが多重化されて他の機能に割り当てられて

いることがあるため、FWまたはマクロで有効化する必要がある

ETMトレース機能の使用条件

M3 / M4

(75)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 75

ETMトレース対応コネクタ

M3 / M4

ETMトレース用クロック

(76)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 76

ETMトレース使用時のプロジェクト設定:

JTAGjet-trace

M3 / M4

[デバッガ]

[I-jet / JTAGjet]

[設定]→[ドライバ]を[I-jet/JTAGjet]を選択

[I-jet/JTAGjet]の特別な設定はなし

(77)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 77

デバッグ画面での

[ETMトレース設定]

M3 / M4

※デフォルト設定で動作可能

設定項目の詳細は

[ヘルプ]→[Embedded Workbench デバッグガイド]

を参照

(78)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 78

ETMトレース用のブレークポイント設定

M3 / M4

トレース取得を開始したいコード上で

右クリックし、

[ブレークポイントの切り替え(トレース開始)]

を指定

トレースを停止したいコード上で

[ブレークポイントの切り替え(トレース停止)]

を指定

※ブレークしたときに、トレースデータが

ICEから読み出され画面に表示される

(79)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 79

ETMトレース機能:[ETMトレース]

M3 / M4

[ETMトレース]

(80)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 80

ETMトレース機能:[ETM関数トレース]

M3 / M4

[ETM関数トレース]

ETMトレースで取得したデータを

関数遷移で表示

(81)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 81

ETMトレース機能:[コードカバレッジ]

M3 / M4

[逆アセンブリ]→[コードカバレッジ]

(82)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 82

ETMトレース機能:

[タイムライン]→[コールスタック]

M3 / M4

(83)

www.iar.com

EWARM付録情報

(84)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 84

デバッグウィンドウ:ブレークポイント

M0 / M0+ M3 / M4

■こんなときに・・・

• ブレークポイントの⼀覧が⾒たい • ブレークポイントを貼っているソースコー ドに⾶びたい • ⼀時的にブレークポイントを全て無効にし てデバッグしたい。 • ブレークポイントを削除したい • ブレークポイントを編集したい など

(85)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 85

デバッグウィンドウ:逆アセンブリ

M0 / M0+ M3 / M4

■こんなときに・・・

アセンブラレベルでステップ実⾏したい実⾏中のアドレスを⾒たい • ライブラリなど、ソースファイルのないプ ログラムをデバッグしたい。 • 最適化の影響を確認したい など

(86)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 86

デバッグウィンドウ:メモリ

M0 / M0+ M3 / M4

■こんなときに・・・

• 現在のメモリの値を⾒たい • メモリをPC上の保存したいメモリ上でデータを検索したい など

(87)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 87

デバッグウィンドウ:シンボルメモリ

M0 / M0+ M3 / M4

■こんなときに・・・

• アドレス順に変数や関数の⼀覧を⾒たい。 など

(88)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 88

デバッグウィンドウ:レジスタ

M0 / M0+ M3 / M4

■こんなときに・・・

現在の各種レジスタの値が⾒たいデバッグ⽤にレジスタの値を変えてみたい など

(89)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 89

デバッグウィンドウ:ウォッチ

M0 / M0+ M3 / M4

■こんなときに・・・

• 特定の静的変数やグローバル変数の値をモ ニタリングしたい • ローカル変数の値をスコープ内でモニタリ ングしたい など

(90)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 90

デバッグウィンドウ:ローカル

M0 / M0+ M3 / M4

■こんなときに・・・

• 関数内のローカル変数や引数を⾃動的にモ ニタリングしたい など

(91)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 91

デバッグウィンドウ:静的変数

M0 / M0+ M3 / M4

■こんなときに・・・

• プログラム内の静的変数やグローバル変数 を⾃動的にモニタリングしたい など

(92)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 92

デバッグウィンドウ:自動

(オート)

M0 / M0+ M3 / M4

■こんなときに・・・

• ステップ実⾏でデバッグをしているときに 近辺の変数や関数情報を⾃動的にモニタリ ングしたい など

(93)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 93

デバッグウィンドウ:ライブウォッチ

M0 / M0+ M3 / M4

■こんなときに・・・

• 特定の静的変数やグローバル変数を、プロ グラム実⾏状態のまま定期的にモニタリン グしたい など

(94)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 94

デバッグウィンドウ:クイックウォッチ

M0 / M0+ M3 / M4

■こんなときに・・・

• 変数を簡単な式で評価したい * data > 200 など 真なら1 • 任意のタイミングでC-Spyマクロを実⾏し たい など *補⾜ • C-Spyマクロは⾮常に強⼒かつ柔軟 [ヘルプ]→[Embedded Workbench デバッ グガイド]の[C-SPY マクロの使⽤]を参照

(95)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 95

デバッグウィンドウ:呼び出しスタック

M0 / M0+ M3 / M4

■こんなときに・・・

• 実⾏中の関数の呼び出し元を知りたい • 各関数の引数も⾒たい など

(96)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 96

デバッグウィンドウ:スタック

M0 / M0+ M3 / M4

■こんなときに・・・

現在のスタック使⽤状況を⾒たい • 現在のスタック使⽤率を⾒たい • それまでの最⼤スタック使⽤量を知りたい など *補⾜ • OSを搭載している場合、OS側で各タスクの スタックを管理するので、別途プラグインな どを活⽤してスタック管理

(97)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 97

デバッグウィンドウ:ブレークポイント

M0 / M0+ M3 / M4

■こんなときに・・・

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

(98)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 98

デバッグウィンドウ:イメージ

M0 / M0+ M3 / M4

■こんなときに・・・

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

(99)

www.iar.com

EWARM付録情報

(100)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 100

シミュレータの設定

M0 / M0+ M3 / M4

(101)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 101

シュミレータでできること

M0 / M0+ M3 / M4

3.割込みを

疑似発生

C-SPYシミュレータで出来ることは以下の通りとなります。

1. 命令レベルのシミュレーション

2. メモリの構成、検証

3. 割込みシミュレーション

4. イミディエイトブレークポイントとC-SPY マクロシステムを使用した周辺シ

ミュレーション

1.CPUコア

4.

C-SPYマクロ

周辺の模擬

デフォルトではCPUコア単体

+メモリの状態でのシミュレーションが可能

です。

周辺や割込みを使うシミュレーションは

3または4に関してユーザ側で準備

が必要となります。

2.メモリ

(102)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 102

割込みシミュレーション

M0 / M0+ M3 / M4 ① ② ③ ④

⑤必要な項目を設定して下さい。

ここでは、

3の割込みシミュレーションの用い方を説明します

シミュレータ動作時に、①シミュレータ

→②割込み設定

割込み設定画面で、③割込みシミュレーションを有効にするをONに

④新規作成を押す

割込みの編集画面になるので、⑤初回の割込みを起こしたいサイクル、周期など

を設定してください。あとは通常の手順でシミュレーションを実施ください。

(103)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 103

シミュレーションによる再現性

M0 / M0+ M3 / M4

CPUコア単体でのシミュレーションとなります。

EWARM_DebuggingGuide.JPN.pdfに「C-SPY シミュレー

タは、ターゲットプロセッサの機能をソフトウェアで完全

にシミュレーションするため、ハードウェアがすべて揃っ

ていなくてもプログラムロジックをデバッグできます。」

と記載があるように、シミュレータは実機がない場合など

に多く用いられており、実機がある場合には実機を用いて

のソフト開発が適しています。

(104)

www.iar.com

EWARM付録情報

(105)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 105

最適化

最適化の設定

(106)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 106 •

なし

*1

高(バランス)

*2

高(速度)

高(サイズ)

*1 ビルド構成がDebugの場合の初期値

*2 ビルド構成がReleaseの場合の初期値

※ デバッグ時は、「なし」か「低」に設定してください。

最適化

最適化レベル

M0 / M0+ M3 / M4

(107)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 107 •

変数の位置情報

変数のスコープおよび存在情報

ステップポイント

ステップ実⾏時のソースコードと機械語の対応

関数のステップイン/アウト

ブレークポイントの設置

コールスタック情報

関数を特定する情報およびコールスタック内での変数情報

最適化

最適化とデバッグ⽤の情報保持

M0 / M0+ M3 / M4

最適化レベル

変数の位置情報

ステップポイント

コールスタック情報

なし

保持

保持

保持

ほぼ保持

保持

保持

保持されない

保持

保持

保持されない

保持されない

保持

(108)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 108 •

プロジェクト全体

ソースグループ単位

ソースコード単位

関数単位

最適化

最適化の適⽤範囲

M0 / M0+ M3 / M4

プロジェクト全体

ソースグループ単位

ソースコード単位

関数単位

(109)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 109 •

プロジェクト全体

ソースグループ単位

ソースコード単位

関数単位

最適化

最適化の適⽤範囲

M0 / M0+ M3 / M4

ダブルクリック

グループまたはソースコード個別に上書きする際には

[継承した設定をオーバーライド]にチェック

(110)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 110 •

プロジェクト全体

ソースグループ単位

ソースコード単位

関数単位

最適化

最適化の適⽤範囲

M0 / M0+ M3 / M4

関数単位

#pragma optimize の直下に記述された関数のみ

適用される。

ファイルソースに適用されている最適化レベルを

下げる方向にのみ指定可能。

※ファイルの最適化レベルが

[中]のコードに対して

#pragma optimize= high は適用できない。

(111)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 111

最適化

最適化例

1:共通部分式除去

M0 / M0+ M3 / M4

if (

a - b * c / 150

% 12 == 5) do_something();

:

:

return(

a - b * c / 150

+ 5);

コンパイラは 、予め

a - b * c / 150

を計算する関数を作成

し、評価式とリターン値で結果を使用する。

(112)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 112

最適化

最適化例

2:ループ展開

M0 / M0+ M3 / M4

for ( i = 0; i < 3; i++)

{

j[i] = i;

}

j[0] = 0;

j[0] = 1;

j[0] = 2;

(113)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 113

最適化の手法は、効果が一定の効果が保証されるものではなく

コンパイラによって発見的、探索的に適用されます。

最適化

最適化の考え方

M0 / M0+ M3 / M4

デバッグのしやすさ、メンテナンスのしやすさを考慮し、サイズの削減が必要な

コード、処理速度の追求が必要なコードごとに、適用範囲(ソースファイル

/グ

ループ)を限定して、高い最適化レベルを適用することを推奨いたします。

各適用モジュール毎に単体テストを行い、効果的な最適化オプションを試行して

ください。

最適化の考え方

(114)

www.iar.com

EWARM付録情報

(115)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 115

RAM上での関数実行

__ramfunc キーワードを関数の前に追加するだけ

M0 / M0+ M3 / M4

__ramfunc void foo(void);

注意

:

(116)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 116

デバッグ開始と同時にプログラムをスタート

[デバッガ]→[Run to]に__exitを指定するだけ

(117)

www.iar.com

EWARM付録情報

(118)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 118

速度の性能評価の全体手順

M0 / M0+ M3 / M4

1.

プロジェクトのビルド設定

1.

適切なCPUの選択

2.

コンパイラオプション設定

3.

リンカ設定

4.

デバッガ設定

2.

ソースコード上の設定

1.

CPUクロックの設定

2.

ITMイベントの埋め込み *M3/M4のみ

3.

RAM関数化

3.

ビルド結果の評価

1.

.mapファイルからの情報

4.

処理時間の測定 *M3/M4のみ

1.

SWOトレース(ITMイベント)の利⽤

(119)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 119

1.プロジェクトのビルド設定

1.適切なCPUの選択

(120)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 120

1.プロジェクトのビルド設定

2.コンパイラオプション設定

M0 / M0+ M3 / M4

最適化レベル[⾼]のときのみ

[速度][サイズ][バランス]の選択が可能

[最適化]

(121)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 121

1.プロジェクトのビルド設定

2.コンパイラオプション設定

M0 / M0+ M3 / M4

[複数ファイルのコンパイル]

C

C

C

C

まとめてコンパイルすることで

最適化の効率上昇

※デバッグは困難になる

(122)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 122

1.プロジェクトのビルド設定

3.リンカ設定

M0 / M0+ M3 / M4

(123)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 123

1.プロジェクトのビルド設定

3.リンカ設定

M0 / M0+ M3 / M4

[

コードをRAMに展開]

※例

//initialize by copy { readwrite };

initialize by copy { readonly, readwrite };

リンカ設定ファイルの中⾝をエディタで編集

詳細は[ヘルプ]→[Embedded Workbench C/C++開発ガイド]

コードを初期化する(ROM から RAM にコピーする)を参照

(124)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 124

1.プロジェクトのビルド設定

3.リンカ設定

M0 / M0+ M3 / M4

[リスト]

ビルド時にmapファイルが同時⽣成される

(125)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 125

1.プロジェクトのビルド設定

4.デバッガ設定

M0 / M0+ M3 / M4

[J-Link/J-Trace]→[設定]

CPUクロックを実際のクロックと合わせる

(126)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 126

1.プロジェクトのビルド設定

4.デバッガ設定

M0 / M0+ M3 / M4

[J-Link/J-Trace]→[SWD]

インタフェースでSWDを選択(ITMイベント⽤)

(127)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 127

2.ソースコード上の設定

1.CPUクロックの設定

M0 / M0+ M3 / M4

測定対象箇所の前でPLLの設定やプリスケーラの設定などを

搭載しているクロックに合わせて⾏う。

※実際のコードやサンプルプロジェクトやデータシートを参照

(128)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 128

2.ソースコード上の設定

2.ITMイベントの埋め込み

M3 / M4

#include “arn_itm.h”

を記述

ITM_EVENT8_WITH_PC(1,0);

測定対象箇所

ITM_EVENT8_WITH_PC(1,100);

と記述

※ITM_EVENTn_WITH_PC(Channel,value);

(129)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 129

2.ソースコード上の設定

3.RAM関数化

M0 / M0+ M3 / M4

__ramfuncを対象の関数の前に設定

リンカ設定で[コードをRAMに展開]を適⽤している場合は効果なし。

(130)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 130

3.ビルド結果の評価

1.mapファイルからの情報

M0 / M0+ M3 / M4

(131)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 131

3.ビルド結果の評価

1.mapファイルからの情報

M0 / M0+ M3 / M4

ROMサイズ、RAMサイズの確認

必要なROMサイズ

896 + 5,124 = 6020

必要なRAMサイズ

5,088 + 13,828 = 18,916

RAM上にコードをコピーして実⾏するときのみ出現

(132)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 132

3.ビルド結果の評価

1.mapファイルからの情報

M0 / M0+ M3 / M4

最⼤スタック使⽤サイズの静的解析情報

確保する必要があるスタックサイズ

(133)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 133

4.処理時間の測定

1. SWOトレース(ITMイベント)の利⽤

M3 / M4

デバッグウィンドウを開く

(134)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 134

4.処理時間の測定

1. SWOトレース(ITMイベント)の利⽤

M3 / M4

(135)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 135

4.処理時間の測定

1. SWOトレース(ITMイベント)の利⽤

M3 / M4

ITM_EVENT8_WITH_PCの

経過時間が表⽰される

イベントの上でマウスオーバー

(136)

www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 136

※参考 サンプルプロジェクトの実測値

Drhystoneを独⾃にカスタマイズしたプロジェクト

M0 / M0+ M3 / M4

コンパイラ最適化 *追加オプション1 *追加オプション2 ROM(CODE) ROM→RAM(CODE) (DATA)ROM (DATA) 最⼤StackRAM 経過時間(μ秒) 相対効率

なし 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とする

※⼤きいほうが速い

参照

関連したドキュメント

(*) OPJTAG 自動設定機能:デバイスのデバッグ時の接続インタフェース種別は、オプションバイトレジスタの

機能名 機能 表示 設定値. トランスポーズ

①アプリをアンインストール スタート > 設定 > アプリ > アプリと機能 > Docan Browser5. ②関連ファイル削除(1)

評価 ○当該機器の機能が求められる際の区画の浸水深は,同じ区 画内に設置されているホウ酸水注入系設備の最も低い機能

操作は前章と同じです。但し中継子機の ACSH は、親機では無く中継器が送信する電波を受信します。本機を 前章①の操作で

評価 ○当該機器の機能が求められる際の区画の浸水深は,同じ区 画内に設置されているホウ酸水注入系設備の最も低い機能

○当該機器の機能が求められる際の区画の浸水深は,同じ区 画内に設置されているホウ酸水注入系設備の最も低い機能

 工学の目的は社会における課題の解決で す。現代社会の課題は複雑化し、柔軟、再構