Rev 1.10.00

EWARM(ICC 版)ツールチェインの設定と必要事項の説明（ルネサス ＲＺ／Ｔ１用)

EWARM(ICC 版)ツールチェインの設定方法とサンプルプロジェクトに必要な設定を説明します。

下記 5 通りのサンプルプログラムがありますが、toolchain の設定例は「RZT1_Sample_BARE」をもとに説明を進めます。なお、他のサンプル詳細は、サンプル用アプリケーションノートを参照して下さい。

サンプル名

用途

ワークスペース名

RZT1_Sample_BARE

ベアメタル版サン Sample_BARE.eww
プル
RZT1_Sample_HWRTOS M3 側でSample_HWRTOS.eww
HWRTOS を使用
したサンプルRZT1_Sample_ECAT
EtherCAT 制 御 サ Sample_ECAT.eww
ンプル

コア
M3

プロジェクト名
Sample_BARE_M3

R4F Sample_BARE_R4F
M3 Sample_HWRTOS_M3
R4F Sample_HWRTOS_R4F
M3

Sample_ECAT_M3.mot を使用（ソース非公開）
R4F Sample_ECAT_R4F

RZT1_Demo_BARE

ベアメタル版デモ Demo_BARE.eww
ソフト

M3

RZT1_Demo_NORTi

RTOS-NORTi 版デ Demo_NORTi.eww
モソフト

M3

Sample_ECAT_M3.mot を使用（ソース非公開）
R4F Demo_BARE_R4F
Sample_ECAT_M3.mot を使用（ソース非公開）
R4F Demo_NORTi_R4F

注記
コア【M3】側 EtherCAT®制御用サンプルのソース公開を希望される場合は、JSL Technology 社とのライセンス契約が必要です。

1１．IAR Embedded Workbench IDE を起動する。
１－１．
【ファイル】－【開く】－【ワークスペース】を選択する。

１－２．ワークスペースファイルの一例として「Sample_BARE.eww」を選択する。

2

２．各ツールの設定内容を確認する。
２－１．コア【R4F】側の確認①「Sample_BARE_R4F」選択②右クリック
③「オプション」選択3

２－１－１．一般オプション
１）ターゲット

Renesas R7S910018_R4F２）出力

Debug¥ExeDebug¥ObjDebug¥List4３）ライブラリ設定４）ライブラリオプション5５）MISRA-C:2004（デフォルト）

６）MISRA-C:1998（デフォルト）6

２－１－２．静的解析
１）C-STAT 静的解析（デフォルト）２）追加オプション（デフォルト）7

２－１－３．ランタイム解析
１）C-RUN ランタイム解析（デフォルト）8

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

２）言語２

9

３）コード４）最適化

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

10５）出力.text

６）リスト

必要に応じて設定する。

11７）プリプロセッサ

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

$PROJ_DIR$/src/common/inc$PROJ_DIR$/src/sample/app/inc$PROJ_DIR$/src/sample/cBARE/inc$PROJ_DIR$/src/monitor

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

12８）診断（デフォルト）

９）MISRA-C:2004（デフォルト）13１０）MISRA-C:1998（デフォルト）

１１）追加オプション（デフォルト）14

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

２）出力

15

３）リスト

必要に応じて設定する

４）プリプロセッサ

check 外す

16

５）診断

必要に応じて設定

６）追加オプション（デフォルト）17

２－１－６．出力コンバータ
１）出力「Motorola」「$PROJ_FNAME$.mot」
DEFnano で ROM 化する場合は必要。

18

２－１－７．カスタムビルド
１）カスタムツール設定（デフォルト）

２－１－８．ビルドアクション
１）ビルドアクションの設定（デフォルト）19

２－１－９．リンカ
１）設定$PROJ_DIR$¥RZ_T1_init.icf.intvec

0x00000000【ROM】プログラムコードエリア
0x00000000 -> 0x0004FFFF【RAM】ワークエリア
0x20010000 -> 0x2002FFFF
範囲に関しては、必要に応じて設定

20

