Rev 1.10.00

DS-5（GNU Tools）ツールチェインの設定と必要事項の説明（ルネサス ＲＺ／Ａ１Ｈ用)
DS-5(GNU Tools)ツールチェインの設定方法とサンプルプロジェクトに必要な設定を説明します。
１．ツールチェイン設定画面を開きます。
１）【プロジェクト】－【プロパティ】を選択します。

２）「C/C++ビルド」－「設定」を選択します。

1２．ライブラリジェネレータの設定
１）ライブラリジェネレータのすべてのオプションを表示

２）Setting 設定画面（デフォルト設定）2３）Header files 設定画面（デフォルト設定）

４）Other options 設定画面

Floating-point mode:Soft 指定
Floating-point mode:Softfp 指定

3

空白--compiler=-mfloat-abi=softfp

５）Miscellaneous 設定画面（デフォルト設定）

4

３．GNUC コンパイラの設定
１）GCC C コンパイラのすべてのオプションを表示

5２）Preprocessors 設定画面

GNU を定義

C ソ－スに#ifdef 等のマクロ定義している場合に使用します。
注＊１x = DEFnano を使用[1]する・[0]しない。
__USED_DEFnano__=xGNU
GNU 版の場合に定義
RTOS
NORTi 使用時に定義
CH2
NORTi 使用時に定義
ITF_LIB
USB-Function 使用時に定義

USER_Debug
EVrxRZ_Sample
EVrxRZ_Sample_USB
EVrxRZ_NORTi
EVrxRZ_NORTi_USB
EVRZ_Sample
EVRZ_Sample_USB
EVRZ_NORTi
EVRZ_NORTie_USB

サンプルプロジェクト別に必要なマクロ定義例__USED_DEFnano__=1 GNU__USED_DEFnano__=1 GNU__USED_DEFnano__=1 GNU__USED_DEFnano__=1 GNU
RTOS__USED_DEFnano__=1 GNU
RTOS__USED_DEFnano__=1 GNU__USED_DEFnano__=1 GNU__USED_DEFnano__=1 GNU
RTOS__USED_DEFnano__=1 GNU
RTOS

ITF_LIBCH2
CH2

ITF_LIBITF_LIBCH2
CH2

ITF_LIB

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

6３）Include 設定画面

サンプルプロジェクト別に必要なインクルードパスの設定例
USER_Debug_rz"${workspace_loc:/${ProjName}/src_app/inc}""${workspace_loc:/${ProjName}/src_gsys/inc}""${workspace_loc:/${ProjName}/src_gsys/inc/iodefines}""${TC_INSTALL}/arm-none-eabi/optlibinc"
EVrxRZ_Sample
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"
EVrxRZ_Sample_USB
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/Include}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/ITF_Include}"
EVrxRZ_Norti
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/NORTi/INC}"
追加+ "${workspace_loc:/${ProjName}/NORTi_smp/NETSMP/inc}"追加+ "${workspace_loc:/${ProjName}/NORTi_smp/SMP/inc}"
EVrxRZ_Norti_USB
追加+ "${workspace_loc:/${ProjName}/ITF_LIB/Include}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/ITF_Include}"
EVRZ_Sample
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/src_evb/inc}"追加+ "${workspace_loc:/${ProjName}/src_vdc/inc}"
EVRZ_Sample_USB
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/src_evb/inc}"追加+ "${workspace_loc:/${ProjName}/src_vdc/inc}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/Include}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/ITF_Include}"
EVRZ_Norti
追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/src_evb/inc}"追加+ "${workspace_loc:/${ProjName}/src_vdc/inc}"

7

EVRZ_Norti_USB

追加+ "${workspace_loc:/${ProjName}/NORTi/INC}"
追加+ "${workspace_loc:/${ProjName}/NORTi_smp/NETSMP/inc}"追加+ "${workspace_loc:/${ProjName}/NORTi_smp/SMP/inc}"追加+ "${workspace_loc:/${ProjName}/src_eva/inc}"追加+ "${workspace_loc:/${ProjName}/src_evb/inc}"追加+ "${workspace_loc:/${ProjName}/src_vdc/inc}"追加+ "${workspace_loc:/${ProjName}/NORTi/INC}"
追加+ "${workspace_loc:/${ProjName}/NORTi_smp/NETSMP/inc}"追加+ "${workspace_loc:/${ProjName}/NORTi_smp/SMP/inc}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/Include}"追加+ "${workspace_loc:/${ProjName}/ITF_LIB/ITF_Include}"8４）Source Language 設定画面（デフォルト設定）

