www.iar.com
EWARM付録情報
IAR システムズ株式会社
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 Updatewww.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 4
EWARMのマニュアルガイド
インフォメーションセンタからのリンク
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チェッカの使用方法・説明
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 6
EWARMのマニュアルガイド
インフォメーションセンタ
→ユーザガイド (2/3)
M0 / M0+ M3 / M4・・・インストール手順・ライセンスのクイックガイド
・・・インストール手順・ライセンスの詳細
・・・エミュレータ(ICE)固有のマニュアル
・・・CMSIS規格説明(ARM社提供)
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プラグイン設定
開発
デバッグ
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のスペック 取り扱い方法開発フェーズ
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 9
EWARMのマニュアルガイド
IAR Embedded Workbenchの標準的なマニュアル構成
M0 / M0+ M3 / M4
Part.1
関連モジュールの概要説明
Part.2
関連モジュールの詳細説
明
教科書
辞書
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 リファレンス
・一般オプション
・コンパイラオプション
・アセンブラオプション
・出力コンバータオプション
・カスタムビルドオプション
・ビルドアクションオプション
・リンカのオプション
・ライブラリビルダオプション
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 の処理系定義の動作
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 12
EWARMのマニュアルガイド
C-SPYデバッガガイド 章目次
M0 / M0+ M3 / M4IAR C-SPY デバッガ
・
C-SPY を使用するにあたって
・アプリケーションの実行
・変数と式の扱い
・ブレークポイントの使用
・メモリとレジスタのモニタ
・
JTAGjet ドライバでのトレースデータの収集と使用
・トレースデータの収集と使用
・プロファイラの使用
・
Power ドメインのデバッグ
・コードカバレッジ
・割込み
・
C-SPY マクロの使用
・
C-SPY コマンドラインユーティリティ — cspybat
・デバッガオプション
・C-SPY ドライバについての追加情報
・フラッシュローダの使用
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 13
EWARMのマニュアルガイド
同梱ドキュメント一覧
1/2
M0 / M0+ M3 / M4AVIXPluginIarEwarm_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:日本語版 上記がないものは英語版www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 14
EWARMのマニュアルガイド
同梱ドキュメント一覧
2/2
M0 / M0+ M3 / M4EWARM_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:日本語版
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 16
ARMの命令セット
M0 / M0+ M3 / M4ARMの命令種類
命令セット ビット 特徴 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命令
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 18
インストールファイル
(1)
インストールファイルの構成
M0 / M0+ M3 / M4EWARM 固有のファイル
EW 製品共通のファイル
ルートディレクトリ
各コンポーネントの実行ファイル CMSIS関連ファイル 開発環境、プロジェクト設定に使用するファイル リリースノート、ユーザガイド C-SPYデバッガで必要なデバイスドライバ サンプルプロジェクト ヘッダファイル ライブラリファイル プラグインモジュール RTOS関連ファイル ライブラリ関連のソースファイル チュートリアルプロジェクトファイル 共通コンポーネント用の実行ファイル IDE設定保存用に使用されるファイル リリースノート、ユーザガイド プラグインモジュールwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 19 o
arm¥bin
各コンポーネントの実行ファイル
oarm¥config
開発環境、プロジェクト設定に使用するファイル
oarm¥doc
リリースノート、ユーザガイド
oarm¥drivers
C-SPYデバッガで必要なデバイスドライバ
oarm¥example
サンプルプロジェクト
oarm¥inc
ヘッダファイル
oarm¥lib
ライブラリファイル
oarm¥plugin
プラグインモジュール
oarm¥src
ライブラリ関連のソースファイル
oarm¥tutor
チュートリアルプロジェクトファイル
インストールファイル
(2)
arm ディレクトリの内容
M0 / M0+ M3 / M4www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 20 o
common¥bin
共通コンポーネント用の実行ファイル
ocommon¥config
IDE設定保存用に使用されるファイル
ocommon¥doc
リリースノート、ユーザガイド
ocommon¥plugin
プラグインモジュール
インストールファイル
(3)
Commonディレクトリの内容
M0 / M0+ M3 / M4www.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プラグイン設定
開発
デバッグ
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 23
EWARMのオプション設定概要
ツールオプションとプロジェクトオプション
M0 / M0+ M3 / M4PCに保存されるツール全般オプション
プロジェクト固有のオプション設定
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 24
ツールオプション概要
M0 / M0+ M3 / M4 表⽰・操作性 カスタマイズ ビルドメッセージカ スタマイズ ビルド動作等 カスタマイズ ソースコード管理 カスタマイズ デバッグ時スタック 解析動作等 カスタマイズ デバッガ動作等 カスタマイズwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 25
プロジェクトオプション概要
M0 / M0+ M3 / M4開発フロー
ターゲット設定
ライブラリ設定
コンパイラ設定
※
最適化など
リンカ設定
※
メモリ配置、
チェックサム
デバッグ⽤設定
ICE
選択
書き込み設定
ICE
固有の設定
※
リセット・速度
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 27
ビルド時の生成ファイル
生成ファイル一覧
M0 / M0+ M3 / M4project1
└─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++コンパイラ]→ [リスト]→[リストファイルの出力]www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 28
ビルド時の生成ファイル
.outファイル
M0 / M0+ M3 / M4
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 29
ビルド時の生成ファイル
.aファイル
M0 / M0+ M3 / M4
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 S9030319E0www.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
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 3031 /* 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
www.iar.com
EWARM付録情報
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 ランライム ライブラリの コード ただし 上書き可能 ユーザコード 参照 ジャンプ
www.iar.com
EWARM付録情報
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)固定
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 37
CoreSight™テクノロジー:
可能組み合わせ
M3 / M4JTAG
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トレースバッファで収集され、実⾏が 停⽌したタイミングで、表⽰更新されます。www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 38
CoreSight™テクノロジー:
トレースタイミング
M3 / M4main()
sub_1()
sub_2()
main()
sub_1()
sub_2()
SWVトレース
ETMトレース
トレース情報が取得できない ⼀定間隔でサンプリング プログラムが分岐するタイミングでトレースバッファに出⼒www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 39
CoreSight™テクノロジー:
よくある質問
M0 / M0+ M3 / M4Q. デバッグに最⼩限必要なピン数は?
デバイスと開発環境がSWDに対応していれば、3もしくは4本。
SWDデバッグで、最低限必要なピン数は3本(I/O、クロック、グラウン
ド)、もしくはこれにリセットを加えた4本。リセット機能は必須機能ではな
いため、最低ということであれば3本。
※グラウンドの本数が少ないと信号が弱くなったりノイズがのるリスクありま
す。(Jtagだと通常5本程度使⽤)。⼀般的にはおそらくグラウンドは1本で
も開発可能ですが、この精度は、基板やICEの品質にも関わってくるためユー
ザー様にて確認の必要があります。
※SWDは、⼀般的にCortex A,R,Mに対応していますが、デバッガとデバイス
が共にSWDに対応していることが条件となります。
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 40
CoreSight™テクノロジー:
機能・接続まとめ
M0 / M0+ M3 / M4Q. SWDを使⽤すると信号線が減るが、クロック差やスピード差はあ
るか?
SWDやJTAGと⽐べて信号線が減りますが、実際にはCPUとの通信以外の制御
部分が処理の⼤半を占めるため、デバッガの動作速度の低下を体感することは
ありません。
Q. JTAGとSWDを⽐べて、できることできないことは?
[JTAGでできてSWDできないこと]
JTAG本来の機能である端⼦のバウンダリスキャンテスト
[SWDでできてJTAGでできないこと]
トレース機能であるSWVトレース
[その他SWDのメリット]
デバッグ⽤の端⼦数の現象( 5->2 )
上記に伴うコネクタ実装⾯積の現象
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 41
CoreSight™テクノロジー:
関連
URL
M0 / M0+ M3 / M4ARM社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
www.iar.com
EWARM付録情報
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供給可能
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番と同じ
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供給可能
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トレース機能」を参照
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 47
デバッグインタフェースコネクタ
:J-Link(1)
標準ピッチ
20ピンコネクタ(JTAG、SWD/SWV用)
M0 / M0+ M3 / M4JTAG接続
SWD/SWV接続
J-Link、J-Traceでは標準対応(ケーブ
ル付)
19pinから5V供給可能
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 48
デバッグインタフェースコネクタ
:J-Link(2)
ハーフピッチ
19ピンコネクタ(JTAG、SWD/SWV
M0 / M0+ M3 / M4J-Traceでは標準対応(ケーブル付)
J-Linkで使用する場合は変換ケーブル(別売)が必要
11pin, 13pinから電源供給可能
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 49
デバッグインタフェースコネクタ
:J-Link(3)
ハーフピッチ
9ピンコネクタ(JTAG、SWD/SWV用)
M0 / M0+ M3 / M4J-Link、J-Traceで使用する場合は変換ケーブル(別売)が必要
ピン配置はハーフピッチ
19ピンコネクタの1~10番と同じ
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と記述
www.iar.com
EWARM付録情報
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 / M4www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 53
SWV対応コネクタ
M3 / M4
SWD接続
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が選択される
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 55
SWV(SWO)機能:SWVトレース
M3 / M4■こんなときに・・・
• コードの流れをバックトレースしたい • コード実⾏時のタイムスタンプを⾒たい など *補⾜ • SWVトレースは1秒間に数千サンプリング程 度なので、実⾏コード全てを追うことできな い。www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 56
SWV(SWO)機能:SWVトレース 使用方法
M3 / M41.SWOトレースウィンドウ設定
2. SWOトレース
3. デバッグ開始
3. 右クリックして[有効]
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 57
SWV(SWO) 機能:コードカバレッジ
M3 / M4■こんなときに・・・
• 実装されているコードが想定通りに実⾏さ れているか確認したい。 など *補⾜ • デフォルトで有効となっている「コードカバ レッジ」プラグインの機能を使⽤ • サンプリングタイミングにより、抜け落ちる ことがあるが、⻑時間トレースすることで信 頼性のあるデータとなる。www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 58
SWV(SWO)機能:コードカバレッジ 使用方法
M3 / M4※
SWVトレースが可能な状態で・・
1.コードカバレッジ
2.右クリックして[有効化]
3.デバッグ実行
4.[更新]
コードカバレッジが更新表示される
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 59
SWV(SWO) 機能:データログ
M3 / M4■こんなときに・・・
• 特定の変数やアドレスへの読み書きアクセ スをロギングしたい。 • 上記アクセスの時間を知りたい など *補⾜ • 変数またはアドレスは4つまで指定可能www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 60
SWV(SWO)機能:データアクセスサマリー
M3 / M4■こんなときに・・・
• データアクセスが何回あったか、読み書き が何回あったか確認したい。 など *補⾜ • 「すべてのアクセス」数が読み書きアクセス の合計より⼤きい場合、アクセスの属性情報 が正確にとれなかったサンプリングがある。www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 61
SWV(SWO)機能:データアクセス
:タイムライン
M3 / M4■こんなときに・・・
• データの変わったタイミングを時間軸上で みたい • 他の割り込みなどとの時間関係を⾒たい など *補⾜ • ⾚い箇所はオーバフローが発⽣www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 62
SWV(SWO)機能:データログ 使用方法 (1/2)
M3 / M41.静的変数上で右クリック
2.’変数’のデータログブレークポイントを設定
3.[表示]→[ブレークポイント]
4.右クリックして[編集]
5.ログ対象アクションを選択
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 63
SWV(SWO)機能:データログ 使用方法 (2/2)
M3 / M41.データログ
2.右クリックして有効化
1.デバッグ開始
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 64
SWV(SWO)機能:割り込みログ
M3 / M4■こんなときに・・・
• プログラム実⾏中に発⽣した割り込みや例 外をロギングしたい • 割り込みハンドラ関数の処理でかかった時 間を知りたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 65
SWV(SWO)機能:割り込みログ一覧
M3 / M4■こんなときに・・・
• 各割れ込みの発⽣回数や発⽣頻度を確認し たい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 66
SWV(SWO)機能:割り込みログ:タイムライン
M3 / M4■こんなときに・・・
• 割り込みの発⽣タイミングを時間軸上で⾒ たい • 割り込みハンドラの処理にかかった時間を 時間軸上で⾒たい • その他のイベントとの関係を時間軸上で⾒ たい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 67
SWV(SWO)機能:割込みログ 使用方法
M3 / M4
1.割込みログ
2.右クリックして[有効化]
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.pdfwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 69
SWV(SWO)機能:ITMイベント:サマリー
M3 / M4■こんなときに・・・
• 各チャンネルのITMイベント発⽣回数や頻 度を知りたい • 実⾏時間が適正な間隔になっているか知り たい • ウォッチしている値が適正な値になってい るか知りたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 70
SWV(SWO)機能:ITMイベント:タイムライン
M3 / M4■こんなときに・・・
• ITMイベントの発⽣タイミングを時間軸上 で⾒たい • 各ITMイベント間の関係や割り込みなどの と関係を時間軸上で⾒たい • イベント間をドラッグドップで、経過時間 を知りたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 71
SWV(SWO)機能:ITMイベント 使用方法
M3 / M41.arm_itm.hをインクルード
2.マクロをコードに記述
4.イベントログ
5.右クリックして[有効化]
6.デバッグ開始
3.ビルド&ダウンロード
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 72
SWV(SWO)機能:タイムライン表示 使用方法
M3 / M41.タイムライン
2.表示したい機能の上で右クリックして[有効化]
3. 右クリックして[ズーム]→[任意の時間軸]
4. デバッグ開始
www.iar.com
EWARM付録情報
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 / M4www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 75
ETMトレース対応コネクタ
M3 / M4
ETMトレース用クロック
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]の特別な設定はなし
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 77
デバッグ画面での
[ETMトレース設定]
M3 / M4※デフォルト設定で動作可能
設定項目の詳細は
[ヘルプ]→[Embedded Workbench デバッグガイド]
を参照
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 78
ETMトレース用のブレークポイント設定
M3 / M4トレース取得を開始したいコード上で
右クリックし、
[ブレークポイントの切り替え(トレース開始)]
を指定
トレースを停止したいコード上で
[ブレークポイントの切り替え(トレース停止)]
を指定
※ブレークしたときに、トレースデータが
ICEから読み出され画面に表示される
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 79
ETMトレース機能:[ETMトレース]
M3 / M4
[ETMトレース]
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 80
ETMトレース機能:[ETM関数トレース]
M3 / M4[ETM関数トレース]
ETMトレースで取得したデータを
関数遷移で表示
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 81
ETMトレース機能:[コードカバレッジ]
M3 / M4
[逆アセンブリ]→[コードカバレッジ]
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 82
ETMトレース機能:
[タイムライン]→[コールスタック]
M3 / M4
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 84
デバッグウィンドウ:ブレークポイント
M0 / M0+ M3 / M4■こんなときに・・・
• ブレークポイントの⼀覧が⾒たい • ブレークポイントを貼っているソースコー ドに⾶びたい • ⼀時的にブレークポイントを全て無効にし てデバッグしたい。 • ブレークポイントを削除したい • ブレークポイントを編集したい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 85
デバッグウィンドウ:逆アセンブリ
M0 / M0+ M3 / M4■こんなときに・・・
• アセンブラレベルでステップ実⾏したい • 実⾏中のアドレスを⾒たい • ライブラリなど、ソースファイルのないプ ログラムをデバッグしたい。 • 最適化の影響を確認したい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 86
デバッグウィンドウ:メモリ
M0 / M0+ M3 / M4■こんなときに・・・
• 現在のメモリの値を⾒たい • メモリをPC上の保存したい • メモリ上でデータを検索したい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 87
デバッグウィンドウ:シンボルメモリ
M0 / M0+ M3 / M4■こんなときに・・・
• アドレス順に変数や関数の⼀覧を⾒たい。 などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 88
デバッグウィンドウ:レジスタ
M0 / M0+ M3 / M4■こんなときに・・・
• 現在の各種レジスタの値が⾒たい • デバッグ⽤にレジスタの値を変えてみたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 89
デバッグウィンドウ:ウォッチ
M0 / M0+ M3 / M4■こんなときに・・・
• 特定の静的変数やグローバル変数の値をモ ニタリングしたい • ローカル変数の値をスコープ内でモニタリ ングしたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 90
デバッグウィンドウ:ローカル
M0 / M0+ M3 / M4■こんなときに・・・
• 関数内のローカル変数や引数を⾃動的にモ ニタリングしたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 91
デバッグウィンドウ:静的変数
M0 / M0+ M3 / M4■こんなときに・・・
• プログラム内の静的変数やグローバル変数 を⾃動的にモニタリングしたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 92
デバッグウィンドウ:自動
(オート)
M0 / M0+ M3 / M4■こんなときに・・・
• ステップ実⾏でデバッグをしているときに 近辺の変数や関数情報を⾃動的にモニタリ ングしたい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 93
デバッグウィンドウ:ライブウォッチ
M0 / M0+ M3 / M4■こんなときに・・・
• 特定の静的変数やグローバル変数を、プロ グラム実⾏状態のまま定期的にモニタリン グしたい など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 マクロの使⽤]を参照www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 95
デバッグウィンドウ:呼び出しスタック
M0 / M0+ M3 / M4■こんなときに・・・
• 実⾏中の関数の呼び出し元を知りたい • 各関数の引数も⾒たい などwww.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 96
デバッグウィンドウ:スタック
M0 / M0+ M3 / M4■こんなときに・・・
• 現在のスタック使⽤状況を⾒たい • 現在のスタック使⽤率を⾒たい • それまでの最⼤スタック使⽤量を知りたい など *補⾜ • OSを搭載している場合、OS側で各タスクの スタックを管理するので、別途プラグインな どを活⽤してスタック管理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などに変更可能www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 98
デバッグウィンドウ:イメージ
M0 / M0+ M3 / M4■こんなときに・・・
• 現在のイメージ(デバッグ情報)を確認し たい など *補⾜ • ブートローダプロジェクトなどで複数バイナ リをデバッグするとき以外は出番なしwww.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 100
シミュレータの設定
M0 / M0+ M3 / M4
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 101
シュミレータでできること
M0 / M0+ M3 / M43.割込みを
疑似発生
C-SPYシミュレータで出来ることは以下の通りとなります。
1. 命令レベルのシミュレーション
2. メモリの構成、検証
3. 割込みシミュレーション
4. イミディエイトブレークポイントとC-SPY マクロシステムを使用した周辺シ
ミュレーション
1.CPUコア
4.
C-SPYマクロ
周辺の模擬
デフォルトではCPUコア単体
+メモリの状態でのシミュレーションが可能
です。
周辺や割込みを使うシミュレーションは
3または4に関してユーザ側で準備
が必要となります。
2.メモリ
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 102
割込みシミュレーション
M0 / M0+ M3 / M4 ① ② ③ ④⑤必要な項目を設定して下さい。
ここでは、
3の割込みシミュレーションの用い方を説明します
シミュレータ動作時に、①シミュレータ
→②割込み設定
割込み設定画面で、③割込みシミュレーションを有効にするをONに
④新規作成を押す
割込みの編集画面になるので、⑤初回の割込みを起こしたいサイクル、周期など
を設定してください。あとは通常の手順でシミュレーションを実施ください。
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 103
シミュレーションによる再現性
M0 / M0+ M3 / M4CPUコア単体でのシミュレーションとなります。
EWARM_DebuggingGuide.JPN.pdfに「C-SPY シミュレー
タは、ターゲットプロセッサの機能をソフトウェアで完全
にシミュレーションするため、ハードウェアがすべて揃っ
ていなくてもプログラムロジックをデバッグできます。」
と記載があるように、シミュレータは実機がない場合など
に多く用いられており、実機がある場合には実機を用いて
のソフト開発が適しています。
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 105
最適化
最適化の設定
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 106 •
なし
•低
*1
•中
•高(バランス)
*2
•高(速度)
•高(サイズ)
*1 ビルド構成がDebugの場合の初期値
*2 ビルド構成がReleaseの場合の初期値
※ デバッグ時は、「なし」か「低」に設定してください。
最適化
最適化レベル
M0 / M0+ M3 / M4www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 107 •
変数の位置情報
•変数のスコープおよび存在情報
•ステップポイント
•ステップ実⾏時のソースコードと機械語の対応
•関数のステップイン/アウト
•ブレークポイントの設置
•コールスタック情報
•関数を特定する情報およびコールスタック内での変数情報
最適化
最適化とデバッグ⽤の情報保持
M0 / M0+ M3 / M4最適化レベル
変数の位置情報
ステップポイント
コールスタック情報
なし
保持
保持
保持
低
ほぼ保持
保持
保持
中
保持されない
保持
保持
⾼
保持されない
保持されない
保持
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 108 •
プロジェクト全体
•ソースグループ単位
•ソースコード単位
•関数単位
最適化
最適化の適⽤範囲
M0 / M0+ M3 / M4プロジェクト全体
ソースグループ単位
ソースコード単位
関数単位
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 109 •
プロジェクト全体
•ソースグループ単位
•ソースコード単位
•関数単位
最適化
最適化の適⽤範囲
M0 / M0+ M3 / M4ダブルクリック
グループまたはソースコード個別に上書きする際には
[継承した設定をオーバーライド]にチェック
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 110 •
プロジェクト全体
•ソースグループ単位
•ソースコード単位
•関数単位
最適化
最適化の適⽤範囲
M0 / M0+ M3 / M4関数単位
#pragma optimize の直下に記述された関数のみ
適用される。
ファイルソースに適用されている最適化レベルを
下げる方向にのみ指定可能。
※ファイルの最適化レベルが
[中]のコードに対して
#pragma optimize= high は適用できない。
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 111
最適化
最適化例
1:共通部分式除去
M0 / M0+ M3 / M4if (
a - b * c / 150
% 12 == 5) do_something();
:
:
return(
a - b * c / 150
+ 5);
コンパイラは 、予め
a - b * c / 150
を計算する関数を作成
し、評価式とリターン値で結果を使用する。
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 112
最適化
最適化例
2:ループ展開
M0 / M0+ M3 / M4for ( i = 0; i < 3; i++)
{
j[i] = i;
}
j[0] = 0;
j[0] = 1;
j[0] = 2;
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 113
最適化の手法は、効果が一定の効果が保証されるものではなく
コンパイラによって発見的、探索的に適用されます。
最適化
最適化の考え方
M0 / M0+ M3 / M4デバッグのしやすさ、メンテナンスのしやすさを考慮し、サイズの削減が必要な
コード、処理速度の追求が必要なコードごとに、適用範囲(ソースファイル
/グ
ループ)を限定して、高い最適化レベルを適用することを推奨いたします。
各適用モジュール毎に単体テストを行い、効果的な最適化オプションを試行して
ください。
最適化の考え方
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 115
RAM上での関数実行
__ramfunc キーワードを関数の前に追加するだけ
M0 / M0+ M3 / M4
__ramfunc void foo(void);
注意
:
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 116
デバッグ開始と同時にプログラムをスタート
[デバッガ]→[Run to]に__exitを指定するだけ
www.iar.com
EWARM付録情報
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 118
速度の性能評価の全体手順
M0 / M0+ M3 / M41.
プロジェクトのビルド設定
1.適切なCPUの選択
2.コンパイラオプション設定
3.リンカ設定
4.デバッガ設定
2.
ソースコード上の設定
1.CPUクロックの設定
2.ITMイベントの埋め込み *M3/M4のみ
3.RAM関数化
3.
ビルド結果の評価
1..mapファイルからの情報
4.
処理時間の測定 *M3/M4のみ
1.SWOトレース(ITMイベント)の利⽤
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 119
1.プロジェクトのビルド設定
1.適切なCPUの選択
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 120
1.プロジェクトのビルド設定
2.コンパイラオプション設定
M0 / M0+ M3 / M4最適化レベル[⾼]のときのみ
[速度][サイズ][バランス]の選択が可能
[最適化]
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 121
1.プロジェクトのビルド設定
2.コンパイラオプション設定
M0 / M0+ M3 / M4[複数ファイルのコンパイル]
C
C
C
C
まとめてコンパイルすることで
最適化の効率上昇
※デバッグは困難になる
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 122
1.プロジェクトのビルド設定
3.リンカ設定
M0 / M0+ M3 / M4
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 にコピーする)を参照
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 124
1.プロジェクトのビルド設定
3.リンカ設定
M0 / M0+ M3 / M4[リスト]
ビルド時にmapファイルが同時⽣成される
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 125
1.プロジェクトのビルド設定
4.デバッガ設定
M0 / M0+ M3 / M4[J-Link/J-Trace]→[設定]
CPUクロックを実際のクロックと合わせる
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イベント⽤)
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 127
2.ソースコード上の設定
1.CPUクロックの設定
M0 / M0+ M3 / M4測定対象箇所の前でPLLの設定やプリスケーラの設定などを
搭載しているクロックに合わせて⾏う。
※実際のコードやサンプルプロジェクトやデータシートを参照
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);
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 129
2.ソースコード上の設定
3.RAM関数化
M0 / M0+ M3 / M4__ramfuncを対象の関数の前に設定
リンカ設定で[コードをRAMに展開]を適⽤している場合は効果なし。
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 130
3.ビルド結果の評価
1.mapファイルからの情報
M0 / M0+ M3 / M4
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 131
3.ビルド結果の評価
1.mapファイルからの情報
M0 / M0+ M3 / M4ROMサイズ、RAMサイズの確認
必要なROMサイズ
896 + 5,124 = 6020
必要なRAMサイズ
5,088 + 13,828 = 18,916
RAM上にコードをコピーして実⾏するときのみ出現
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 132
3.ビルド結果の評価
1.mapファイルからの情報
M0 / M0+ M3 / M4最⼤スタック使⽤サイズの静的解析情報
確保する必要があるスタックサイズ
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 133
4.処理時間の測定
1. SWOトレース(ITMイベント)の利⽤
M3 / M4
デバッグウィンドウを開く
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 134
4.処理時間の測定
1. SWOトレース(ITMイベント)の利⽤
M3 / M4
www.iar.com Copyright(C)2014 IAR SYSTEMS, All rights reserved. 135
4.処理時間の測定
1. SWOトレース(ITMイベント)の利⽤
M3 / M4ITM_EVENT8_WITH_PCの
経過時間が表⽰される
イベントの上でマウスオーバー
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