【CSTACK】スタックサイズ
0x8000【SVC_STACK】SVC スタックサイズ
0x100【IRQ_STACK】IRQ スタックサイズ
0x100【FIQ_STACK】FIQ スタックサイズ
0x100【UND_STACK】UND スタックサイズ
0x100【ABT_STACK】ABT スタックサイズ
0x100【HEAP】ヒープサイズ
0x1000
サイズに関しては、必要に応じて設定【RZ_T1_init.icf】ロケーション＆セクション定義/*###ICF### Section handled by ICF editor, don't touch! ****//*-Editor annotation file-*//* IcfEditorFile="$TOOLKIT_DIR$¥config¥ide¥IcfEditor¥a_v1_0.xml" *//*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0004FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20010000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2002FFFF;/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x2000;
define symbol __ICFEDIT_size_svcstack__ = 0x100;
define symbol __ICFEDIT_size_irqstack__ = 0x2000;
define symbol __ICFEDIT_size_fiqstack__ = 0x100;
define symbol __ICFEDIT_size_undstack__ = 0x100;
define symbol __ICFEDIT_size_abtstack__ = 0x100;
define symbol __ICFEDIT_size_heap__ = 0x100;/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
defineregion
ROM_region=__ICFEDIT_region_ROM_end__];defineregion
RAM_region=__ICFEDIT_region_RAM_end__];エディタでの変更不可
上記「編集」にて変更する。

mem:[from__ICFEDIT_region_ROM_start__

tomem:[from__ICFEDIT_region_RAM_start__

to21define symbol __ICFEDIT_region_STACK_start__ = 0x00050000;
define region EHCI_MEM1_region = mem:[from 0x00060000 to 0x000603FF];
define region EHCI_MEM2_region = mem:[from 0x00060400 to 0x00079FFF];
define region OHCI_MEM1_region = mem:[from 0x0007A000 to 0x0007A0FF];
define region OHCI_MEM2_region = mem:[from 0x0007A100 to 0x0007FFFF];
define symbol __region_USER_PRG_start__ = 0x00000100;
define symbol __region_USER_PRG_end__ = __ICFEDIT_region_ROM_end__;define region USER_PRG_region__region_USER_PRG_end__];=mem:[from__region_USER_PRG_start__

define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { };define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { };define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { };define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { };define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { };define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };initialize by copy {readwrite};
do not initialize {
section .noinit,
section .bss};
do not initialize {
section EHCI_PFL,
section EHCI_QH,
section EHCI_QTD,
section EHCI_ITD,
section EHCI_SITD,section OHCI_HCCA,
section OHCI_TD,
section OHCI_ED};
place at address mem:__ICFEDIT_intvec_start__ {section VECTOR_TABLE,};
place at address mem:__region_USER_PRG_start__ {section d_ldr_prg,
ro code,ro data,};22

toplace in EHCI_MEM1_region {section EHCI_PFL};
place in EHCI_MEM2_region {section EHCI_QH,
section EHCI_QTD,
section EHCI_ITD,
section EHCI_SITD};
place in OHCI_MEM1_region {section OHCI_HCCA};
place in OHCI_MEM2_region {section OHCI_TD,section OHCI_ED};
place at address mem:__ICFEDIT_region_STACK_start__ {block FIQ_STACK,
block IRQ_STACK,
block SVC_STACK,
block ABT_STACK,
block UND_STACK,
block CSTACK,
block HEAP,};
place at address mem:__ICFEDIT_region_RAM_start__ {rw data,section .bss,zi};

23２）ライブラリ

I-jet デバッガの起動時に「loader_init1」で停止させる設定、必要に応じて設定する

３）入力（デフォルト）24４）最適化（デフォルト）

５）アドバンスト（デフォルト）

25

６）出力

$PROJ_FNAME$.out

７）リスト

26

８）#define（デフォルト）９）診断（デフォルト）27１０）チェックサム（デフォルト）

１１）追加オプション（デフォルト）28

２－１－１０．デバッガ
１）設定

セットアップマクロ
ルネサス提供サンプルを使用$PROJ_DIR$¥RZT1_init_RAM.mac$TOOLKIT_DIR$¥CONFIG¥debugger¥Renesas¥R7S910018_R4F.ddf

２）ダウンロード29３）イメージ（デフォルト）４）追加オプション--jet_sigprobe_opt=shared

30５）マルチコア（デフォルト）

６）プラグイン（デフォルト）31

２－１－１１．I-jet/JTAGjet
１）設定「ハードウェア」選択
２）インタフェース32３）Trase（デフォルト）

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

２－２．コア【M3】側の確認①「Sample_BARE_M3」選択②右クリック
③「オプション」選択34

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

Debug¥Exe
Debug¥ObjDebug¥List35３）ライブラリ設定４）ライブラリオプション36５）MISRA-C:2004（デフォルト）

６）MISRA-C:1998（デフォルト）37

２－２－２．静的解析
１）C-STAT 静的解析（デフォルト）２）追加オプション（デフォルト）38

２－２－３．ランタイム解析
１）C-RUN ランタイム解析（デフォルト）39

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

２）言語２

40

３）コード（デフォルト）

４）最適化

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

41５）出力.text

６）リスト

必要に応じて設定する。

42

７）プリプロセッサ

check 外す$PROJ_DIR$/src/common/inc$PROJ_DIR$/src/Renesas/RZT1_RIN_Engine/Include$PROJ_DIR$/src/Renesas/CMSIS/Include$PROJ_DIR$/src/sample/app/inc８）診断（デフォルト）43９）MISRA-C:2004（デフォルト）１０）MISRA-C:1998（デフォルト）44１１）追加オプション（デフォルト）45

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

２）出力

46

３）リスト

必要に応じて設定する

４）プリプロセッサ

check 外す

47

５）診断

必要に応じて設定

６）追加オプション（デフォルト）48

２－２－６．出力コンバータ
１）出力「Motorola」「$PROJ_FNAME$.mot」
DEFnano で ROM 化する場合は必要。

49

２－２－７．カスタムビルド
１）カスタムツール設定（デフォルト）

２－２－８．ビルドアクション
１）ビルドアクションの設定（デフォルト）50

２－２－９．リンカ
１）設定$PROJ_DIR$¥M3_image.icf.intvec

0x00000000【ROM】プログラムコードエリア
0x00000000 -> 0x0003FFFF【RAM】ワークエリア
0x00040000 -> 0x0007FFFF
範囲に関しては、必要に応じて設定【CSTACK】スタックサイズ
0x8000【HEAP】ヒープサイズ
0x1000
サイズに関しては、必要に応じて設定51

【M3_image.icf】ロケーション＆セクション定義/*###ICF### Section handled by ICF editor, don't touch! ****//*-Editor annotation file-*//* IcfEditorFile="$TOOLKIT_DIR$¥config¥ide¥IcfEditor¥cortex_v1_0.xml" *//*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x00000000;/*-Memory Regions-*/
エディタでの変更不可
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF;
上記「編集」にて変更
define symbol __ICFEDIT_region_RAM_start__ = 0x00040000;
する。
define symbol __ICFEDIT_region_RAM_end__ = 0x0007FFFF;/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x8000;
define symbol __ICFEDIT_size_mainstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x1000;/**** End of ICF editor section. ###ICF###*//*============================================================================*//* M E M O R Y R E G I O N*//*============================================================================*/
define memory mem with size = 4G;
define region iram = mem:[from 0x00000000 size 256K]; // プログラムコードの開始アドレスとサイズ
define region dram = mem:[from 0x00040000 size 256K]; //データエリアの開始アドレスとサイズ/*============================================================================*//* B L O C K L AY O U T*//*============================================================================*/
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };define block MAINSTACK with alignment = 8, size = __ICFEDIT_size_mainstack__ { };define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };initialize by copy { readwrite };do not initialize { section .noinit };/*============================================================================*//* S E C T I O N L A Y O U T*//*============================================================================*///-------------------------------------------------------------------// Instruction RAM プログラムコードエリア//-------------------------------------------------------------------place at start of iram { section vectors };place iniram { readonly };place iniram { rw code section .text };//-------------------------------------------------------------------// Data RAM
データエリア//-------------------------------------------------------------------place in dram { readwrite,
block HEAP,
block CSTACK,
block MAINSTACK};52

