Rev 1.10.00

IAR（EWARM）ツールチェインの設定と必要事項の説明（ルネサス ＲＺ／Ａ１Ｈ用)
IAR(EWARM)ツールチェインの設定方法とサンプルプロジェクト「IAR_debug_rz」に必要な設定を説明します。
１．IAR Embedded Workbench IDE を起動する。
１）【ファイル】－【開く】－【ワークスペース】を選択する。

２）ワークスペースファイル「IAR_debug_rz.eww」を選択する。

1

２．各ツールの設定内容を確認する。

①プロジェクト名「IAR_debug_rz」にクリック②右クリックで PullDown③「オプション」を選択

2

２－１．一般オプションの確認
１）ターゲット２）出力3

３）ライブラリ設定４）ライブラリオプション4５）MISRA-C:2004（設定なし）

６）MISRA-C:1998（設定なし）

5

２－２．静的解析の確認
１）C-STAT 静的解析（設定なし）

２）追加オプション（設定なし）

6

２－３．ランタイム解析の確認
１）C-RUN ランタイム解析（設定なし）

7

２－４．C/C++コンパイラの確認
１）言語１

２）言語２

8

３）コード４）最適化

デバッグ中は、「なし」選択を推奨する。

9５）出力.text

６）リスト

必要に応じて設定する

10７）プリプロセッサ$PROJ_DIR$¥src_app¥inc$PROJ_DIR$¥src_sys¥inc$PROJ_DIR$¥src_sys¥inc¥iodefines

注＊１
DEFnano 使用／未使用の定義「使用 」__USED_DEFnano__=1「未使用」__USED_DEFnano__=0
デバッグ環境によって設定する。

注＊１「__USED_DEFnano__=0」と使用しない側に定義しても内蔵 RAM へのダウンロードとシリ
アルフラッシュ ROM への書き込み操作は可能です。ただし、再操作する場合はターゲット側のリセット操作が必要になります。

11８）診断（設定なし）

９）MISRA-C:2004（設定なし）

12１０）MISRA-C:1998（設定なし）

13１１）追加オプション（設定なし）

14

２－５．アセンブラの確認
１）言語

２）出力

15

３）リスト

必要に応じて設定する

16４）プリプロセッサ$PROJ_DIR$¥src_sys¥inc

注＊１
DEFnano 使用／未使用の定義「使用 」__USED_DEFnano__=1「未使用」__USED_DEFnano__=0
デバッグ環境によって設定する。

注＊１「__USED_DEFnano__=0」と使用しない側に定義しても内蔵 RAM へのダウンロードとシリ
アルフラッシュ ROM への書き込み操作は可能です。ただし、再操作する場合はターゲット側のリセット操作が必要になります。

17

５）診断

必要に応じて設定

６）追加オプション（設定なし）

18

２－６．出力コンバータの確認
１）出力

DEFnano を使用する場合はこの設定は必要です。
拡張子「*.mot」に設定する。

19

２－７．カスタムビルドの確認（設定なし）
１）カスタムツール設定

２－８．ビルドアクションの確認（設定なし）

20２－９．リンカの確認
１）設定「編集」クリック

MP-RZA1H 用[¥r7s721000_mp-rza1h.icf]を登録する。

１－１）ベクタテーブル

21１－２）メモリ領域

評価版のためROM サ イ ズ
MAX(0x8000) までの設定とする。
残りエリア全てを RAM 側に割り付ける。

１－３）スタック／ヒープサイズ

アプリケーシ
ョンの規模に応じて設定する。

22２）ライブラリ３）入力（設定なし）

23４）最適化（設定なし）

５）アドバンスト（設定なし）

24

６）出力

default 拡張子「*.out」で指定する。

７）リスト

25

８）#define（設定なし）

９）診断（設定なし）

26１０）チェックサム（設定なし）

１１）追加オプション（設定なし）

27

２－１０．デバッガの確認
１）設定使用するデバッガを指定する。

２）ダウンロード28３）イメージ（設定なし）