５）Optimization 設定画面

デバッグ中は、「None」指定9６）Code Generation 設定画面

Target CPU
Instruction SetInterworking
アンアライドアクセスをディセーブル
Target FPU(--mfpu)
Floating-point ABI(-mfloat-abi=name)cortex-a9
ARM(--marm)を選択□☑
vfp
SoftSoftfp（VFP/NEON 使用時）

10７）Debugging 設定画面

Default(-g)
DWARF 2(-gdwarf-2)を選択

８）Warnings and Erros 設定画面（デフォルト設定）

11９）Miscellaneous 設定画面（デフォルト設定）

12

４．Assembler の設定
１）Assembler のすべてのオプションを表示

２）General 設定画面

Include paths 設定..¥src_gsys¥inc13３）Code Generation 設定画面

GCC C コンパイラのターゲット設定と同じにする。
Target CPU
cortex-a9
Instruction Set
Default を選択
Interworking□
Target FPU(--mfpu)
vfp
Floating-point mode(-mfloat-abi)Soft
Softfp（VFP/NEON 使用時）
Floating-point PCS(-mapcs-float)□14４）デバッグ設定画面☑Enable Debug(-g)
Debug format「DWARF2(-gdwarf-2) 」

５）Warnings and Errors 設定画面（デフォルト設定）

15６）Miscellaneous 設定画面

USER_Debug
EVrxRZ_Sample
EVrxRZ_Sample_USB
EVRZ_Sample
EVRZ_Sample_USB
EVrxRZ_Norti
EVrxRZ_Norti_USB
EVRZ_Norti
EVRZ_Norti_USB

サンプルプロジェクトの追加オプション-a=¥${OUTPUT_PREFIX}¥${OUTPUT}.lst--defsym TARGET_FEATURE_NEON=0--defsym TARGET_FPU_VFP=0
注＊１--defsym __USED_DEFnano__=1-a=¥${OUTPUT_PREFIX}¥${OUTPUT}.lst--defsym TARGET_FEATURE_NEON=0--defsym TARGET_FPU_VFP=0
注＊１--defsym __USED_DEFnano__=1

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

16

５．GCC Linker の設定
１）GCC Linker のすべてのオプションを表示

２）General 設定画面

Generate MAP File(-M)
Add linker script file(-T FILE)
ロケート用スクリプトファイル☑
"${ProjDirPath}/linker_script_file/Locate.ld"

17３）Libraries 設定画面

Librarues(-L)"${TC_INSTALL}/lib/gcc/arm-none-eabi/${GCC_STRING}""${TC_INSTALL}/lib/gcc/arm-none-eabi/${GCC_STRING}/fpu/interwork""${CWD}"
Library search path(--library-path)"${TC_INSTALL}/lib"
４）Warnings and Errors 設定画面（デフォルト設定）

18５）Miscellaneous 設定画面--start-group-l${ProjName}-lgcc--end-group--print-gc-sections--cref

USER_Debug
EVrxRZ_Sample
EVRZ_Sample
EVrxRZ_Sample_USB
EVRZ_Sample_USB
EVrxRZ_Norti
EVRZ_Norti
EVrxRZ_Norti_USB
EVRZ_Norti_USB

サンプルプロジェクト別のライブラリファイル
なし
ITF_LIB/ITFUSBLib_RZA1H_A0_GNU.a（別売り）
n4d7anal.a（別売り）
Floating-point mode:Soft 指定
n4e7anal.a（別売り）
Floating-point mode:Softfp 指定 n4e7aval.a（別売り）
ITF_LIB/ITFUSBLib_RZA1H_A0_GNU.a（別売り）
n4d7anal.a（別売り）
Floating-point mode:Soft 指定
n4e7anal.a（別売り）
Floating-point mode:Softfp 指定 n4e7aval.a（別売り）19