２）ライブラリ３）入力（デフォルト）53４）最適化（デフォルト）

５）アドバンスト（デフォルト）

54

６）出力

$PROJ_FNAME$.out

７）リスト

55

８）#define（デフォルト）９）診断（デフォルト）

56１０）チェックサム（デフォルト）

１１）追加オプション（デフォルト）57

２－２－１０．デバッガ
１）設定

main
必要に応じて関数名設定$TOOLKIT_DIR$¥CONFIG¥debugger¥Renesas¥R7S910018_M3.ddf２）ダウンロード58３）イメージ（デフォルト）４）追加オプション--jet_sigprobe_opt=shared

59５）マルチコア（デフォルト）

６）プラグイン（デフォルト）60

２－２－１１．I-jet/JTAGjet１）設定

無効（リセットなし） // R4F 側でリセットするため

２）インタフェース

61３）Trase（デフォルト）

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

３．サンプルプロジェクト「Sample_BARE」をビルドする。
３－１．コア【R4F】側サンプル「Sample_BARE_R4F」をビルドする。
１）すべてを再ビルド①プロジェクト名「Sample＿BARE_R4F」をクリック②右クリック③「すべてを再ビルド」選択

２）ビルド結果

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

63

３－２．コア【M3】側サンプル「Sample_BARE_M3」をビルドする。
１）すべてを再ビルド①プロジェクト名「Sample＿BARE_M3」をクリック②右クリック③「すべてを再ビルド」選択

２）ビルド結果

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

64