４）追加オプション（設定なし）

29５）マルチコア（設定なし）

６）プラグイン（設定なし）

30

２－１１．I-jet/JTAGjet の確認
１）設定（デフォルト）

２）JTAG/SWD（デフォルト）31３）Trace（デフォルト）

４）ブレークポイント（デフォルト）32

３．サンプルプロジェクト「IAR_debug_rz」をビルドする。
１）すべてをビルド①プロジェクト名「IAR_debug_rz」にクリック②右クリックで PullDown③「すべてを再ビルド」を選択

２）ビルド結果

エラーの合計数：０
ワーニングの合計数：０を確認

33

４．
「I-jet/JTAG」でサンプルプロジェクト「IAR_debug_rz」をダウンロードする。
１）動作構成例（MP-RZA1H-01）
DC5V 入力
1. +5V
2. GND

JTAG(CN7)20pin 2.54 ピッチ

LED1
LED2
LED3
LED4

SW2(MODE)
1 番 ONMCU 基板MP-RZA1H-xx

２）ダウンロード34

SW1(DEBUG)
1 番 OFF2 番 OFF
3 番 OFF３）デバッガ起動画面

35

５．
「DEFnano」でサンプルプロジェクト「IAR_debug_rz」をダウンロードする。
１）動作構成例（MP-RZA1H-01）

DC5V 入力
1. +5V
2. GNDCN6 デバッガ用
USB Type mini-B
USB HID クラス

LED1
LED2
LED3
LED4

SW2(MODE)
1 番 OFFMCU 基板MP-RZA1H-xx

SW1(DEBUG)
1 番 OFF
2 番 OFF
3 番 OFF

２）起動とダウンロード②【ファイル】－【ダウンロード】を選択する。

①「Start」クリック36３）ダウンロードファイルを選択する。

「IAR_debug_rz.out」を選択する。

４）デバッガ起動画面

注＊１「__USED_DEFnano__=0」と使用しない側に定義してあっても内蔵 RAM へのダウンロード操作は可能です。ただし、再操作する場合はターゲット側のリセット操作が必要になります。

37

６．
「DEFnano」でサンプルプロジェクト「IAR_debug_rz.mot」をシリアルフラッシュ ROM に書き込む。
注＊１「__USED_DEFnano__=0」と使用しない側に定義してあってもシリアルフラッシュ ROM への書き込み操作は可能です。ただし、再操作する場合はターゲット側のリセット操作が必要になります。
１）シリアルフラッシュ ROM ライタの起動【オプション】－【フラッシュ ROM ライタ】を選択する。

２）Hex ファイルの選択と書き込み開始①「ファイル選択」
をクリックして Hex フ
ァイルを選択する。
②「書込み開始」
をクリックする。

38３）書き込み中
内部処理に応じてインジケータ表示①RAM にダウンロード中②セクターイレーズ③シリアルフラッシュに書込み中④ベリファイ中
４）書き込み終了

正常終了しますと、「書込みは正常に終了しました。
」と表示され、個数がカウントアップします。
個数は、この窓を閉じますとゼロになります。
５）シリアルフラッシュ ROM の消去「全消去開始」をクリックしますと、アプリケーションエリア(セクター２以降)のみを消去します。
ローダーとデバッガファームエリアは消去しません。

39

７．リンカ設定ファイル（*.icf）についてリンカ設定ファイルは、セグメントごとにアブソリュートアドレスを定義するためのファイルです。リンカファイル独自の予約語がありますので IAR 社が提供しているドキュメント「C/C++開発ガイド」の「バート２：リンカ設定ファイル」を参照して下さい。

