Rev 1.40.00

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

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

1２．ARMC コンパイラの設定
１）ARMC コンパイラのすべてのオプションを表示

２）ターゲット設定画面

2

Cortex-A9
リトルエンディアン(--littleend)を選択
ARM(--arm)を選択
Thmb 命令のコードを使用する可能性がある場合は、☑して下さい。
☑
vfpv3_fp16

ターゲット CPU(--cpu)
バイト順序
命令セット
インターワーク
アンアライドアクセスをディセーブル
ターゲット FPU(--fpu)
その他は「デフォルト」設定

3３）プリプロセッサ設定画面

C ソ－スに#ifdef 等のマクロ定義している場合に使用します。
注＊１__USED_DEFnano__=xRTOS
CH2
ITF_LIBARMC

USER_Debug
EVrxRZ_Sample
EVrxRZ_Sample_USB
EVrxRZ_Norti
EVrxRZ_Norti_USB
EVRZ_Sample
EVRZ_Sample_USB
EVRZ_Norti
EVRZ_Norti_USB

x = DEFnano を使用[1]する・[0]しない。
NORTi 使用時に定義
NORTi 使用時に定義
USB-Function 使用時に定義
USB-Function 使用時に定義

サンプルプロジェクト別に必要なマクロ定義例__USED_DEFnano__=1__USED_DEFnano__=1__USED_DEFnano__=1
ITF_LIB__USED_DEFnano__=1 RTOS
CH2__USED_DEFnano__=1 RTOS
CH2
ITF_LIB__USED_DEFnano__=1__USED_DEFnano__=1
ITF_LIB__USED_DEFnano__=1 RTOS
CH2__USED_DEFnano__=1 RTOS
CH2
ITF_LIB

ARMC
ARMC
ARMC
ARMC

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

4４）インクルード設定画面

サンプルプロジェクト別に必要なインクルードパスの設定例
USER_Debug"${workspace_loc:/${ProjName}/src_app/inc}""${workspace_loc:/${ProjName}/src_sys/inc}""${workspace_loc:/${ProjName}/src_sys/inc/iodefines}"
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}"
5

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}"6５）ソース言語設定画面（デフォルト設定）

６）最適化設定画面

デバッグ中は、「最小（-O0）」7７）デバッグ設定画面☑デバッグをイネーブル
デバッグ形式「DWARF2」８）警告およびエラー設定画面

サンプルプロジェクトは、「☑すべての警告を抑制する」にしてあります。

8９）その他設定画面【重要】
DEFnano を使用してデバッ
グされる場合は、必ず[--arm-only]のオプションフラグを追加して下さい。

9

３．ARM アセンブラの設定
１）ARM アセンブラのすべてのオプションを表示

２）ターゲット設定画面

10

ARMC コンパイラのターゲット設定と同じにする。
Cortex-A9
ターゲット CPU(--cpu)
バイト順序リトルエンディアン(--littleend)を選択
命令セット
ARM(--arm)を選択
インターワーク
Thmb 命令のコードを使用する可能性がある場合は、☑して下さい。
アンアライドアクセスをディセーブル
☑
vfpv3_fp16
ターゲット FPU(--fpu)
その他は「デフォルト」設定
３）プリプロセッサ設定画面（デフォルト設定）

４）デバッグ設定画面☑デバッグをイネーブル
デバッグ形式「DWARF2」11５）警告およびエラー設定画面

サンプルでは、「A1786W」を設定しています。

12６）その他設定画面【重要】
DEFnano を使用してデバッ
グされる場合は、必ず[--arm-only]のオプションフラグを追加して下さい。

USER_Debug
EVrxRZ_Sample
EVrxRZ_Sample_USB
EVRZ_Sample
EVRZ_Sample_USB
EVrxRZ_Norti
EVrxRZ_Norti_USB
EVRZ_Norti
EVRZ_Norti_USB