６．ビルド・ステップの設定画面

ビルド実行前と実行後に追加したいコマンドがある場合に設定します。
サンプルプロジェクトでは「after_build.bat」にて実行後に設定する。
arm-none-eabi-objcopy -O binary %1.x %1.bin
bin ファイルの作成
arm-none-eabi-objcopy -O srec %1.x %1.mot
mot ファイルの作成
７．ビルド成果物の設定画面（デフォルト設定）

サンプルプロジェクトの設定（DEFnano を使用する場合は、変更不可）
成果物タイプ${ProjName}
成果物名x
成果物拡張子20

８．バイナリー・パーサー設定画面（デフォルト設定）

９．エラー・パーサー設定画面「☑GNU gmake Error Parser 6.0(Deprecated)」「☑GNU gcc/g++ Error Parser」「☑GNU Linker Error Parser」「☑GNU Assembler Error Parser」

21

１０．ロケートファイル(Locate.LD)について
ロケートファイルとは、セグメントごとにアブソリュートアドレスを定義するためのファイルです。ロケートファイル独自の予約語がありますので各自で調査して下さい。

サンプルプロジェクト[Locate.LD]の定義例１ 「ベアメタル版」
MEMORY {ROM(rx)
STACK
(rw)
CACHED_RAM (rw)
UNCACHED_RAM (rw)}

: ORIGIN = 0x20080000, LENGTH = 0x00300000: ORIGIN = 0x20380000, LENGTH = 0x00080000: ORIGIN = 0x203A0000, LENGTH = 0x00380000: ORIGIN = 0x60800000, LENGTH = 0x00200000

SECTIONS{.text : {. = 0x00000000;
Image$$VECTOR_TABLE$$Base = .;* (VECTOR_TABLE)/* asm */. = 0x00000200;* (RESET_INIT_HANDLER)/* asm */* (InRoot$$Sections)* (.text .text.*)* (.rodata .rodata.*)} > ROM.data : {__data_load = .;__data_start = LOADADDR(.data) + ( __data_load - ADDR(.data) );* (.data .data.*)__data_end = LOADADDR(.data) + ( . - ADDR(.data) );Image$$DATA$$Limit = .;} > ROM

22

.stack : {. = ALIGN( 0x10 );Image$$ARM_LIB_STACK$$ZI$$Base = .;. += 0x00008000;
Image$$ARM_LIB_STACK$$ZI$$Limit = .;. = ALIGN( 0x10 );Image$$IRQ_STACK$$ZI$$Base = .;. += 0x00004000;
Image$$IRQ_STACK$$ZI$$Limit = .;. = ALIGN( 0x10 );Image$$FIQ_STACK$$ZI$$Base = .;. += 0x00004000;
Image$$FIQ_STACK$$ZI$$Limit = .;. = ALIGN( 0x10 );Image$$SVC_STACK$$ZI$$Base = .;. += 0x00004000;
Image$$SVC_STACK$$ZI$$Limit = .;. = ALIGN( 0x10 );Image$$ABT_STACK$$ZI$$Base = .;. += 0x00004000;
Image$$ABT_STACK$$ZI$$Limit = .;. = ALIGN( 0x4000 );Image$$TTB$$ZI$$Base = .;. += 0x00004000;
Image$$TTB$$ZI$$Limit = .;} > STACK.uncached_RAM (NOLOAD) : {* (VIDEO_BSS)} > UNCACHED_RAM}23