/*###ICF### Section handled byICF editor, don't touch! ****//*-Editor annotation file-*//*IcfEditorFile="$TOOLKIT_DIR$¥config¥ide¥IcfEditor¥a_v1_0.xml" *//*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x20080000;/*-MemoryRegions-*/
define symbol __ICFEDIT_region_ROM_start__= 0x20080200;
define symbol __ICFEDIT_region_ROM_end__ = 0x20087FFF;
define symbol __ICFEDIT_region_RAM_start__= 0x20088000;
define symbol __ICFEDIT_region_RAM_end__ = 0x209FFFFF;/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x8000;
define symbol __ICFEDIT_size_svcstack__ = 0x1000;
define symbol __ICFEDIT_size_irqstack__ = 0x1000;
define symbol __ICFEDIT_size_fiqstack__ = 0x1000;
define symbol __ICFEDIT_size_undstack__ = 0x100;
define symbol __ICFEDIT_size_abtstack__= 0x1000;
define symbol __ICFEDIT_size_heap__ = 0x8000;/****End ofICF editor section. ###ICF###*/

define symbol __ICFEDIT_region_RetRAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RetRAM_end__= 0x2001FFFF;

define symbol __ICFEDIT_region_MirrorRetRAM_start__= 0x60000000;
define symbol __ICFEDIT_region_MirrorRetRAM_end__ = 0x6001FFFF;
define symbol __ICFEDIT_region_MirrorRAM_start__ = 0x60090000;
define symbol __ICFEDIT_region_MirrorRAM_end__ = 0x604FFFFF;
define symbol __ICFEDIT_region_UncachedRAM_start__ = 0x60500000;
define symbol __ICFEDIT_region_UncachedRAM_end__ = 0x609FFFFF;

define memorymem with size = 4G;
define region RetRAM_region = mem:[from __ICFEDIT_region_RetRAM_start__ to__ICFEDIT_region_RetRAM_end__ ];define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to _ICFEDIT_region_ROM_end__ ];define region RAM_region =mem:[from __ICFEDIT_region_RAM_start__ to__ICFEDIT_region_RAM_end__ ];define region MirrorRAM_region=mem:[from __ICFEDIT_region_MirrorRAM_start__ to__ICFEDIT_region_MirrorRAM_end__ ];define region MirrorRetRAM_region=mem:[from __ICFEDIT_region_MirrorRetRAM_start__ to__ICFEDIT_region_MirrorRetRAM_end__];define region UncachedRAM_region = mem:[from __ICFEDIT_region_UncachedRAM_start__ to __ICFEDIT_region_UncachedRAM_end__];/*stacks */define symbol __ICFEDIT_size_TTB__ = 0x4000;
define block TTB

withalignment= 0x4000,size = __ICFEDIT_size_TTB__ { };define block CSTACK

withalignment= 16, size = __ICFEDIT_size_cstack__ { };define block SVC_STACK withalignment= 16, size = __ICFEDIT_size_svcstack__ { };40

define block IRQ_STACK withalignment= 16, size = __ICFEDIT_size_irqstack__ { };define block FIQ_STACK with alignment = 16, size = __ICFEDIT_size_fiqstack__ { };define blockABT_STACK withalignment= 16, size = __ICFEDIT_size_abtstack__ { };define block UND_STACK withalignment= 16, size = __ICFEDIT_size_undstack__ { };define block HEAP

withalignment= 16, size = __ICFEDIT_size_heap__ {};initialize bycopy with packing = none {readwrite,};donot initialize {
section .noinit,};place at address mem:__ICFEDIT_intvec_start__ {sectionVECTOR_TABLE/*asm*/};place at start ofROM_region {section RESET_INIT_HANDLER, /*asm*/
rocode,rodata,};place in RAM_region {block TTB,
block IRQ_STACK,
block FIQ_STACK,
block SVC_STACK,
blockABT_STACK,
block UND_STACK,
block CSTACK,
block HEAP,
readwrite,zi,};place at start ofUncachedRAM_region {};リンカ設定ファイルを編集する場合の注意点
１）１行（/*###ICF###）から１９行(###ICF###*/)は、エディタ等で直接変更しないで下さい。変更が必要な場合は、EWARM の【オプション】－【リンカ】－「設定」－「編集」で変更する。

41