サンプルプロジェクトの追加オプション--arm-only
ARM_ONLY コード-i ../src_sys/inc/
インクルードパスの設定
注＊１--pd="__USED_DEFnano__ EQU x"--arm-only--pd="MMU SETL {TRUE}"--pd="CACHE_ISETL {TRUE}"--pd="CACHE_D SETL {TRUE}"--pd="CACHE_L2 SETL {TRUE}"--pd="CACHE_WT SETL {TRUE}"
注＊１--pd="__USED_DEFnano__ EQU x"

x = DEFnano を使用[1]する・[0]しない。
ARM_ONLY コード
MMU と各キャッシュを有効・無効の指定用フラグ

x = DEFnano を使用[1]する・[0]しない。

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

13

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

２）ターゲット設定画面

ARMC コンパイラと ARM アセンブラのターゲット設定と同じにする。
Cortex-A9
ターゲット CPU(--cpu)
vfpv3_fp16
ターゲット FPU(--fpu)

14３）イメージレイアウト設定画面

ベクターテーブルの先頭シンボルを設定する。

スキャッタファイルをここで間接指定するとビルドエラーになるため設定しない。(DS-5 Ver5.20.2)
対策として、その他設定で追加する。

15４）ライブラリ設定画面

USER_Debug
EVrxRZ_Sample
EVRZ_Sample
EVrxRZ_Sample_USB
EVRZ_Sample_USB
EVrxRZ_Norti
EVRZ_Nort
EVrxRZ_Norti_USB
EVRZ_Norti_USB

USER_Debug
EVrxRZ_Sample
EVRZ_Sample
EVrxRZ_Sample_USB
EVRZ_Sample_USB
EVrxRZ_Norti
EVRZ_Norti
EVrxRZ_Norti_USB
EVRZ_Norti_USB

サンプルプロジェクト別のライブラリ検索パスなし"${workspace_loc:/${ProjName}/ITF_LIB}""${workspace_loc:/${ProjName}/NORTi_LIB/CA9/DS5}""${workspace_loc:/${ProjName}/ITF_LIB}""${workspace_loc:/${ProjName}/NORTi_LIB/CA9/DS5}"
サンプルプロジェクト別のライブラリファイル
なし
ITFUSBLib_RZA1H_A1.a（別売り）
n4d7anol.a （別売り）
n4e7anol.a（別売り）
ITFUSBLib_RZA1H_A1.a（別売り）
n4d7anol.a（別売り）
n4e7anol.a（別売り）

16５）最適化設定画面（デフォルト設定）

６）追加情報の設定画面

リンカで生成される「Project.map」に追加される情報の選択画面です。必要に応じて選択する。

17７）警告およびエラー設定画面（デフォルト設定）

８）その他設定画面【重要】
DEFnano を使用してデバッ
グされる場合は、必ず[--arm-only]のオプションフラグを追加して下さい。

--arm-only--symbols--load_addr_map_info--datacompressor=off--library_type=standardlib--scatter ..¥scatter_file¥scatter.scat

追加オプション
標準ライブラリを ARM 命令のみで作成
各ローカルとグローバルシンボル、およびそのアドレス一覧を作成する。
実行領域のロードアドレスをマップファイルに追加する。
RW データ圧縮を無効にする。
リンク時にフルランタイムライブラリを選択します。
各セクションのアドレス指定にスキャッタフ
ァイルを使用する。

18

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

ビルド実行前と実行後に追加したいコマンドがある場合に設定します。
サンプルプロジェクトでは「after_build.bat」にて実行後に設定する。
fromelf --bin --output=%1.bin %1.axf
bin ファイルの作成
fromelf --m32combined --output=%1.mot %1.axf
mot ファイルの作成

６．ビルド成果物の設定画面（デフォルト設定）

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

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

全てノーチェック（使用していません）

８．エラー・パーサー設定画面「☑ARM コンパイラエラーパーサー」のみを使用する。

20