サンプルプロジェクト[Locate.LD]の定義例２ 「NORTi 版」
MEMORY {SYSTEM_RAM (rwx) : ORIGIN = 0x20080000, LENGTH = 0x00680000
STACK_MEM(rw) : ORIGIN = 0x20700000, LENGTH = 0x00100000
STACK_ABT(rw) : ORIGIN = 0x20800000, LENGTH = 0x00004000
MMU_TTB(rw) : ORIGIN = 0x20804000 LENGTH = 0x00004000
UNCACHED_RAM (rw) : ORIGIN = 0x60808000, LENGTH = 0x001F8000}
SECTIONS{.text : {PROVIDE(__ro_start__ = .);PROVIDE(_copy_start_ = .);. = 0x00000000;
Image$$VECTOR_TABLE$$Base = .;* (VECTOR_TABLE)/* asm */. = 0x00000200;* (RESET_INIT_HANDLER)/* asm */* (InRoot$$Sections)* (.text .text.*)* (.rodata .rodata.*)
PROVIDE(__ro_end__ = .);} > SYSTEM_RAM.data : {. = ALIGN(8);PROVIDE(__data_start__ = .);* (.data .data.*)
PROVIDE(__data_end__ = .);. = ALIGN(8);PROVIDE(_copy_end_ = .);} > SYSTEM_RAM.bss : {. = ALIGN(8);PROVIDE(__bss_start__ = .);* (.bss .bss.*)* (COMMON)PROVIDE(__bss_end__ = .);} > SYSTEM_RAM24

.MPLMEM ALIGN(8) : {* (.MPLMEM)} > SYSTEM_RAM.STKMEM ALIGN(8) : {* (.STKMEM)} > SYSTEM_RAM.stack (NOLOAD) : {PROVIDE(STARTOF_STACK = .);. += LENGTH(STACK_MEM);. = ALIGN(8);PROVIDE(STACK = .);} > STACK_MEM.stack_abt (NOLOAD) : {Image$$ABT_STACK$$ZI$$Base = .;. += LENGTH(STACK_ABT);
Image$$ABT_STACK$$ZI$$Limit = .;} > STACK_ABT.ttb (NOLOAD) : {Image$$TTB$$ZI$$Base = .;. += LENGTH(MMU_TTB);
Image$$TTB$$ZI$$Limit = .;} > MMU_TTB.uncached_RAM (NOLOAD) : {* (NOCACHE_AREA)} > UNCACHED_RAM}25

１１．ベクターテーブルとローダーの関係について
MP-RZA1H 基板は、シリアルフラッシュ ROM にローダーとアプリケーションプログラムを記憶させ、電源 ON 時にローダーが RZA1H の内蔵 RAM にアプリケーションプログラムをロードして実行させる仕組みになっています。ローダーは内蔵 RAM にロードする時にロード先の先頭アドレスと最終アドレスと実行開始アドレスを知る必要があります。この情報を得るため独自の定義が必要なため下記に説明します。

１）ローダーが必要な情報はベクターテーブルに登録する。
「_vector_table.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 : IRQLDR pc, =Fiq_handler@; Start+0x001c : FIQ(NMI)@=====================================================================@ SFROM に登録したローダーに渡す情報@====================================================================
Info_table:.long Image$$VECTOR_TABLE$$Base @; Start+0x0020 ①内蔵 RAM 転送先の開始アドレス.long Image$$DATA$$Limit@; Start+0x0024 : ②内蔵 RAM 転送先の終了アドレス(+1).long vector_table@; Start+0x0028 : ③初期 PC 値long 0@; Start+0x002C : ④デバッグモードフラグ@; DEFnanoを未使用にして、 USB0を開放する場合は、@; 0xDEF0DEF0を定義する。
Info_end:【重要】①②③④の情報は、ROM化するためには必要な情報テーブルです。必ず、定義して下さい。

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

26２）ローダーが必要な情報はベクターテーブルに登録する。
「_vector_table.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:.long _copy_start_@; Start+0x0020 ①内蔵 RAM 転送先の開始アドレス.long _copy_end_ + 1@; Start+0x0024 : ②内蔵 RAM 転送先の終了アドレス(+1).long __RESET@; Start+0x0028 : ③初期 PC 値
long 0@; Start+0x002C : ④デバッグモードフラグ@; DEFnanoを未使用にして、 USB0を開放する場合は、@; 0xDEF0DEF0を定義する。
Info_end:【重要】①②③④の情報は、ROM化するためには必要な情報テーブルです。必ず、定義して下さい。

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

以上です。

27

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

http://www.robin-w.com

28