８．ベクタテーブルとローダーの関係について
MP-RZA1H 基板は、シリアルフラッシュ ROM にローダーとアプリケーションプログラムを記憶させ、電源 ON 時にローダーが RZA1H の内蔵 RAM にアプリケーションプログラムをロードして実行させる仕組みになっています。ローダーは内蔵 RAM にロードする時にロード先の先頭アドレスと最終アドレスと実行開始アドレスを知る必要があります。この情報を得るため独自の定義が必要なため下記に説明します。
１）ローダーが必要な情報をベクタテーブルに登録する。
「_vector_table_s.s」
Start;===============================================================================; Entry point for the Reset handler;===============================================================================
vector_table
LDR pc, =Reset_handler; Start+0x0000 : リセット
LDR pc, =Undefined_handler; Start+0x0004 : 未定義命令
LDR pc, =Svc_handler; Start+0x0008 : ソフトウェア割り込み
LDR pc, =Prefetch_handler; Start+0x000C : プリフェッチアボート
LDR pc, =Abort_handler; Start+0x0010 : データアボート
LDR pc, =Reserved_handler; Start+0x0014 : Reserved
LDR pc, =Irq_handler; Start+0x0018 : IRQ
LDR pc, =Fiq_handler; Start+0x001C : FIQ(NMI);===============================================================================; SFROMに登録してあるローダーに渡す情報;===============================================================================
Info_table
DCD vector_table; Start+0x0020 :①内蔵RAM転送先の開始アドレス
DCD Region$$Table$$Limit; Start+0x0024 :②内蔵RAM転送先の終了アドレス(+1)
DCD vector_table; Start+0x0028 :③初期PC値
DCD 0; Start+0x002C :④デバッグモードフラグ; DEFnanoを未使用にして、 USB0を開放する場合は、; 0xDEF0DEF0を定義する。
Info_end;===============================================================================【重要】①②③④の情報は、ROM化するためには必要な情報テーブルです。必ず、定義して下さい。

【注意事項】④で「DEFnano 未使用」
コード「0xDEF0DEF0」をセットし、シリアルフラッシュ ROM に登録した場合、二度とDEFnano を使用することが出来なくなります。
復帰したい場合は、JTAG デバッガ等でシリアル
フラッシュ ROM アドレス「0x2_002C」を未使用コード「0xDEF0DEF0」以外の数値を直接書き込んでください。

以上です。

42

９．注意事項
・本文書の著作権は、エーワン（株）が保有します。
・本文書を無断での転載は一切禁止します。
・本文書に記載されている内容についての質問やサポートはお受けすることが出来ません。
・本文章に関して、ARM 社およびルネサス エレクトロニクス社への問い合わせは御遠慮願います。
・本文書の内容に従い、使用した結果、損害が発生しても、弊社では一切の責任は負わないものとします。
・本文書の内容に関して、万全を期して作成しましたが、ご不審な点、誤りなどの点がありましたら弊社までご連絡くだされば幸いです。
・本文書の内容は、予告なしに変更されることがあります。
１０．商標
・EWARM は、IAR 社の登録商標、または商品名称です。
・RZ および RZ/A1H は、ルネサス エレクトロニクス株式会社の登録商標、または商品名です。
・その他の会社名、製品名は、各社の登録商標または商標です。
１１．参考文献
・「RZ/A1H グループ ユーザーズマニュアル ハードウェア編」
ルネサス エレクトロニクス株式会社
・ルネサス エレクトロニクス株式会社提供のサンプル集
・「IDE プロジェクト管理およびビルドガイド UIDEARM-9-j」 IAR 社
・「IAR C/C++開発ガイド コンパイラおよびリンク DARM-14-j」 IAR 社
・「IAR アセンブラリファレンスガイド AARM-9-j」 IAR 社
・「IAR デバッグプローブガイド IARprobes-2-j」 IAR 社
・その他〒486-0852
愛知県春日井市下市場町 6-9-20
エーワン株式会社

http://www.robin-w.com43