４．サンプルプロジェクト「Sample_BARE」をデバッグする。
４－１．MP-RZT1-01 のデバッグ準備
１）コア【R4F】側とコア【M3】側を I-jet のみ使用してデバッグする場合
SW2 MODE
1 番 ON
2 番 OFF
3 番 OFF
4 番 OFF

JTAG(CN2)
20pin 2.54 ピッチ

DC5V 入力
1. +5V
2. GND２）コア【R4F】側を DEFnano、コア【M3】側を I-je を使用してデバッグする場合
CN8 DEFnano 用
USB Type mini-B
USB HID クラス

SW2 MODE
1 番 OFF
2 番 OFF
3 番 ON
4 番 OFF65

４－２．コア【R4F】側のデバッッガ初期起動
４－２－１．I-jet を使用（詳細なデバッグ操作は IAR 提供「デバッグガイド」を参照）
１）サンプル「Sample_BARE_R4F」をダウンロードする。

クリック２）デバッガ起動画面

66

４－２－２．DEFnano を使用（詳細なデバッグ操作は Aone 提供「DEFnano_Vx_xx.pdf」を参照）
１）サンプル「Sample_BARE_R4F」をダウンロードする。

②【ファイル】－【ダウンロード】を選択①Start をクリック<RZT1_Sample_BARE>-<R4F>-<Debug>-<Exe>-[Sample_BARE_R4F.out]を選択後、「開く」をクリック

67２）デバッガ起動画面

68４－３．コア【M3】側のデバッッガ初期起動
４－３－１．コア【M3】側のリセット解除
RZ/T1 の電源投入後、および RESET＃端子リセット時には、Cortex-M3 側は初期状態としてリセット状態です。コア【M3】側のデバッグを開始させるには、コア【R4F】側から、ソウトウェアリセットレジ
スタ２(SWRR2)を制御して、リセット解除する必要があります。
void cm3_start(void){
R_RST_WriteEnable();SYSTEM.SWRR2.LONG = 0x4321A50F; // Reset__asm("isb");// Ensuring instruction-changing
SYSTEM.SWRR2.LONG = 0x0;// Reset 解除__asm("isb");// Ensuring instruction-changing
R_RST_WriteDisable();}１）I-jet を使用して M3 側のリセット解除（R4F 側のデバッガを起動）

R4F 側の
main_s.c::cm3_start() 関数処理後にブレーク設定し、実行する。
この操作で M3 側がリセット解除。

69２）DEFnano を使用して M3 側のリセット解除①「Start」クリック②「RstM3」クリック
M3 側がリセット解除

70

４－３－２．I-jet を使用（詳細なデバッグ操作は IAR 提供「デバッグガイド」を参照）
１）サンプル「Sample_BARE_M3」をダウンロードする。

クリック２）デバッガ起動画面

71

４－４．デバッグに関する特記事項
１）I-jet や DEFnano を使用してのデバッグに関する共通事項は、デバッグ時はプログラムコードをRZ/T1 の内蔵 RAM にダウンロードしてデバッグ作業を進めます。
特に JTAG デバッガを使用したサンプル例ですとダウンロード時にシリアル FROM に書き込み後、アプリ側でロードさせるコードが含まれていますが、MP-RZT1-01 を使用する場合は不要です。
２）MP-RZT1-01 基板は、オンボードのシリアル FROM にローダーとデバッガ用ファームが書き込み済みで出荷しています。
３）ROM 書き込みに関しては、5 項をご覧下さい。

72

５．ROM 書き込み
５－１．DEFnano を使用して ROM 書き込みする。
【オプション】－【フラッシュ ROM ライタ】を選択

先頭を☑後、
Cortex-M3 側の Hex ファイ
ルを指定する。

先頭を☑後、Cortex-R4F 側の Hex ファイ
ルを指定する。

73ライターモードでは 、「 *.mot 」 のHex ファイルを指定する。

「開く」クリック「書込み開始」
クリック☑選択されたファイルを書き込みます。

【Cortex-M3 側】
内部処理に応じてインジケータ表示①RAM にダウンロード中②セクターイレーズ③シリアルフラッシュに書込み中④ベリファイ中【Cortex-R4F 側】
内部処理に応じてインジケータ表示①RAM にダウンロード中②セクターイレーズ③シリアルフラッシュに書込み中④ベリファイ中74

正常終了しますと、「書込みは正常に終了しました。
」と表示され、個数がカウントアップします。個数は、この窓を閉じますとゼロになります。
この例は、R4F 側のみを Write した時の画面です。

「全消去開始」をクリックしますと、アプリケーションエリア(セクター２～３１)を全消去します。M3/R4F 側の個別指定はできません。

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

http://www.robin-w.com76