９．スキャッタファイルについて
スキャッタファイルとは、セグメントごとにアブソリュートアドレスを定義するためのファイルです。スキャッタファイル独自の予約語がありますので ARM 社が提供しているドキュメント「ARM コンパイラツールチェーン リンカの使用：DUI0474GJ_using_the_arm_linker.pdf」の「８：スキャッタファイルの使用」を参照して下さい。
サンプルプロジェクト[scatter.scat]の定義例 1#! armcc -E;Content-Type: text/plain; charset=utf-8;/*******************************************************************************;* File Name : scatter.scat;* Description : Scatter file;*******************************************************************************/;; Definition of On-chip large-capacity RAM (LRAM) area
#define LRAM_START(0x20000000)#define LRAM_SIZE(0x00A00000)#define LRAM_END(LRAM_START+LRAM_SIZE)#define APP_START#define VECT_SIZE#define APP_SIZE(0x20080000)(0x100)(0x300000)#define TTB_START#define TTB_SIZE#define ARM_LIB_STACK_SIZE#define STACK_SIZE#define ARM_LIB_HEAP_SIZE((APP_START+APP_SIZE) AND 0xFFFFC000)(0x4000)(0x8000)(0x80000)(0x8000)

LOAD_ROM APP_STARTAPP_SIZE{VECTOR_TABLE+0{ * (VECTOR_TABLE, +FIRST) };; CODE/CONST/DATA Area
FIXED;; CODE/CONST/DATA Area;; Vector table

RESET_INIT_HANDLER+VECT_SIZE FIXED{ * (RESET_INIT_HANDLER)}InRoot+0{ * (InRoot$$Sections)

FIXED}CODE{ * (+RO-CODE)

+0}

CONST
{ * (+RO-DATA)+0DATA{ * (+RW)+0;; All (library) code
FIXEDFIXED}FIXED}

21

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
use as RAM Area;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TTB TTB_STARTEMPTY TTB_SIZE ;; Level-1 Table for MMU(AND 0xFFFFC000){}
ARM_LIB_STACK{}+0 EMPTY ARM_LIB_STACK_SIZESTACK_TOP{}+0 EMPTY STACK_SIZE

ARM_LIB_HEAP{}+0 EMPTY ARM_LIB_HEAP_SIZEBSS{ * (+ZI)+0}

LAN_BSS{ * (LAN_BSS)
VIDEO_BSS{ * (VIDEO_BSS)

0x60700000}
0x60800000};; Application stack;; Application heap;; No Cache Area}

サンプルプロジェクト[scatter.scat]の定義例の一部
ARM_LIB_STACK STACK_BSS_START{}
IRQ_STACK+0{}
FIQ_STACK+0{}
SVC_STACK+0{}
ABT_STACK+0{}
ARM_LIB_HEAP+0{}

EMPTY 0x8000;; Application stack

EMPTY 0x8000;; IRQ mode stack

EMPTY 0x2000;; FRQ mode stack

EMPTY 0x2000;; SVC mode stack

EMPTY 0x2000;; ABT mode stack

EMPTY 0x8000;; Application heap

EMPTY 0xnnnn は、SIZE を指定していることになります。
スキャッタファイルを編集する場合の注意点
１）#define 行にコメント文をいれないで下さい。
２）漢字入力した場合、このファイルに限り「UTF-8」コードになります。
３）MP-RZA1H 基板を使用する限り、変更する箇所は#define の[VECT_SIZE と TTB_SIZE]以外の xxxx_SIZE のみにして下さい。

22

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

１）ローダーが必要な情報はベクターテーブルに登録する。
「_vector_table_s.s/_vevtor_table_r.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 |Image$$VECTOR_TABLE$$Base| ; Start+0x0020 :①内蔵RAM転送先の開始アドレス
DCD |Image$$DATA$$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」以外の数値を直接書き込んでください。

以上です。
23

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

http://www.robin-w.com
24