Comments
Description
Transcript
RZ/A1H グループ
アプリケーションノート RZ/A1H グループ ARM® Development Studio 5(DS-5TM) R01AN1978JJ0081 Rev.0.81 2016.09.16 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 要旨 本アプリケーションノートは、RZ/A1Hの MMC ホストインタフェースに接続された MMC コントローラ内 蔵 NAND フラッシュメモリ(以下、eMMC デバイスとします)に対して、ブートモード 5(eMMC ブート) 用プログラムをダウンロードする方法について説明します。 なお、本アプリケーションノートで紹介するダウンロード例は、ARM 社の統合開発環境 Development Studio 5(DS-5TM)(以下、DS-5 とします)のセミホスティング機能、および ARM 社 JTAG エミュレータ ULINK2 を使用します。DS-5 のセミホスティング機能の詳細については、ARM 社より提供されるドキュメントを参 照してください。 また、本アプリケーションノートで紹介するダウンロード方法は、RZ/A1 用 MMC ドライバソフトウェア (以下、MMC ドライバとします)を使用します。 対象デバイス RZ/A1H 本アプリケーションノートを他のマイコンへ適用する場合、そのマイコンの仕様にあわせて変更し、十分 評価してください。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 1 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 目次 1. 1.1 1.2 仕様 ..................................................................................................................................4 eMMC デバイスへのダウンローダの動作概要 ............................................................................. 4 使用する周辺機能 ......................................................................................................................... 5 2. 動作確認条件 ....................................................................................................................6 3. 関連アプリケーションノート ........................................................................................... 6 4. ハードウェア説明.............................................................................................................7 4.1 4.2 5. ハードウェア構成例 ...................................................................................................................... 7 使用端子一覧 ................................................................................................................................. 8 ソフトウェア説明.............................................................................................................9 5.1 eMMC デバイスへのダウンロードに関連する用語 ...................................................................... 9 5.2 ダウンローダの動作概要............................................................................................................. 11 5.2.1 ダウンローダの処理 .............................................................................................................. 11 5.2.2 チェックサムブロック(512 バイト)の生成方法 ............................................................... 13 5.2.3 eMMC デバイスのレジスタ設定処理 .................................................................................... 14 5.3 ダウンローダの書き込み先の指定方法 ....................................................................................... 15 5.4 ダウンローダ実行時のプログラムデータの書き込み先.............................................................. 17 5.4.1 ローダプログラムの書き込み先............................................................................................ 17 5.4.2 アプリケーションプログラムの書き込み先 ......................................................................... 18 5.5 ダウンローダの生成方法............................................................................................................. 19 5.6 サンプルコード実行時の周辺機能の設定およびメモリ配置 ...................................................... 20 5.6.1 周辺機能の設定 ..................................................................................................................... 20 5.6.2 サンプルコードのセクション配置 ........................................................................................ 21 5.6.3 ダウンローダのメモリマップ ............................................................................................... 22 5.7 変数一覧 ...................................................................................................................................... 23 5.8 関数一覧 ...................................................................................................................................... 24 5.9 関数仕様 ...................................................................................................................................... 26 5.10 ダウンローダの動作フロー ......................................................................................................... 33 5.10.1 ダウンローダ(全体)の動作フロー .................................................................................... 33 5.10.2 ローダプログラムの書き込みフロー .................................................................................... 34 5.10.3 アプリケーションプログラムの書き込みフロー .................................................................. 35 6. サンプルコードの説明.................................................................................................... 36 6.1 サンプルコードの使用手順 ......................................................................................................... 36 6.1.1 GENMAI ボードの設定 ......................................................................................................... 37 6.1.2 DS-5 スクリプトのコピー..................................................................................................... 37 6.1.3 プロジェクトのインポートおよびビルド ............................................................................. 38 6.1.4 実行可能ファイルからバイナリファイルへのデータ変換 .................................................... 38 6.1.5 ダウンローダ実行形式ファイルのコピー ............................................................................. 39 6.1.6 DS-5 デバッグ構成の設定.................................................................................................... 39 6.1.7 ARM 社製エミュレータ ULINK2 と GENMAI ボードとの接続 ............................................. 39 6.1.8 ダウンロードスクリプトの実行............................................................................................ 40 6.2 GENMAI ボード初期化スクリプト ............................................................................................. 41 6.3 ダウンロードスクリプト............................................................................................................. 42 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 2 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.3.1 6.3.2 7. ローダプログラム書き込み用 DS-5 スクリプト ................................................................... 42 アプリケーションプログラム書き込み用 DS-5 スクリプト ................................................. 43 サンプルコードで使用する MMC ドライバについて ...................................................... 44 7.1 RZ/A1 MMC ドライバについて ................................................................................................... 44 7.1.1 MMC ドライバのバージョン情報 ......................................................................................... 44 8. 参考ドキュメント........................................................................................................... 45 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 3 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 1. 1.1 仕様 eMMC デバイスへのダウンローダの動作概要 RZ/A1Hは、ブートモード 5(eMMC ブート)に設定時、eMMC デバイスからブートします。eMMC デバイ スからブートするためには、eMMC デバイスに対してブートモード 5(eMMC ブート)用プログラムを書き 込む必要があります。ブートモード 5(eMMC ブート)用プログラムは、ローダプログラムとアプリケーショ ンプログラムから構成されています。 本アプリケーションノートでは、eMMC デバイスに対してローダプログラムとアプリケーションプログラ ムを書き込むためのダウンローダについて説明します。ダウンローダは、DS-5 のセミホスティング機能を使 用して、DS-5 ワークスペースに格納されているローダプログラムバイナリファイルおよびアプリケーション プログラムバイナリファイルのデータを取得し、eMMC デバイスへのプログラムの書き込みを実現していま す。なお、本ダウンロード例では、eMMC デバイスにアクセスするために、RZ/A1 用 MMC ドライバを使用 しています。 図 1.1にダウンローダの動作概要を示します。ダウンローダは、DS-5 スクリプト(ダウンローダ起動用) を実行することにより、処理が開始されます。また、DS-5 スクリプト(ダウンローダ起動用)の記述内容に より、書き込み対象のファイルや書き込み先のセクタ番号等を指定することが可能です。詳細については、 「5.3 ダウンローダの書き込み先の指定方法」を参照してください。 PC上のファイル 4. eMMCデバイスに プログラムデータをライト eMMC ■DS-5スクリプト(ダウンローダ起動用) ・RZ_A1H__emmc_boot_loader_armcc.ds ・RZ_A1H__emmc_boot_sample_armcc.ds eMMCデバイス基板 ■ダウンローダ生成プロジェクト RZ_A1H_fmtool_emmc ・RZ_A1H__fmtool_emmc.axf 大容量内蔵RAM MMCスロット(J15) ホストPC DS-5 2. ダウンローダの 実行開始 ダウンローダ 1. ダウンローダを 大容量内蔵RAM上に転送 ULINK2 R7S72100 プログラムデータ 3. ホストPC上にある プログラムファイルの データを大容量内蔵RAM上に転送 図1.1 ■ローダプログラム生成プロジェクト RZ_A1H_emmc_boot_loader_armcc ・RZ_A1H_emmc_boot_loader_armcc.axf ・RZ_A1H_emmc_boot_loader_armcc.bin ■アプリケーションプログラム生成プロジェクト RZ_A1H_emmc_boot_loader_armcc ・RZ_A1H_emmc_boot_sample_armcc.axf ・RZ_A1H_emmc_boot_sample_armcc.bin - CONST_DL_TABLE - VECTOR_TABLE - VECTOR_MIRROR_TABLE - RESET_HANDLER ダウンローダの動作概要 1. GENMAI ボードと ULINK2 との接続が確立した後、DS-5 スクリプト(ダウンローダ起動用)を実行する ことにより、ダウンローダ(RZ_A1H_fmtool_emmc.axf)を大容量内蔵 RAM に転送され、ダウンローダが 起動します。 2. RZ/A1Hは、大容量内蔵 RAM 上にあるダウンローダを実行し、eMMC デバイスに対してプログラムデー タのライト処理を開始します。 3. ダウンローダは、ファイル操作関数(fopen 関数、fread 関数、fclose 関数等)をコールして、セミホスティ ング機能により、ホスト PC 上に存在する eMMC へ書き込み対象の eMMC ブート用プログラムのバイナ リファイルにアクセスし、プログラムデータを大容量内蔵 RAM 上に転送します。 4. 3.で取得した eMMC ブート用のプログラムデータ(バイナリファイル)を eMMC デバイスにライトしま す。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 4 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 1.2 使用する周辺機能 サンプルコードのアプリケーションプログラムでは、クロックパルス発振器、汎用入出力ポート、低消費 電力モード、MMC ホストインタフェースの初期設定を行います。 本アプリケーションノートでは、クロックパルス発振器を CPG、汎用入出力ポートを PORT、低消費電力 モードを STB、MMC ホストインタフェースを MMCHI とします。 表 1.1に使用する周辺機能と用途を、図 1.2にサンプルコード実行時の動作環境を示します。 表1.1 使用する周辺機能と用途 用途 周辺機能 クロックパルス発振器(CPG) 汎用入出力ポート(PORT) 低消費電力モード(STB) MMC ホストインタフェース(MMCHI) eMMC RZ/A1Hの動作周波数の生成 MMCHI の端子制御に使用 RZ/A1Hの周辺 IO のモジュールスタンバイを解除するために 使用、保持用内蔵 RAM をライト許可するために使用 eMMC デバイスのアクセス制御に使用 eMMCデバイス基板 ホストPC MMCスロット(J15) JTAGコネクタ(J22) ULINK2 USB接続 R7S72100 R7S72100 CPUボード RTK772100BC00000BR 図1.2 R01AN1978JJ0081 2016.09.16 Rev.0.81 動作環境 Page 5 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 2. 動作確認条件 本アプリケーションノートのサンプルコードは、下記の条件で動作を確認しています。 表2.1 動作確認条件 内容 項目 使用マイコン 動作周波数(注 1) RZ/A1H CPU クロック(Iφ):400MHz 画像処理クロック(Gφ):266.67MHz 内部バスクロック(Bφ):133.33MHz 周辺クロック(P1φ):66.67MHz 周辺クロック(P0φ):33.33MHz 電源電圧(I/O):3.3V 動作電圧 電源電圧(内部):1.18V ARM®統合開発環境 ARM Development Studio 5(DS-5TM)Version 5.16 ARM C/C++ Compiler/Linker/Assembler Ver.5.03 [Build 102] コンパイラオプション -O3 -Ospace --cpu=Cortex-A9 --littleend --arm --apcs=/interwork --no_unaligned_access --fpu=vfpv3_fp16 -g –asm ARM 社製エミュレータ ULINK2 ブートモード 5 (eMMC ブート) GENMAI ボード R7S72100 CPU ボード RTK772100BC00000BR 統合開発環境 C コンパイラ エミュレータ 動作モード 使用ボード 使用デバイス (ボード上で使用する機能) • eMMC デバイス(MMC スロット(J15)に接続)(注 2) 【注】 1. クロックモード 0(EXTAL 端子からの 13.33MHz のクロック入力)で使用時の動作周波数です。 2. eMMC デバイスはお客様側で準備してください。 3. 関連アプリケーションノート 本アプリケーションノートに関連するアプリケーションノートを以下に示します。 • RZ/A1H グループ レジスタ定義ヘッダ・ファイル iodefine.h(R01AN1860JJ) • RZ/A1H グループ 初期設定例(R01AN1864JJ) • RZ/A1H グループ MMC コントローラ内蔵 NAND フラッシュメモリからのブート例(R01AN1977JJ) R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 6 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 4. 4.1 ハードウェア説明 ハードウェア構成例 図 4.1に接続例を示します。 ENB RZ/A1H JTAG20コネクタ MMCスロット DBGRQ DBGACK RTCK TCK / SWCLK TMS / SWDIO TDO / SWO TDI P3_8/MMC_CD TCK TMS TDO TDI nTRST TRST# nSRST P3_13/MMC_CMD P3_12/MMC_CLK P3_14/MMC_D3 P3_15/MMC_D2 P3_10/MMC_D1 P3_11/MMC_D0 CD CMD CLK VDD MMC電源IC OUT COMMON DAT3 DAT2 DAT1 DAT0 RES# MD_BOOT0 MD_BOOT1 MD_BOOT2 RES# 【注】 1. TRST#と RES#には、 「RZ/A1H グループ、RZ/A1M グループ ユーザーズマニュアル ハードウェ ア編」に記載のタイミングを満たす信号を入力するようにお客様にてシステムを設計してください 2. #は負論理(またはアクティブロー)を示す記号です。 図4.1 R01AN1978JJ0081 2016.09.16 Rev.0.81 接続例 Page 7 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 4.2 使用端子一覧 表 4.1に使用端子と機能を示します。 表4.1 端子名 MD_BOOT2 MD_BOOT1 MD_BOOT0 TCK TMS TRST# TDI TDO RES# MMC_CLK MMC_CMD MMC_D0 MMC_D1 MMC_D2 MMC_D3 MMC_CD(注) 使用端子と機能 入出力 入力 入力 入力 入力 入力 出力 入力 出力 入出力 入出力 入出力 入出力 入出力 入力 内容 ブートモードの選択 MD_BOOT2:"H"、MD_BOOT1:"H"、MD_BOOT0:"H" (ブートモード 5(eMMC ブート)に設定) テストクロック テストモードセレクト テストリセット テストデータ入力 テストデータ出力 システムリセット信号 MMC クロック コマンド出力/レスポンス 送信データ[bit0]/受信データ[bit0] 送信データ[bit1]/受信データ[bit1] 送信データ[bit2]/受信データ[bit2] 送信データ[bit3]/受信データ[bit3] カード検出 【注】 1. #は負論理(またはアクティブロー)を示す記号です。 2. 本アプリケーションノートでは使用していません。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 8 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5. ソフトウェア説明 この章では、eMMC デバイスへのダウンロードの概要について説明します。 5.1 eMMC デバイスへのダウンロードに関連する用語 表 5.1、表 5.2に本アプリケーションノートで使用する eMMC デバイスへのダウンロードに関する用語を示 します。 表5.1 eMMC デバイスへのダウンロードに関する用語(1/2) 用語 説明 ブート起動用内蔵 ROM プログラム ブート起動用内蔵 ROM プログラムは、ブートモード 5(eMMC ブー ト)で起動した場合に、eMMC デバイスの先頭に格納されているロー ダプログラムを大容量内蔵 RAM に転送し、ローダプログラムのエント リポイントに分岐する処理を行うプログラムです。CPU 内のブート起 動用内蔵 ROM に格納されているため作成する必要はありません。 ローダプログラムは、アプリケーションプログラムを eMMC デバイス から大容量内蔵 RAM に転送し、アプリケーションプログラムのエント リポイントに分岐する処理を行うプログラムです。ローダプログラム のプログラムサイズは 28K バイトに収まるように作成してください。 お客様がシステムに応じて作成してください。 アプリケーションプログラムは、お客様がシステムに応じて作成する プログラムです。お客様がシステムに応じて作成してください。 ダウンローダは、ローダプログラムとアプリケーションプログラムを eMMC デバイスへ書き込むためのプログラムです。本アプリケーショ ンノートを参考に、お客様がシステムに応じて作成してください。 ターゲットボード上で実行するコードで、DS-5 を実行するホスト PC の入出力機能と通信し、これを使用することを可能にするメカニズム です。詳細は ARM より提供されるドキュメントを参照してください。 • ターゲット上で実行されているコード(オンボード実行プログラ ム)で、デバッガを実行しているホスト PC の入出力機能と通信す るためにセミホスティング機能を使用します。 • ターゲット CPU から DS-5 のアプリケーションコンソールに対す る入出力および、ホスト PC に格納されたファイルの操作(fopen 関数、fread 関数、fclose 関数等を使用)するために使用します。 ローダプログラム アプリケーションプログラム ダウンローダ セミホスティング R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 9 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 表5.2 eMMC デバイスへのダウンロードに関する用語(2/2) 用語 説明 アプリケーションプログラム プロジェクト ローダプログラム プロジェクト ダウンローダ プロジェクト アプリケーションプログラム バイナリファイル ローダプログラム バイナリファイル R01AN1978JJ0081 2016.09.16 Rev.0.81 DS-5 にて、アプリケーションプログラム実行形式ファイル(axf ファイ ル)を生成するためのプロジェクトです。 DS-5 にて、ローダプログラム実行形式ファイル(axf ファイル)を生成す るためのプロジェクトです。 DS-5 にて、ダウンローダ実行形式ファイル(axf ファイル)を生成するた めのプロジェクトです。 eMMC デバイスに書き込むアプリケーションプログラムのデータファイ ルです。DS-5 にて、アプリケーションプログラムプロジェクトのビルド より生成したアプリケーションプログラム実行形式ファイル(axf ファイ ル)より、バイナリファイル生成ツール(fromelf.exe)を使用して生成し ます。 eMMC デバイスに書き込むローダプログラムのデータファイルです。 DS-5 のビルドより生成されたローダプログラム実行形式ファイル(axf ファイル)より、バイナリ生成ツール(fromelf.exe)を使用して生成します。 Page 10 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.2 ダウンローダの動作概要 5.2.1 ダウンローダの処理 図 5.1と図 5.2にダウンローダの動作イメージを示します。ダウンローダは、RZ/A1Hの大容量内蔵 RAM 上 で実行され、セミホスティング機能を使用し、DS-5 を実行するホスト PC の DS-5 ワークスペースに格納され ているローダプログラムバイナリファイルおよびアプリケーションプログラムバイナリファイルのデータを 取得して、eMMC デバイスへのプログラム書き込みを実現しています。 MMCコントローラ内蔵NANDフラッシュメモリ (eMMCデバイス) RZ/A1H ホストPC 大容量内蔵RAM 2.ダウンローダの実行開始 5. ローダプログラムを ライトするパーティションを選択 1.ダウンローダを大容量内蔵RAMに転送 eMMCダウンローダ (RZ_A1H_fmtool_emmc.axf) eMMCダウンローダ ULINK2 ローダプログラム(28KB) ローダプログラム のバイナリファイル 7.ローダプログラムをライト 3. ローダプログラムの データを大容量内蔵RAM上に転送 ローダプログラム(28KB) セクタ56 セクタ1 ローダプログラム用 チェックサムブロック(512バイト) 6.チェックサムブロックをライト ローダプログラム用 セクタ0 チェックサムブロック(512バイト) 4. ローダプログラムのデータを使用して チェックサムブロック(512バイト)を計算 Extended CSD(EXT_CSD)レジスタ 8.ベリファイ [177] (BOOT_BUS_WIDTH) [179] (PARTITION_CONFIG) 9. Extended CSDレジスタに Boot Operation時の ブートパーティション、 データバス幅を設定 図5.1 ローダプログラム書き込み時の eMMC ダウンローダの動作イメージ 1. GENMAI ボードと ULINK2 との接続を確立した後、ダウンローダ(RZ_A1H_fmtool_emmc.axf)を大容量 内蔵 RAM に転送します。 2. RZ/A1Hは、大容量内蔵 RAM 上にあるダウンローダの実行を開始します。 3. ダウンローダは、 ホスト PC に格納されているローダプログラムのデータをファイル操作関数 (fopen 関数、 fread 関数、fclose 関数)を使用して、大容量内蔵 RAM 上に転送します。転送後、ローダプログラムのサ イズが 28K バイト未満の場合は、28K バイトのローダプログラムとなるように 0 データ領域を追加します。 4. ダウンローダは、大容量内蔵 RAM 上のローダプログラム(28K バイト)のデータを使用して、ローダプ ログラム用チェックサムブロック(512 バイト)のデータを計算します(「5.2.2 チェックサムブロック (512 バイト)の生成方法」参照)。 5. ダウンローダは、ローダプログラムをライトするパーティションを選択します(サンプルコードでは、Boot Partition 1)。 6. ダウンローダは、eMMC デバイスに対してローダプログラム用チェックサムブロック(512 バイト)をラ イトします。 7. ダウンローダは、eMMC デバイスに対してローダプログラム(28K バイト)をライトします。 8. 書き込み完了後、ダウンローダは、eMMC デバイスからチェックサムブロックとローダプログラムのデー タを読み出し、チェックサムブロックとローダプログラムが正しく書き込めたことを検証します。 9. ダウンローダは、Boot Operation 時にデータバス幅 4 ビットで Boot Partition1 からブートするように、eMMC デバイスの Extended CSD(EXT_CSD)レジスタに対して設定処理を行います(「5.2.3 eMMC デバイス のレジスタ設定処理」参照)。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 11 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) MMCコントローラ内蔵NANDフラッシュメモリ (eMMCデバイス) RZ/A1H 大容量内蔵RAM ホストPC 2.ダウンローダの実行開始 3. アプリケーション プログラムをライトする パーティションを選択 1.ダウンローダを大容量内蔵RAMに転送 eMMCダウンローダ (RZ_A1H_fmtool_emmc.axf) eMMCダウンローダ ULINK2 アプリケーションプログラム のバイナリファイル アプリケーションプログラム 4. 16Kバイト単位でファイルデータを リード アプリケーションプログラム 5. 16Kバイト単位でデータを ライト セクタn 6. 4.と5.の処理をファイルサイズ分 繰り返す 7. ベリファイ処理を実行 図5.2 アプリケーションプログラム書き込み時の eMMC ダウンローダの動作イメージ 1. GENMAI ボードと ULINK2 との接続を確立した後、ダウンローダ(RZ_A1H_fmtool_emmc.axf)を大容量 内蔵 RAM に転送します。 2. RZ/A1Hは、大容量内蔵 RAM 上にあるダウンローダの実行を開始します。 3. ダウンローダは、アプリケーションプログラムをライトするパーティションを選択します(サンプルコー ドでは、Boot Partition 2)。 4. ダウンローダは、セミホスティング機能により、ホスト PC に格納されているバイナリファイルを 16K バ イト(32 セクタ)単位で読み出します。ファイルの読み出し処理には、ファイル操作関数の fopen 関数、 fread 関数、fclose 関数)を使用します。 5. 4.で読み出したアプリケーションプログラムのデータを eMMC デバイスに書き込みます。 6. 4.と 5.の処理をアプリケーションプログラムのファイルサイズ分だけ繰り返します。 7. 書き込み完了後、ダウンローダは、eMMC デバイスからアプリケーションプログラムのデータを読み出し、 アプリケーションプログラムが正しく書き込めたことを検証します。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 12 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.2.2 チェックサムブロック(512 バイト)の生成方法 チェックサムブロック(512 バイト)には、ローダプログラムを構成するセクタ毎に計算したチェックサム と反転チェックサムを格納し、最後の 4 バイトにシグネチャ(H'0000_55aa)を格納してください。図 5.3に ローダプログラム用チェックサムブロックの格納フォーマットを示します。 MMCコントローラ内蔵NANDフラッシュメモリ (eMMCデバイス) セクタ56 H'01fc ローダプログラム(セクタ56) H'0000_55aa シグネチャ ALL 0 H'01bc ・・・ ローダプログラム(セクタ56)の反転チェックサム値 ・・・ セクタ3 ローダプログラム(セクタ3) セクタ2 ローダプログラム(セクタ2) セクタ1 ローダプログラム(セクタ1) セクタ0 チェックサムブロック(512バイト) H'00e8 H'00e4 H'00e0 H'00dc ローダプログラム(セクタ3)の反転チェックサム値 ローダプログラム(セクタ2)の反転チェックサム値 ローダプログラム(セクタ1)の反転チェックサム値 ローダプログラム(セクタ56)のチェックサム値 H'0008 H'0004 H'0000 ローダプログラム(セクタ3)のチェックサム値 ローダプログラム(セクタ2)のチェックサム値 ローダプログラム(セクタ1)のチェックサム値 ・・・ 図5.3 ローダプログラムを512バイト単位 56ブロックに分割し、各ブロックの 反転チェックサムを格納 ローダプログラムを512バイト単位 56ブロックに分割し、各ブロックの チェックサムを格納 ローダプログラム用チェックサムブロックの格納フォーマット 各セクタのチェックサム値は、ローダプログラムの 1 セクタ分のデータを 2 バイト単位で読み出し(読み 出したデータは符号なし 2 バイト変数として扱う)、符号なし 4 バイト変数に加算して計算してください。 また、反転チェックサム値には、チェックサム値をビット反転した値を格納してください。図 5.4にローダプ ログラム用チェックサム値の計算例を示します。 loop; uint32_t uint16_t *ptr; ← ローダプログラムのデータを 2バイト単位でアクセスするためのポインタ変数 uint32_t checksum ; ← 計算したチェックサム値を格納するのは 符号なし4バイト変数 checksum = 0; ptr = (uint16_t *)sector_buf; ← ローダプログラムの1セクタ分のデータが格納 されているバッファsector_bufのアドレスをポインタ変数ptrに設定 for( loop = 0; loop < (512 / 2); loop++ ) { ← 1セクタ(512バイト)分の全データに対して checksum += *ptr; 2バイト単位で読み出して、 ptr++; 符号なし4バイト変数check_sumに加算する } 図5.4 R01AN1978JJ0081 2016.09.16 Rev.0.81 ローダプログラム用チェックサム値の計算例 Page 13 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.2.3 eMMC デバイスのレジスタ設定処理 RZ/A1Hのブートモード 5(eMMC ブート)では、Boot Operation により、eMMC よりローダプログラムデー タを読み出します。eMMC ダウンロードでは、Boot Operation 時の Boot Partition やデータバス幅を指定する ために、eMMC デバイスの Extended CSD レジスタの設定処理を実行します。表 5.3、表 5.4に Extended CSD レジスタへの設定値を示します。 表5.3 eMMC デバイス Extended CSD のフィールド BOOT_BUS_WIDTH[177] Boot Operation 時のデータバス幅設定 設定内容 Bit[1:0] BOOT_BUS_WIDTH:b’01 (Boot Operation 動作時のバス幅を 4 ビットに設定) 【注】 上記レジスタは non-volatile のため、電源 OFF しても値を保持します。 表5.4 eMMC デバイス Extended CSD のフィールド PARTITION_CONFIG[179] Boot Operation 時のパーティション設定 設定内容 • Bit[6] BOOT_ACK:b’1 (BOOT Operation 時に eMMC が BOOT Acknowledge を出力する 設定) • Bit[5:3] BOOT_PARTITION_ENABLE:b’001 (BOOT Operation 時に Boot Partition1 の 0 セクタからデータを出 力する設定) 【注】 上記レジスタは non-volatile のため、電源 OFF しても値を保持します。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 14 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) ダウンローダの書き込み先の指定方法 5.3 ダウンローダは、書き込み用の DS-5 のスクリプトの記述により、書き込み対象のバイナリファイル、MMC デバイスの書き込み先のパーティション番号、セクタ番号等を指定することが可能です。表 5.5にダウンロー ダの引数仕様を示します。この仕様に従い、必要に応じて、ダウンロード用スクリプトファイルの内容を修 正してください。 また、図 5.5にローダプログラム用書き込みスクリプト(RZ_A1H_emmc_boot_loader_armcc.ds)の記述例を、 図 5.6にアプリケーションプログラム書き込みスクリプト(RZ_A1H_emmc_boot_sample_armcc.ds)の記述例 を示します。 表5.5 ダウンローダ用スクリプトファイルの run コマンド引数仕様 引数 argv[0] argv[1] argv[2] argv[3] 説明 run (固定) 書き込み対象のバイナリファイルが格納されているディレクトリパス (DS-5 ワークディレクトリからの相対パス)を指定してください。 例:”RZ_A1H_emmc_boot¥armcc¥RZ_A1H_emmc_boot_sample_armcc¥Debug” 書き込み対象のプログラム種別を指定してください。 • ”L”指定時:ローダプログラムとして書き込み処理を実行 • ”A”指定時:アプリケーションプログラムとして書き込み処理を実行 ローダプログラムの予備領域への書き込みの有無を指定してください。 ※本引数は、argv[2] = ”L”指定時のみ有効。 argv[2] = ”A”指定時は、本引数の内容は無視されます。 • ”Y”指定時:予備領域にローダプログラムをライトする • ”N”指定時:予備領域にローダプログラムをライトしない argv[4] ※ローダプログラム予備領域については、「図 5.7 ローダプログラムの書き込みイメージ 図」を参照してください。 書き込み対象のバイナリファイル名を指定してください。 argv[5] 例:”CONST_DL_TABLE” 書き込み先の eMMC のパーティション番号を指定してください。 argv[6] • ”1”指定時:Boot Partition 1 にプログラムデータをライト • ”2”指定時:Boot Partition 2 にプログラムデータをライト 書き込み先の先頭セクタ番号を指定してください。 ※argv[2] = ”L”指定時、本引数は無視され、固定のセクタ番号に書き込まれます。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 15 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 書き込み対象の バイナリファイル名 <プログラム種別> ローダプログラム argv[4] argv[2] argv[6] argv[0] run "RZ_A1H_emmc_boot\armcc\RZ_A1H_emmc_boot_loader_armcc\Debug" “L” “Y” "VECTOR_TABLE" argv[1] argv[3] 1 <セクタ番号> セクタ0 0 argv[5] 書き込み対象のバイナリファイルが格納されているパス <予備領域への書き込み> <パーティション番号> Boot Partition 1 あり 図5.5 ローダプログラム用書き込みスクリプト(RZ_A1H_emmc_boot_loader_armcc.ds)の記述例 <プログラム種別> アプリケーションプログラム 書き込み対象の バイナリファイル名 argv[4] argv[2] argv[6] argv[0] run "RZ_A1H_emmc_boot\armcc\RZ_A1H_emmc_boot_sample_armcc\Debug\RZ_A1H_emmc_boot_sample_armcc.bin" “A” “N” "CONST_DL_TABLE" argv[1] 書き込み対象のバイナリファイルが格納されているパス 図5.6 argv[3] 2 228 <セクタ番号> セクタ228 argv[5] <予備領域への書き込み> <パーティション番号> Boot Partition 2 なし アプリケーションプログラム書き込みスクリプト(RZ_A1H_emmc_boot_sample_armcc.ds)の記述 例 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 16 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.4 5.4.1 ダウンローダ実行時のプログラムデータの書き込み先 ローダプログラムの書き込み先 表 5.6と図 5.7にサンプルコード(デフォルト)のローダプログラムの書き込み先情報を示します。 表5.6 ローダプログラム用プロジェクトにより生成されるバイナリファイルとその書き込み先に関する情 報 バイナリファイル名 説明 書き込み開始 パーティション番号/セクタ番号 RZ_A1H_emmc_boot_loader_armcc.bin パーティション:Boot Partition 1 セクタ番号:0 パーティション:Boot Partition 1 セクタ番号:57 パーティション:Boot Partition 1 セクタ番号:114 パーティション:Boot Partition 1 セクタ番号:171 ローダプログラム バイナリファイル MMCコントローラ内蔵NANDフラッシュメモリ (eMMCデバイス) :予備領域 セクタ227 セクタ172 セクタ171 ローダプログラム#3(28Kバイト) (予備領域) ローダプログラム#3用 チェックサムブロック(512バイト) ローダプログラムバイナリデータ RZ_A1H_emmc_boot_loader_armcc.bin ダウンローダがローダプログラムより生成した チェックサムブロックデータ セクタ170 ローダプログラム#2(28Kバイト) (予備領域) ローダプログラムバイナリデータ RZ_A1H_emmc_boot_loader_armcc.bin セクタ115 セクタ114 セクタ113 ローダプログラム#2用 チェックサムブロック(512バイト) ローダプログラム#1(28Kバイト) (予備領域) ダウンローダがローダプログラムより生成した チェックサムブロックデータ ローダプログラムバイナリデータ RZ_A1H_emmc_boot_loader_armcc.bin セクタ58 セクタ57 ローダプログラム#1用 チェックサムブロック(512バイト) ダウンローダがローダプログラムより生成した チェックサムブロックデータ セクタ56 ローダプログラム#0(28Kバイト) ローダプログラムバイナリデータ RZ_A1H_emmc_boot_loader_armcc.bin セクタ1 セクタ0 ローダプログラム#0用 チェックサムブロック(512バイト) 図5.7 R01AN1978JJ0081 2016.09.16 Rev.0.81 ダウンローダがローダプログラムより生成した チェックサムブロックデータ ローダプログラムの書き込みイメージ図 Page 17 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.4.2 アプリケーションプログラムの書き込み先 表 5.7と図 5.8にサンプルコード(デフォルト)のアプリケーションプログラムの書き込み先情報を示しま す。 表5.7 アプリケーションプログラム用プロジェクトにより生成されるバイナリファイルとその書き込み先 に関する情報 バイナリファイル名 書き込み開始 パーティション番号/セクタ番号 パーティション:Boot Partition 2 セクタ番号:228 パーティション:Boot Partition 2 セクタ番号:229 パーティション:Boot Partition 2 セクタ番号:230 パーティション:Boot Partition 2 セクタ番号:231 CONST_DL_TABLE VECTOR_TABLE VECTOR_MIRROR_TABLE RESET_HANDLER 説明 ダウンロードテーブル アプリケーションプログ ラム(1) アプリケーションプログ ラム(2) アプリケーションプログ ラム(3) MMCコントローラ内蔵NANDフラッシュメモリ (eMMCデバイス) アプリケーションプログラム(3) RESET_HANDLER セクタ231 セクタ230 アプリケーションプログラム(2) セクタ229 アプリケーションプログラム(1) セクタ228 ダウンロードテーブル VECTOR_MIRROR_TABLE VECTOR_TABLE アプリケーションプ ログラム用プロジェ クトにより生成され たバイナリファイル CONST_DL_TABLE ・ ・ ・ 図5.8 R01AN1978JJ0081 2016.09.16 Rev.0.81 アプリケーションプログラムの書き込みイメージ図 Page 18 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.5 ダウンローダの生成方法 図 5.9にダウンローダの生成フローを示します。ダウンローダは、DS-5 プロジェクトをビルドすることに より生成します。このプロジェクトをダウンローダプロジェクトと呼びます。ダウンローダには、セミホス ティング機能によるバイナリファイルの読み出し処理、CPU 初期化処理および MMC ホストインタフェース (MMCHI)を使用した eMMC デバイスへのアクセス処理を実装して、eMMC ブート用のローダプログラムお よびアプリケーションプログラムの書き込み処理を実現します。本アプリケーションノートのサンプルコー ドでは、eMMC デバイスへのアクセス処理に RZ/A1 用 MMC ドライバを使用しています。 MMCホストインタフェースを使用した MMC、eMMCデバイスの制御処理 周辺モジュールの 初期化処理 ハードウェア 初期化処理 MMCドライバ ソースコード CPU・スタック初期化処理 eMMCデバイスへの プログラム書き込み・ ベリファイ処理 アセンブラ Cコンパイラ セミホスティング機能を有効とすることで、 標準関数(printf、scanf、fopen、fread, fclose等)の入出力先がPC上のリソースとなる。 標準ライブラリ (セミホスティング含) アセンブラ言語 エントリ/スタック設定 オブジェクト モジュール スキャッタファイル リンカ メモリ配置設定 (大容量内蔵RAM実行) 実行形式ファイル 図5.9 R01AN1978JJ0081 2016.09.16 Rev.0.81 ・RZ_A1H_fmtool_emmc.axf (ダウンローダ) ダウンローダの生成フロー Page 19 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.6 5.6.1 サンプルコード実行時の周辺機能の設定およびメモリ配置 周辺機能の設定 表 5.8にサンプルコード実行時の周辺機能の設定内容を示します。 表5.8 モジュール 設定内容 CPU クロック(Iφ):400MHz 画像処理クロック(Gφ):266.67MHz 内部バスクロック(Bφ):133.33MHz 周辺クロック(P1φ):66.67MHz 周辺クロック(P0φ):33.33MHz eMMC デバイスのアクセス制御に使用 CPG MMCHI PORT3 のマルチプレクス端子機能を設定 ・P3_13:MMC_CMD ・P3_12:MMC_CLK ・P3_14:MMC_D3 ・P3_15:MMC_D2 ・P3_10:MMC_D1 ・P3_11:MMC_D0 PORT R01AN1978JJ0081 2016.09.16 周辺機能の設定内容 Rev.0.81 Page 20 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.6.2 サンプルコードのセクション配置 表 5.9にダウンローダで使用するセクションを示します。 表5.9 内容 領域の名前 BOOT_AREA InRoot CODE CODE_MMCHI CONST_MMCHI CONST DATA_MMCHI DATA ARM_LIB_STACK ARM_LIB_HEAP SVC_STACK BSS_MMCHI BSS ダウンローダで使用するセクション 例外処理ベクタテーブル リセットハンドラ処理のプログラムコード 領域 この領域は C 標準ライブラリなどのルート 領域に配置するセクションから構成されて います デフォルトのプログラムコード領域 C ソースでセクション名を定義しない Code タイプのセクションは、すべてこの領域に配 置されます MMCHI ドライバ用のコード領域 MMCHI ドライバ用の定数データ領域 デフォルトの定数データ領域 C ソースでセクション名を定義しない RO Data タイプのセクションは、すべてこの領 域に配置されます MMCHI ドライバ用の初期値ありデータ領域 デフォルトの初期値ありデータ領域 C ソースでセクション名を定義しない RW Data タイプのセクションは、すべてこの領 域に配置されます アプリケーションスタック領域 アプリケーションヒープ領域 スーパバイザ(SVC)モードのスタック領域 MMCHI ドライバ用の初期値なしデータ領域 デフォルトの初期値なしデータ領域 C ソースでセクション名を定義しない ZI Data タイプのセクションは、すべてこの領 域に配置されます タイプ ロード領域 / 実行領域 Code LRAM Code および RO Data Code LRAM Code RO Data RO Data LRAM LRAM LRAM RW Data RW Data LRAM LRAM ZI Data ZI Data ZI Data ZI Data ZI Data LRAM LRAM LRAM LRAM LRAM LRAM 【注】 表中のロード領域および実行領域において、LRAM は大容量内蔵 RAM の領域を表します。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 21 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.6.3 ダウンローダのメモリマップ ダウンローダは、大容量内蔵 RAM 上で実行されます。図 5.3 にダウンローダが使用するメモリ領域を示し ます。 大容量内蔵RAM 初期値なしデータ領域 スタック領域 ヒープ領域 H'2008_0000 初期値ありデータ領域 定数領域 コード領域 H'2002_0000 H'2000_0000 図5.10 ダウンローダが使用するメモリ領域 1. ダウンローダは、RZ/A1Hの大容量内蔵 RAM 領域に配置しています。ダウンローダのエントリポイント は、H’2002_0000 番地に設定しています。 2. ダウンローダが使用するスタック領域等のワーク領域についても、大容量内蔵 RAM 領域に配置していま す。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 22 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.7 変数一覧 表 5.10にサンプルコードで使用する主な変数一覧を示します。 表5.10 サンプルコードで使用する主な変数一覧 変数名 型 内容 uint8_t g_ApplicationProgram_Buffer[] アプリケーションプログラムの バイナリファイルの読み込み用 uint8_t g_LoaderProgram_Buffer[] ローダプログラムのバイナリ ファイルの読み込み用 uint8_t g_Read_Program_Buffer[] uint32_t g_CheckSum_Block[] プログラムデータのベリファイ 用 (eMMC に書き込んだプログラ ムデータの読み出しに使用) チェックサムブロック用 uint32_t g_Read_CheckSum_Block[] R01AN1978JJ0081 2016.09.16 Rev.0.81 チェックサムブロックのベリ ファイ用(eMMC に書き込んだ チェックサムブロックの読み出 しに使用) 使用関数名 ・FMTOOL_WriteApp() ・WriteApp() ・FMTOOL_WriteLoader() ・WriteLoader() ・MakeChecksumBlock() ・VerifyData() ・FMTOOL_WriteLoader() ・WriteLoader() ・MakeChecksumBlock() ・VerifyChecksumBlock() ・VerifyChecksumBlock() Page 23 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.8 関数一覧 サンプルコードで使用する関数について、表 5.11にサンプル関数一覧、表 5.12にサンプルコードで使用す る MMC ドライバ関数一覧を示します。MMC ドライバ関数の詳細仕様については、MMC ドライバのユーザー ズマニュアルをご参照ください。 表5.11 関数名 概要 FMTOOL_Init open_emmc set_mmc_boot_partition set_mmc_boot_bus_width set_mmc_partition_access FMTOOL_WriteDev FMTOOL_ReadDev close_emmc GetFileSize ReadFileData FMTOOL_Main FMTOOL_AppMain FMTOOL_LoaderMain FMTOOL_WriteApp FMTOOL_WriteLoader WriteApp WriteLoader MakeChecksumBlock MakeChecksum VerifyData VerifyChecksumBlock R01AN1978JJ0081 2016.09.16 サンプル関数一覧 Rev.0.81 ダウンローダの初期化 eMMC デバイスの初期化 eMMC デバイスのブートパーティション選択 eMMC デバイスの Boot Operation 時のデータバス幅設定 eMMC デバイスのパーティション選択 eMMC デバイスへのライト eMMC デバイスからのリード eMMC デバイスのアクセス終了 ファイルサイズの取得 ファイルデータの読み出し プログラム書き込みメイン処理 アプリケーションプログラムの書き込み用メイン処理 ローダプログラムの書き込み用メイン処理 アプリケーションプログラムの書き込みとベリファイ ローダプログラムの書き込みとベリファイ アプリケーションプログラムを eMMC デバイスへライト ローダプログラムとチェックサムを eMMC デバイスへライト ローダプログラムのチェックサムブロックの生成 ローダプログラムのチェックサム(1 セクタ分)の計算 プログラムデータのベリファイ チェックサムブロックのベリファイ Page 24 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 表5.12 関数名 概要 ドライバの初期化 カード挿抜割り込み設定 バッファ領域の設定 入力クロックと分周比の設定 タイムアウトの設定 カードのマウント カードレジスタ(EXT_CSD)の取得 カードレジスタ(EXT_CSD)の設定 (SET_EXT_CSD コマンド(CMD6)発行) セクタのリード セクタのライト カードのマウント解除 ドライバの終了 ce_init ce_cd_int ce_set_buffer ce_set_config ce_set_timeout ce_mount ce_csd_get_register ce_csd_set_register ce_read_sect ce_write_sect ce_unmount ce_finalize R01AN1978JJ0081 2016.09.16 サンプルコードで使用する MMC ドライバ関数一覧 Rev.0.81 Page 25 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.9 関数仕様 サンプルコードの関数仕様を示します。 FMTOOL_Init 概 要 宣 言 説 明 引 数 リターン値 open_emmc 概 要 宣 言 説 明 引 数 リターン値 ダウンローダの初期化 int32_t FMTOOL_Init (void) ダウンローダを初期化します。サンプルコードでは、open_emmc 関数と get_mmc_csd_register 関数をコールしています。 なし 0 : 正常終了 -1 : エラー終了 eMMC デバイスの初期化 int32_t open_emmc (void) MMC ドライバを初期化し、eMMC デバイスの初期設定を行います。 本関数では、MMC ドライバ関数である ce_init 関数、ce_cd_int 関数、ce_set_buffer 関数、ce_set_config 関数、ce_set_timeout 関数、ce_mount 関数をコールします。 なし 0 : 正常終了 -1 : エラー終了 set_mmc_boot_partition 概 要 eMMC デバイスのブートパーティション選択 int32_t set_mmc_boot_partition (uint32_t partition) 宣 言 説 明 引数 partition で指定したパーティションをブート先パーティションとなるように、 Extended CSD(EXT_CSD)レジスタの PARTITION_CONFIG フィールドに設定し ます。 本関数では、MMC ドライバ関数である ce_csd_get_register 関数、 ce_csd_set_register 関数をコールします。 uint32_t partition 選択するパーティション番号 引 数 リターン値 R01AN1978JJ0081 2016.09.16 0 : 正常終了 -1 : エラー終了 Rev.0.81 Page 26 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) set_mmc_boot_bus_width 概 要 eMMC デバイスの Boot Operation 時のデータバス幅設定 int32_t set_mmc_boot_bus_width(uint16_t width) 宣 言 説 明 Boot Operation 時に引数 width で指定したデータバス幅で動作するように、Extended CSD(EXT_CSD)レジスタの BOOT_BUS_WIDTH フィールドに設定します。 ブート起動用内蔵 ROM プログラムでは、Boot Operation 動作時に MMCHI 側のデー タバス幅を 4 ビット設定としているため、引数 width には、必ず CE_MODE_4BITS (0x0001)を指定して使用してください。 uint16_t width データバス幅 引 数 CE_MODE_1BITS :使用禁止(0x0000) リターン値 0 : 正常終了 -1 : エラー終了 CE_MODE_4BITS :データバス幅 4 ビット(0x0001) CE_MODE_8BITS :使用禁止(0x0002) set_mmc_partition_access 概 要 eMMC デバイスのパーティション選択 int32_t set_mmc_partition_access (uint32_t partition) 宣 言 説 明 引数 partition で指定したパーティションを選択します。本関数実行後、MMC デバイ スへのアクセスは、本関数で選択したパーティションに対して実行されます。 本関数では、MMC ドライバ関数である ce_csd_get_register 関数、 ce_csd_set_register 関数をコールします。 uint32_t partition 選択するパーティション番号 引 数 リターン値 FMTOOL_WriteDev 概 要 宣 言 説 明 引 数 0 : 正常終了 -1 : エラー終了 eMMC デバイスへのライト int32_t FMTOOL_WriteDev (uint32_t sct_no, uint32_t *data, int32_t sct_num) 引数*data のポインタから引数 sct_num 分のデータを、引数 sct_no で指定したセク タ番号から eMMC デバイスへライトします。 本関数では、MMC ドライバ関数である ce_write_sect 関数をコールして、eMMC デ バイスへのライト処理を実現しています。 uint32_t sct_no 書き込み先のセクタ番号 uint32_t *data 書き込みデータを格納されているバッファの先頭アドレス int32_t sct_num リターン値 R01AN1978JJ0081 2016.09.16 0 : 正常終了 -1 : エラー終了 Rev.0.81 書き込みセクタ数 Page 27 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) FMTOOL_ReadDev 概 要 宣 言 説 明 引 数 eMMC デバイスからのリード int32_t FMTOOL_ReadDev (uint32_t sct_no, uint32_t *data, int32_t sct_num) 引数*data のポインタに引数 sct_num 分のデータを、引数 sct_no で指定したセクタ 番号から eMMC デバイスへリードします。 本関数では、MMC ドライバ関数である ce_read_sect 関数をコールして、 eMMC デバイスへのリード処理を実現しています。 uint32_t sct_no 読み出し先のセクタ番号 uint32_t *data 読み出しデータを格納するポインタ int32_t sct_num リターン値 close_emmc 概 要 宣 言 説 明 引 数 リターン値 GetFileSize 概 要 宣 言 説 明 引 数 リターン値 0 : 正常終了 -1 : エラー終了 読み出しセクタ数 eMMC デバイスのアクセス終了 int32_t close_emmc (uint32_t partition) 引数 partition で指定したパーティションが Boot Operation 時のパーティションと なるように設定した後、MMC ドライバの処理を終了します。 本関数では、set_mmc_boot_bus_width 関数をコールして Boot Operation 時のデータ バス幅(4 ビット固定)を設定します。また、set_mmc_boot_partition 関数をコール して、引数 partition で指定したパーティションを Boot Partition として設定します。 最後に MMC ドライバ関数である ce_unmount 関数、ce_finalize 関数をコールして、 MMC ドライバの処理を終了します。 uint32_t partition 選択するパーティション番号 0 : 正常終了 -1 : エラー終了 ファイルサイズの取得 static int32_t GetFileSize(FILE *srcfile) 引数*srcfile で指定されたファイルのファイルサイズを取得します。 FILE *srcfile ファイルポインタ 0 より大きい場合:ファイルサイズ 0 以下の場合:エラー終了 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 28 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) ReadFileData 概 要 宣 言 説 明 引 数 ファイルデータの読み出し static int32_t ReadFileData (FILE *srcfile, uint8_t *program_data_buf, int32_t read_size) 引数にファイルから指定されたサイズ分のデータを読み出します。読み出しを行った データサイズを戻り値で返します。 FILE *srcfile ファイルポインタ uint8_t *program_data_buf 読み出したファイルデータを格納するバッファの 先頭アドレス 読み出しサイズ(バイト数) int32_t read_size リターン値 FMTOOL_Main 概 要 宣 言 説 明 引 数 リターン値 FMTOOL_AppMain 概 要 宣 言 説 明 引 数 リターン値 R01AN1978JJ0081 2016.09.16 読み出されたデータサイズ(バイト数) プログラム書き込みメイン処理 int FMTOOL_Main(int argc, char **argv) eMMC ブートプログラムの書き込み処理を行います。 eMMC デバイスとの初期化後、引数 argv で指定された内容にしたがって、ローダプ ログラムの場合は FMTOOL_LoaderMain 関数を、アプリケーションプログラムの場 合は FMTOOL_AppMain 関数をコールし、書き込み処理を行います。 int argc 引数の総数 char **argv 引数の文字列を示すポインタ 0 : 正常終了 -1 : エラー終了 アプリケーションプログラムの書き込み用メイン処理 static int32_t FMTOOL_AppMain (int argc, char **argv) 引数 argv よりアプリケーションプログラムのバイナリファイルのパスを取得し、 ファイルのオープン、ファイルのサイズ取得(GetFileSize 関数)、パーティション の選択(set_mmc_partition_access 関数)を行います。FMTOOL_WriteApp 関数をコー ルし、アプリケーションプログラムのバイナリデータの読み出し、eMMC デバイス へのデータ書き込みおよび書き込みデータのベリファイ処理を行います。 int argc 引数の総数 char **argv 引数の文字列を示すポインタ 0 : 正常終了 -1 : エラー終了 Rev.0.81 Page 29 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) FMTOOL_LoaderMain 概 要 ローダプログラムの書き込み用メイン処理 static int32_t FMTOOL_LoaderMain (int argc, char **argv) 宣 言 説 明 引数 argv より、ローダプログラムのバイナリファイルのパスを取得後、ファイルの オープン、ファイルのサイズ取得(GetFileSize 関数)を行います。ローダプログラムの バイナリデータを読み出し(ReadFileData 関数)、チェックサムを生成し (MakeChecksumBlock 関数)、パーティションの選択(set_mmc_partition_access 関数) を行います。 FMTOOL_WriteLoader 関数をコールし、eMMC デバイスへのローダプログラムのバ イナリデータと、チェックサムブロックのデータの書き込み、書き込みデータのベリ ファイ処理を行います。 引 数 リターン値 FMTOOL_WriteApp 概 要 宣 言 説 明 引 数 int argc 引数の総数 char **argv 引数の文字列を示すポインタ 0 : 正常終了 -1 : エラー終了 アプリケーションプログラムの書き込みとベリファイ static int32_t FMTOOL_WriteApp (FILE *srcfile, uint32_t sct_no, int32_t filesize) 引数で渡されたファイルのデータを 32 セクタ(16K バイト)分読み出し、eMMC デ バイスに引数で指定したセクタ番号からライトを行います。書き込み後、eMMC デ バイスからデータをリードして、ベリファイを行います。この処理をファイルサイズ 分繰り返します。本関数では、WriteApp 関数をコールして、eMMC デバイスへの書 き込みを行います。 FILE *srcfile ファイルポインタ uint32_t sct_no 書き込み先の先頭セクタ番号 int32_t filesize リターン値 0 : 正常終了 -1 : エラー終了 ファイルサイズ(バイト数) FMTOOL_WriteLoader 概 要 ローダプログラムの書き込みとベリファイ static int32_t FMTOOL_WriteLoader (uint32_t *checksum_buf, uint8_t *loader_buf, 宣 言 uint32_t sct_no) 説 明 引数で渡されたチェックサム、ローダプログラムを eMMC デバイスに指定するセク タ番号からライトを行います。書き込み後、eMMC デバイスからデータをリードし て、ベリファイを行います。本関数では、WriteLoader 関数をコールします。 uint32_t 引 数 チェックサムブロックのデータが格納されている *checksum_buf バッファの先頭アドレス uint8_t *loader_buf ローダプログラムが格納されているバッファの先頭アドレス uint32_t sct_no 書き込み先のセクタ番号 リターン値 R01AN1978JJ0081 2016.09.16 0 : 正常終了 -1 : エラー終了 Rev.0.81 Page 30 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) WriteApp 概 宣 説 引 要 言 明 数 リターン値 WriteLoader 概 要 宣 言 説 引 明 数 リターン値 アプリケーションプログラムを eMMC デバイスへライト static int32_t WriteApp (uint8_t *app_buf, uint32_t sct_no, int32_t sct_num) 引数で渡されたデータを指定のセクタ番号から書き込みセクタ数分、eMMC デバイ スへライトを行います。 本関数では、FMTOOL_WriteDev 関数をコールし、eMMC デバイスへのライトを実 現しています。 uint8_t *app_buf アプリケーションプログラムのデータが格納されているバッ ファの先頭アドレス uint32_t sct_no 書き込み先の先頭セクタ番号 int32_t sct_num 書き込みセクタ数 0 : 正常終了 -1 : エラー終了 ローダプログラムを eMMC デバイスへライト static int32_t WriteLoader (uint32_t *checksum_buf, uint8_t *loader_buf, uint32_t sct_no) 引数で渡されたデータを指定のセクタ番号から eMMC デバイスへライトします。 本関数では、FMTOOL_WriteDev 関数をコールし、eMMC デバイスへのライトを実 現しています。 uint32_t チェックサムブロックのデータが格納されているバッファの *checksum_buf 先頭アドレス uint8_t *loader_buf ローダプログラムが格納されているバッファの先頭アドレス uint32_t sct_no 書き込み先のセクタ数 0 : 正常終了 -1 : エラー終了 MakeChecksumBlock 概 要 ローダプログラムのチェックサムブロックの生成 static void MakeChecksumBlock(uint8_t *loader_buf, int32_t filesize) 宣 言 説 明 引数で渡されたローダプログラムのデータを使用して、チェックサムブロック(512 バイト)のデータを生成します。 引 数 uint8_t *loader_buf int32_t filesize リターン値 R01AN1978JJ0081 2016.09.16 ローダプログラムのデータが格納されているバッファの先頭 アドレス ローダプログラムのファイルサイズ なし Rev.0.81 Page 31 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) MakeChecksum 概 要 宣 言 説 明 引 数 ローダプログラムのチェックサム(1 セクタ分)の計算 static void MakeChecksum (uint8_t *loader_buf, uint32_t *checksum) 引数で渡された 1 セクタ分のローダプログラムのデータを使用して、4 バイトの チェックサム値を生成します。 uint8_t *loader_buf uint32_t *checksum リターン値 VerifyData 概 要 宣 言 説 明 引 数 リターン値 ローダプログラムのデータが格納されているバッファの先頭 アドレス 本関数で計算したチェックサム値の格納先のアドレス なし プログラムデータのベリファイ static int32_t VerifyData ( uint8_t *buf,uint32_t sct_no, int32_t sct_num) eMMC デバイスから引数で指定されるセクタ番号から読み出しセクタ数分のデータ を読み出し、バイナリデータと 4 バイト単位でベリファイします。 uint8_t *buf プログラムデータを格納されているバッファの先頭アドレス uint32_t sct_no プログラムデータが格納されている領域の先頭セクタ番号 int32_t sct_num セクタ数 0 : 正常終了(ベリファイ成功) -1 : エラー終了(ベリファイエラー) VerifyChecksumBlock 概 要 チェックサムブロックのベリファイ static int32_t VerifyChecksumBlock (uint32_t *checksum_buf, uint32_t sct_no, 宣 言 int32_t sct_num) 説 明 引数で指定される eMMC デバイスのセクタ番号からチェックサムブロックを読み出 し、引数で渡されたチェックサムブロックのデータと 4 バイト単位でベリファイしま す。 uint32_t 引 数 チェックサムブロック(512 バイト)のデータを格納されて *checksum_buf いるバッファの先頭アドレス uint32_t sct_no チェックサムブロックが格納されている先頭セクタ番号 int_32_t sct_num セクタ数 リターン値 R01AN1978JJ0081 2016.09.16 0 : 正常終了(ベリファイ成功) -1 : エラー終了(ベリファイエラー) Rev.0.81 Page 32 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.10 ダウンローダの動作フロー ダウンローダは、eMMC ブート用のローダプログラムおよびアプリケーションプログラムを eMMC デバイ スに対して書き込むためのプログラムです。この章では、ダウンローダの動作フローについて説明します。 5.10.1 ダウンローダ(全体)の動作フロー 図 5.11にダウンローダ(全体)の動作フローを示します。DS-5 にて、GENMAI ボードと ULINK2 とのエミュ レータ接続が確立された後、ダウンローダの起動用の DS-5 スクリプト(RZ_A1H_emmc_loader_armcc.ds、ま たは、RZ_A1H_emmc_sample_armcc.ds)を実行した場合、RZ/A1Hの大容量内蔵 RAM 上にダウンローダのプ ログラムが転送され、ダウンローダのエントリポイントである H’2002_0000 番地より実行され、ダウンロー ダの処理が開始します。 ・ダウンローダのエントリポイントである H’2002_0000番地より、処理を開始します。 ダウンローダ開始 ・EXTALから13.33[MHz]が入力される前提で下記のクロック設定を行います。 Iφ = 400[MHz]、Gφ = 266.67MHz]、Bφ = 133.33[MHz]、P1φ = 66.67[MHz] P0φ = 33.33[MHz]、CKIO = 66.67[MHz] 周波数制御レジスタ(FRQCR)変更 ・Iキャッシュを無効に設定 ・Dキャッシュを無効に設定 ・MMUを無効に設定 CP15システム制御レジスタの設定 ・スーパバイザ(SVC)モードのスタックポインタを設定します。 スタックポインタの設定 ・open_emmc関数とget_mmc_csd_register関数をコールして、 ダウンローダの初期化を行います。 ダウンローダの初期化 FMTOOL_Init関数 書き込み対象のプログラム種別? アプリケーションプログラムの場合 ・書き込み対象がローダプログラムかアプリケーションプログラムかを判断します。 ローダプログラムの場合、FMTOOL_LoaderMain関数をコールし、 アプリケーションプログラムの場合、FMTOOL_AppMain関数がコールされます。 ローダプログラムの場合 アプリケーションプログラムの書き込みメイン処理 FMTOOL_AppMain関数 ローダプログラムの書き込みメイン処理 FMTOOL_LoaderMain関数 ・set_mmc_boot_bus_width関数をコールして、Boot Operation時のデータバス幅を4ビットに設定します。 また、set_mmc_boot_partition関数をコールして、Boot Operation時のBoot Partitionを設定します。 最後に、MMCドライバのce_unmount関数とce_finalize関数をコールして、 MMCドライバの処理を終了します。 eMMCデバイスのアクセス終了 ローダプログラムの書き込み close_emmc関数 FMTOOL_LoaderMain関数 ・デバイスへのダウンロードが完了すると、prg_complete関数がコールされます。 事前にprg_complete関数にブレイクポイントを設定しているため、prg_complete関数 のコール時にブレイクされ、ダウンローダ処理の終了を検出します。 ダウンローダ処理完了 prg_complete関数 終了 図5.11 R01AN1978JJ0081 2016.09.16 Rev.0.81 ダウンローダ(全体)の動作フロー Page 33 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.10.2 ローダプログラムの書き込みフロー 図 5.12にローダプログラムの書き込み時のダウンローダ動作フローを示します。 ローダプログラム書き込み処理の開始 (FMTOOL_LoaderMain関数) ファイルパスの連結 (strcat関数) ・引数argv[]より、fopen関数に使用するファイルパス名を生成します。 ファイルのオープン (fopen関数) ・ホストPC上に存在する書き込み対象のバイナリファイルをオープンします。 ローダプログラムのファイルサイズの取得 (GetFileSize関数) ・ローダプログラムのファイルサイズを取得します。 ・ホストPC上に存在するローダプログラムのバイナリファイルから データをリードして、ローダプログラムを専用バッファ (g_LoaderProgram_Buffer[])に格納します。 ローダプログラムの読み出し (ReadFileData関数) ファイルのクローズ (fclose関数) ・書き込み対象のバイナリファイルをクローズします。 ・ローダプログラム専用バッファ(g_LoaderProgram_Buffer[]のデータ を使用し、 ローダプログラムのチェックサムブロック(512バイト)のデータを生成し、 チェックサムブロック専用バッファ(g_CheckSum_Block[])に格納します。 チェックサムブロック(512バイト)の生成 (MakeChecksumBlock関数) 予備領域にも ローダプログラムを 書き込む? ・ローダプログラムを予備領域(#1, #2, #3)に書き込む場合、書き込み回数を4にし、 予備領域に書き込まない場合(#0のみ)、書き込み回数を1回に設定します。 No Yes ライトするローダプログラムの個数 ← 4 書き込み先のパーティション番号の取得 (パーティション番号 ← argv[5]) ライトするローダプログラムの個数 ← 1 ・スクリプトより指定(argv[5])された書き込み先のパーティション番号 を取得します。(サンプルコードでは1(Boot partition 1)を指定しています。) 書き込み先セクタ番号の設定 (セクタ番号 ← 0) ・ローダプログラムの書き込み先のセクタ番号は固定のため、 セクタ番号を0に設定。 (引数argv[6]で指定したセクタ番号は無視) パーティションの選択 (set_mmc_partition_access関数) ・ローダプログラムを書き込むパーティションを選択します。 eMMCデバイスに対して チェックサムブロック(512バイト)および ローダプログラム(28Kバイト)の書き込み (WriteLoader関数) ・チェックサムブロック専用バッファ(g_CheckSum_Block[])、ローダプログラム専用 バッファ(g_LoaderProram_Buffer[])の先頭アドレス、セクタ番号をWriteLoader関数 に渡し、eMMCデバイスにデータを格納します。 チェックサムブロック(512バイト)のベリファイ (VerifyChecksumBlock関数) ・eMMCデバイスに格納されているチェックサムブロックを読み出し、 チェックサムブロック専用バッファ(g_CheckSum_Block[])とベリファイを行います。 プログラムデータ領域のベリファイ (VerifyData関数) ・eMMCデバイスに格納されているローダプログラムを読み出し、 ローダプログラム専用バッファ(g_LoaderProgram_Buffer[])とベリファイを行います。 次の書き込み先のセクタ番号を計算 (セクタ番号 ← セクタ番号 +57) ・チェックサムブロック1セクタ(512バイト)分、ローダプログラム56セクタ(28Kバイト) 分のセクタ番号を加算し、次の書き込み先のセクタ番号を計算します。 ライトするローダプログラムの個数 ← ライトするローダプログラムの個数 - 1 No 全てのローダプログラムの 書き込み完了? Yes 終了 図5.12 R01AN1978JJ0081 2016.09.16 ローダプログラムの書き込み時のダウンローダ動作フロー Rev.0.81 Page 34 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 5.10.3 アプリケーションプログラムの書き込みフロー 図 5.13にアプリケーションプログラム書き込み時のダウンローダ動作フローを示します。 アプリケーションプログラム書き込み処理の開始 (FMTOOL_AppMain関数) ファイルパスの連結 (strcat関数) ・引数argv[]より、fopen関数に使用するファイルパス名を生成します。 ・書き込み対象のバイナリファイルをオープンします。 ファイルのオープン (fopen関数) ・アプリケーションプログラムのファイルサイズを取得します。 ファイルサイズの取得 (GetFileSize関数) アプリケーションプログラム書き込み先の パーティション番号の取得 (パーティション番号 ←argv[5]) ・スクリプトにより指定(argv[5])された書き込み先のパーティション番号 を取得します。(サンプルコードでは2(Boot partition 2)を指定しています。) ・スクリプトにより指定(argv[6])された書き込み先書き込み先のセクタ番号 を取得します。(サンプルコードでは228を指定しています。) アプリケーションプログラム書き込み先のセクタ番号の取得 (セクタ番号 ← argv[6] ) ・アプリケーションプログラムの書き込み先パーティションを選択します。 パーティションの選択 (set_mmc_partition_access関数) ファイルサイズの大きさは 32セクタ(16Kバイト)以上? ・ファイルサイズが32セクタ(16Kバイト)以上の場合、書き込みセクタ数を32とします。 ファイルサイズが32セクタ未満の場合、残りファイルサイズの書き込みに必要な セクタ数を書き込みセクタ数に設定します。 No Yes 書き込みセクタ数 ← 32 アプリケーションプログラムのデータ読み込み ( ReadFileData関数 ) アプリケーションプログラムの書き込み (Write_App関数) アプリケーションプログラムデータのベリファイ (VerifyData関数) 書き込みセクタ数 ← 残りのファイルサイズ分のセクタ数 ・ホストPC上にあるアプリケーションプログラムのバイナリファイルから 32セクタ(16Kバイト)分のデータをリードし、アプリケーション プログラム専用バッファに格納します。 ・eMMCデバイスに対して、バッファに格納されたアプリケーションプログラムの データを書き込みセクタ数分書き込みを行います。 ・eMMCデバイスに格納されているアプリケーションプログラムを読み出し、 アプリケーションプログラム専用バッファのデータとベリファイします。 次にライトするセクタ番号を計算 (セクタ番号 ← セクタ番号 + 32) ファイルサイズ ← ファイルサイズ – (書き込みセクタ×512) ・書き込み完了を判別するため、ファイルサイズから書き込みが完了した バイト数を減算します。 全ての書き込み完了? No Yes ファイルのクローズ (fclose関数) ・書き込み対象のバイナリファイルをクローズします。 終了 図5.13 R01AN1978JJ0081 2016.09.16 アプリケーションプログラム書き込み時のダウンローダ動作フロー Rev.0.81 Page 35 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6. 6.1 サンプルコードの説明 サンプルコードの使用手順 ここでは、DS-5 および ARM 社製エミュレータ ULINK2 を使用して、ダウンローダを使用するための手順 について説明します。図 6.1にダウンローダの使用手順を示します。 ・GENMAIボードのジャンパやディップスイッチの設定を行う。 1. GENMAIボードの設定 2. DS-5スクリプトを所定のフォルダにコピー 3. 各プロジェクトをDS-5にインポートし、ビルドによりプログラムを生成 ・以下のプログラムを生成 1) ダウンローダ:RZ_A1H_fmtool_emmc.axf 2) ローダプログラム:RZ_A1H_emmc_boot_loader_armcc.axf 3) アプリケーションプログラム:RZ_A1H_emmc_boot_sample_armcc.axf ・DS-5付属のfromelfを使用して、実行形式ファイル(*.axf)を バイナリファイルに変換する 4. アプリケーションプログラム、ローダプログラムの 書き込み用バイナリファイルの生成 5. ダウンローダ(RZ_A1H_fmtool_emmc.axf)を所定のフォルダにコピー 6. GENMAIボートとULINK2との接続を行うために DS-5にて「デバッグの構成」を設定 7. GENMAIボードとULINK2との接続を確立 8. ダウンローダ用のDS-5スクリプトを実行し、 eMMCデバイスへの書き込み処理を実行 図6.1 R01AN1978JJ0081 2016.09.16 Rev.0.81 ・ダウンロード用のDS-5スクリプトを実行することにより、 ダウンローダ(RZ_A1H_fmtool_emmc.axf)がRZ/A1Hの大容量内蔵RAMに 転送された後、実行され、eMMCデバイスへのプログラム書き込み処理が 開始する。 ダウンローダの使用手順 Page 36 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) GENMAI ボードの設定 6.1.1 ダウンローダを実行させる前にGENMAI ボードの設定が必要です。表 6.1に GENMAI ボードのジャンパ設 定を、表 6.2にGENMAI ボードのディップスイッチ設定を示します。 表6.1 ジャンパ 設定 JP5 1-2 内容 P7_0 を MD_BOOT2 端子として使用 表6.2 ディップスイッチ 設定 SW1-1 SW1-2 SW1-3 SW1-4 SW1-5 OFF OFF OFF ON ON 6.1.2 GENMAI ボードのジャンパ設定 GENMAI ボードのディップスイッチ設定 内容 MD_BOOT0=H レベル MD_BOOT1=H レベル MD_BOOT2=H レベル MD_CLK=L レベル MD_CLKS=L レベル DS-5 スクリプトのコピー DS-5 ワークスペース直下(例:C:¥DS-5_Workspace)に[script]フォルダを作成した後、DS-5 スクリプトで ある init_RZ_A1H.ds、init_RZ_A1H2.ds、RZ_A1H_emmc_boot_init_armcc.ds、 RZ_A1H_emmc_boot_sample_armcc.ds を作成した[script]フォルダにコピーしてください。 表 6.3に使用する DS-5 スクリプトファイル一覧を示します。 表6.3 使用する DS-5 スクリプトファイル一覧 DS-5 スクリプトファイル名 init_RZ_A1H.ds init_RZ_A1H2.ds RZ_A1H_emmc_boot_loader_armcc.ds RZ_A1H_emmc_boot_sample_armcc.ds R01AN1978JJ0081 2016.09.16 Rev.0.81 説明 GENMAI ボード初期化スクリプトです。 ULINK2 とGENMAI ボードを接続した際に、RZ/A1H大容量内蔵 RAM の書き込みを許可する等の処理を実行する DS-5 スクリプ トです。 ダウンロードスクリプトから実行されるGENMAI ボード初期 化スクリプトです。DS-5 メモリ領域設定を行わない以外は、 init_RZ-A1H.ds と同じです。 ローダプログラムを書き込む時にダウンローダを起動するため に使用する DS-5 スクリプトです。 アプリケーションプログラムを書き込む時にダウンローダを起 動するために使用する DS-5 スクリプトです。 Page 37 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.1.3 プロジェクトのインポートおよびビルド 表 6.4にプロジェクト一覧を示します。各プロジェクトのデータを DS-5 ワークスペース直下(例: C:¥DS-5_Workspace)にコピーした後、DS-5 に各プロジェクトをインポートしてください。インポート後、 各プロジェクトのビルドし、実行形式ファイルを生成してください。 表6.4 プロジェクト名 説明 RZ_A1H_fmtool_emmc RZ_A1H_emmc_boot_loader_ armcc RZ_A1H_emmc_boot_sample _armcc 6.1.4 プロジェクト一覧 このプロジェクトでダウンローダをビ ルドします。このプロジェクトをダウ ンローダプロジェクトと呼びます。 このプロジェクトでローダプログラム をビルドします。このプロジェクトを ローダプログラムプロジェクトと呼び ます。 このプロジェクトでアプリケーション プログラムをビルドします。このプロ ジェクトをアプリケーションプロジェ クトと呼びます。 生成される実行可能ファイル (*.axf) RZ_A1H_fmtool_emmc.axf RZ_A1H_emmc_boot_loader_ar mcc.axf RZ_A1H_emmc_boot_sample_a rmcc.axf 実行可能ファイルからバイナリファイルへのデータ変換 本アプリケーションノートで説明するダウンローダは、バイナリファイルのプログラム書き込みのみをサ ポートしています。実行可能ファイル(*.axf)のプログラム書き込みはサポートしていないため、ビルドにより 生成されたローダプログラムとアプリケーションプログラムの実行可能ファイル(*.axf)をバイナリファイル に変換する必要があります。DS-5 に付属しているユーティリティである fromelf を使用して、このファイル 変換を行います。サンプルコードのプロジェクト(RZ_A1H_emmc_boot_loader_armcc、 RZ_A1H_emmc_boot_sample_armcc)では、ビルド後に図 6.2の内容のバッチファイルが実行され、自動的に 実行可能ファイルからバイナリファイルが生成されるように設定しています。 fromelf --bin --output=%1.bin %1.axf 出力ファイル名 図6.2 ・ "%1"はプロジェクト名を意味します。 入力ファイル名 ビルド後に実行されるバッチファイル(after_build.bat)の内容 表 6.5にfromelf により生成されたバイナリファイルを示します。 表6.5 fromelf により生成されたバイナリファイル 実行形式ファイル RZ_A1H_emmc_boot_loader_armcc.axf (ローダプログラムの実行可能ファイル) RZ_A1H_emmc_boot_sample.axf (アプリケーションプログラムの実行可能ファイル) R01AN1978JJ0081 2016.09.16 Rev.0.81 バイナリファイル RZ_A1H_emmc_boot_loader_armcc.bin CONST_DL_TABLE VECTOR_TABLE VECTOR_MIRROR_TABLE RESET_HANDLER Page 38 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.1.5 ダウンローダ実行形式ファイルのコピー DS-5 ワークスペース直下(例:C:¥DS-5_Workspace)に[fmtool]フォルダを作成し、ダウンローダの実行形 式ファイル(RZ_A1H_fmtool_emmc.axf)をコピーしてください。 6.1.6 DS-5 デバッグ構成の設定 以下の手順にて、DS-5 の「デバッグ構成」を設定してください。DS-5 デバッグ構成の設定にて、ULINK2 とGENMAI ボードを接続した際にGENMAI ボード初期化スクリプト(init_RZ-A1H.ds)が実行されるように 設定します。なお、GENMAI ボード初期化スクリプト(init_RZ-A1H.ds)の処理内容については、 「6.2 GENMAI ボード初期化スクリプト」を参照してください。 【手順】 1. DS-5 の[デバッグコンフィギュレーション]メニューより、[デバッグ構成]画面を表示します。 2. DS-5 の[デバッグ構成]画面の[接続]タブにて、ターゲットを選択します。ターゲットは、[Renesas] /[RZ/A1H R7S721001]/[Bare Metal Debug]/[Debug Cortex-A9]を選択し、任意の接続名称を[名前(N)] に設定します。 3. DS-5 の[デバッグ構成]画面の[デバッガ]タブにて、実行制御の[接続のみ]にチェックを入れます。 4. DS-5 の[デバッグ構成]画面の[デバッガ]タブにて、実行制御の[ターゲット初期化デバッガスクリ プト(.ds / .py)を実行します]にチェックを入れ、GENMAI ボード初期化スクリプト(init_RZ-A1H.ds) の PATH を設定します。 6.1.7 ARM 社製エミュレータ ULINK2 とGENMAI ボードとの接続 以下の手順にて、ARM 社製エミュレータ ULINK2 とGENMAI ボードとの接続を行います。 【手順】 1. DS-5 の[Debug Control]タブより、「6.1.6 DS-5 デバッグ構成の設定」の手順 2.で設定した名称の接続 を選択し、右クリックより[Connect to Target]を選択します。 2. 1.より、「6.1.6 DS-5 デバッグ構成の設定」の手順 4.で登録したGENMAI ボード初期化スクリプト (init_RZ-A1H.ds)が実行された後、GENMAI ボードとのエミュレータ接続が確立され、ダウンローダが 実行可能な状態となります。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 39 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.1.8 ダウンロードスクリプトの実行 以下の手順にて、ダウンロードスクリプト(RZ_A1H_emmc_boot_loader_armcc.ds、または、 RZ_A1H_emmc_boot_sample_armcc.ds)を実行することにより、eMMC ダウンローダが起動して、eMMC デバ イスに対してプログラム書き込み処理が実行されます。 【手順】 1. DS-5 の[スクリプト]タブにダウンロードスクリプト(RZ_A1H_emmc_boot_loader_armcc.ds、 RZ_A1H_emmc_boot_sample_armcc.ds)を登録します。 2. 1.で登録したダウンロードスクリプト(RZ_A1H_emmc_boot_loader_armcc.ds、または、 RZ_A1H_emmc_boot_sample_armcc.ds)をダブルクリックし、ダウンロードスクリプトを実行します。 3. ダウンロードスクリプトを実行すると、ダウンローダが実行され、DS-5 の[アプリケーションコンソー ル]上に図 6.3 に示すメッセージが表示され、eMMC デバイスへの書き込みを開始します。 図6.3 ダウンローダ実行時に DS-5 アプリケーションコンソールに表示されるメッセージ R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 40 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.2 GENMAI ボード初期化スクリプト 図 6.4にGENMAI ボード初期化スクリプト(RZ_A1H.ds)の処理内容を示します。この DS-5 スクリプトは、 GENMAI ボードとエミュレータ接続時に実行してください。 ・エミュレータ接続時に実行 スクリプト開始 (RZ_A1H.ds) ・stopコマンドを実行して、プログラムを実行を停止します。 stop 実行停止 reset CPUリセット ・resetコマンドを実行して、プログラムを実行を停止します。 memory S:xxxx E:yyyy DS-5 メモリ領域設定 ・memoryコマンドを実行して、 DS-5で使用するメモリ領域を定義します。 memory set 0x3fffff80 32 0x00000001 L2キャッシュ スタンバイ解除 ・memory setコマンドを実行して、 Power Control Registerのstandby_mode_enビットに1を設定して L2キャッシュのスタンバイを解除 mem set 0xfcfe0408 8 {(unsigned char)0x0f} 大容量内蔵RAM(保持用)の ライトプロテクト解除 ・memory setコマンドを実行して、 システムコントロールレジスタ3( SYSCR3 )に0x0fを設定して 保持用RAMのライトプロテクトを解除 スクリプト完了 ※各コマンドの詳細は、「ARM DS-5 デバッガコマンドリファレンス」参照。 図6.4 R01AN1978JJ0081 2016.09.16 GENMAI ボード初期化スクリプト(RZ_A1H.ds)の処理内容 Rev.0.81 Page 41 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) ダウンロードスクリプト 6.3 6.3.1 ローダプログラム書き込み用 DS-5 スクリプト 図 6.5にローダプログラム書き込み用 DS-5 スクリプト(RZ_A1H_emmc_boot_loader_armcc.ds)の処理内容 を示します。このローダプログラム書き込み用 DS-5 スクリプトを実行することで、ダウンローダが大容量内 蔵 RAM 上に転送された後、eMMC ローダプログラム書き込みの処理を開始します。 ローダプログラム書き込み用DS-5スクリプト 開始 (RZ_A1H_emmc_boot_loader_armcc.ds) loadfile “PATH/RZ_A1H_fmtool_emmc.axf” ダウンローダを大容量内蔵RAMに転送 disable breakpoints ハードウェアブレークポイントの無効化 hbreak prg_complete prg_complete関数にブレークポイントの設定 run 実行 No ・ダウンローダの処理の完了すると、prg_complete関数をコールして、prg_complete関数内で 無限ループとなります。ダウンローダ処理の完了を検出するために、prg_complete関数に ハードウェはブレークポイントを設定します。 ・runコマンドより、ダウンローダ処理を開始します。 runコマンドの引数により、書き込み対象のバイナリファイル、 書き込み先のパーティション番号等を指定できます。 runコマンドの引数仕様については、「5.3 ダウンローダの書き込み先の指定方法」を参照してください。 wait ブレーク発生 Yes stop 停止 ・ダウンローダの処理が完了して、prg_complete関数でプログラムが停止します。 clear prg_complete prg_complete関数に設定したブレークポイントを削除 enable breakpoints ブレークポイントの有効化 discard-symbol-file “PATH/RZ_A1H_fmtool_emmc.axf” ダウンローダのシンボル情報を削除 reset CPUリセット ・ダウンローダ実行前に設定していたブレークポイントを有効にします。 ・他のプログラムのシンボル情報をロードできるように、 処理が完了したダウンローダのシンボル情報を削除します。 ・プログラム書き込み後、resetコマンドを実行して、 CPUリセットを行います。このresetコマンドは、init_RZ-A1H2.dsから実行されます。 スクリプト完了 図6.5 ローダプログラム書き込み用 DS-5 スクリプト(RZ_A1H_emmc_boot_loader_armcc.ds)の処理内 容 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 42 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 6.3.2 アプリケーションプログラム書き込み用 DS-5 スクリプト 図 6.6にアプリケーションプログラム書き込み用 DS-5 スクリプト(RZ_A1H_emmc_boot_sample_armcc.ds) の処理内容を示します。このアプリケーションプログラム書き込み用 DS-5 スクリプトを実行することで、ダ ウンローダが大容量内蔵 RAM 上に転送された後、eMMC アプリケーションプログラム書き込みの処理を開 始します。 アプリケーションプログラム書き込み用DS-5スクリプト 開始 (RZ_A1H_emmc_boot_sample_armcc.ds) loadfile “PATH/RZ_A1H_fmtool_emmc.axf” ダウンローダを大容量内蔵RAMに転送 disable breakpoints ハードウェアブレークポイントの無効化 hbreak prg_complete prg_complete関数にブレークポイントの設定 ・runコマンドより、ダウンローダ処理を開始します。 runコマンドの引数により、書き込み対象のバイナリファイル、 書き込み先のパーティション番号等を指定できます。 runコマンドの引数仕様については、「5.3 ダウンローダの書き込み先の指定方法」を参照してください。 run 実行 No ・ダウンローダの処理の完了すると、prg_complete関数をコールして、prg_complete関数内で 無限ループとなります。ダウンローダ処理の完了を検出するために、prg_complete関数に ハードウェはブレークポイントを設定します。 wait ブレーク発生 ・サンプルコードでは、アプリケーションプログラムを構成する4つのバイナリファイル (CONST_DL_TABLE, VECTOR_TABLE, VECTOR_MIRROR_TABLE, RESET_HANDLER)を 書き込むために、runコマンドとwaitコマンドを4回繰り返しています。 Yes ・ダウンローダの処理が完了して、prg_complete関数でプログラムが停止します。 stop 停止 clear prg_complete prg_complete関数に設定したブレークポイントを削除 enable breakpoints ブレークポイントの有効化 discard-symbol-file “PATH/RZ_A1H_fmtool_emmc.axf” ダウンローダのシンボル情報を削除 reset CPUリセット file “PATH/RZ_A1H_emmc_boot_sample_armcc.axf” アプリケーションプログラムのシンボル情報をロード ・ダウンローダ実行前に設定していたブレークポイントを有効にします。 ・他のプログラムのシンボル情報をロードできるように、 処理が完了したダウンローダのシンボル情報を削除します。 ・プログラム書き込み後、resetコマンドを実行して、 CPUリセットを行います。このresetコマンドは、init_RZ-A1H2.dsから実行されます。 ・アプリケーションプログラムのソースコードデバッグができるように、 アプリケーションプログラムのシンボル情報をDS-5に登録します。 スクリプト完了 図6.6 アプリケーションプログラム書き込み用 DS-5 スクリプト (RZ_A1H_emmc_boot_sample_armcc.ds)の処理内容 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 43 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 7. サンプルコードで使用する MMC ドライバについて 7.1 RZ/A1 MMC ドライバについて ここでは、本アプリケーションノートのサンプルコードで使用する RZ/A1 MMC ドライバについて説明し ます。 7.1.1 MMC ドライバのバージョン情報 表 7.1にRZ/A1 MMC ドライバのバージョン情報を示します。 表7.1 項目 名称 ドキュメント番号 RZ/A1 MMC ドライバの バージョン情報 R01AN1978JJ0081 2016.09.16 Rev.0.81 RZ/A1 MMC ドライバのバージョン情報 説明 RZ/A1 MMC ドライバ Ver1.01 R01UW0120JJ0101 RENESAS MMC4 Driver Ver1.01 Page 44 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) 8. 参考ドキュメント ユーザーズマニュアル:ハードウェア RZ/A1Hグループ ユーザーズマニュアル ハードウェア編 (最新版をルネサス エレクトロニクスホームページから入手してください。) R7S72100 RTK772100BC00000BR(GENMAI ボード)ユーザーズマニュアル (最新版をルネサス エレクトロニクスホームページから入手してください。) ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition Issue C (最新版を ARM ホームページから入手してください。) ARM Generic Interrupt Controller Architecture Specification Architecture version 1.0 (最新版を ARM ホームページから入手してください。) ARM CortexTM-A9(Revision: r3p0)Technical Reference Manual (最新版を ARM ホームページから入手してください。) ARM CoreLinkTM Level 2 Cache Controller L2C-310(Revision: r3p2)Technical Reference Manual (最新版を ARM ホームページから入手してください。) テクニカルアップデート/テクニカルニュース (最新の情報をルネサス エレクトロニクスホームページから入手してください。) ユーザーズマニュアル:開発環境 ARM ソフトウェア開発ツール(ARM Compiler toolchain、ARM DS-5 等)に関しては、ARM ホームページ から入手してください。 (最新版を ARM ホームページから入手してください。) R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 45 of 46 RZ/A1H グループ DS-5 のセミホスティング機能を使用した MMC コントローラ内蔵フラッシュメモリへのダウンロード例(暫定版) ホームページとサポート窓口 ルネサス エレクトロニクスホームページ http://japan.renesas.com お問合せ先 http://japan.renesas.com/contact/ すべての商標および登録商標は,それぞれの所有者に帰属します。 R01AN1978JJ0081 2016.09.16 Rev.0.81 Page 46 of 46 改訂記録 Rev. Rev.0.80 Rev.0.81 発行日 2014.02.28 2016.09.16 ページ - 全般 P11~14 P15~16 P23 P24~25 P26~32 P33~35 P44 - 改訂内容 ポイント 初版作成 章の構成を変更 • • • • • • 「5.2 ダウンローダの動作概要」の説明内容を追加 「5.3 ダウンローダの書き込み先の指定方法」を追加 「5.7 変数一覧」を追加 「5.8 関数一覧」を追加 「5.9 関数仕様」を追加 「5.10 ダウンローダの動作フロー」に書き込み処理時の詳 細フローを追加。 • 「7 サンプルコードで使用する MMC ドライバについて」d を追加 MMC ドライバの更新版の組み込みに伴い、サンプルコードの プロジェクトを更新 製品ご使用上の注意事項 ここでは、マイコン製品全体に適用する「使用上の注意事項」について説明します。個別の使用上の注意 事項については、本ドキュメントおよびテクニカルアップデートを参照してください。 1. 未使用端子の処理 【注意】未使用端子は、本文の「未使用端子の処理」に従って処理してください。 CMOS製品の入力端子のインピーダンスは、一般に、ハイインピーダンスとなっています。未使用 端子を開放状態で動作させると、誘導現象により、LSI周辺のノイズが印加され、LSI内部で貫通電 流が流れたり、入力信号と認識されて誤動作を起こす恐れがあります。未使用端子は、本文「未使用 端子の処理」で説明する指示に従い処理してください。 2. 電源投入時の処置 【注意】電源投入時は,製品の状態は不定です。 電源投入時には、LSIの内部回路の状態は不確定であり、レジスタの設定や各端子の状態は不定で す。 外部リセット端子でリセットする製品の場合、電源投入からリセットが有効になるまでの期間、端子 の状態は保証できません。 同様に、内蔵パワーオンリセット機能を使用してリセットする製品の場合、電源投入からリセットの かかる一定電圧に達するまでの期間、端子の状態は保証できません。 3. リザーブアドレス(予約領域)のアクセス禁止 【注意】リザーブアドレス(予約領域)のアクセスを禁止します。 アドレス領域には、将来の機能拡張用に割り付けられているリザーブアドレス(予約領域)がありま す。これらのアドレスをアクセスしたときの動作については、保証できませんので、アクセスしない ようにしてください。 4. クロックについて 【注意】リセット時は、クロックが安定した後、リセットを解除してください。 プログラム実行中のクロック切り替え時は、切り替え先クロックが安定した後に切り替えてください。 リセット時、外部発振子(または外部発振回路)を用いたクロックで動作を開始するシステムでは、 クロックが十分安定した後、リセットを解除してください。また、プログラムの途中で外部発振子 (または外部発振回路)を用いたクロックに切り替える場合は、切り替え先のクロックが十分安定し てから切り替えてください。 5. 製品間の相違について 【注意】型名の異なる製品に変更する場合は、製品型名ごとにシステム評価試験を実施してくださ い。 同じグループのマイコンでも型名が違うと、内部ROM、レイアウトパターンの相違などにより、電 気的特性の範囲で、特性値、動作マージン、ノイズ耐量、ノイズ輻射量などが異なる場合がありま す。型名が違う製品に変更する場合は、個々の製品ごとにシステム評価試験を実施してください。 ご注意書き 1. 本資料に記載された回路、ソフトウェアおよびこれらに関連する情報は、半導体製品の動作例、応用例を説明するものです。お客様の機器・システムの設計におい て、回路、ソフトウェアおよびこれらに関連する情報を使用する場合には、お客様の責任において行ってください。これらの使用に起因して、お客様または第三 者に生じた損害に関し、当社は、一切その責任を負いません。 2. 本資料に記載されている情報は、正確を期すため慎重に作成したものですが、誤りがないことを保証するものではありません。万一、本資料に記載されている情報 の誤りに起因する損害がお客様に生じた場合においても、当社は、一切その責任を負いません。 3. 本資料に記載された製品デ-タ、図、表、プログラム、アルゴリズム、応用回路例等の情報の使用に起因して発生した第三者の特許権、著作権その他の知的財産権 に対する侵害に関し、当社は、何らの責任を負うものではありません。当社は、本資料に基づき当社または第三者の特許権、著作権その他の知的財産権を何ら許 諾するものではありません。 4. 当社製品を改造、改変、複製等しないでください。かかる改造、改変、複製等により生じた損害に関し、当社は、一切その責任を負いません。 5. 当社は、当社製品の品質水準を「標準水準」および「高品質水準」に分類しており、 各品質水準は、以下に示す用途に製品が使用されることを意図しております。 標準水準: コンピュータ、OA機器、通信機器、計測機器、AV機器、 家電、工作機械、パーソナル機器、産業用ロボット等 高品質水準:輸送機器(自動車、電車、船舶等)、交通用信号機器、 防災・防犯装置、各種安全装置等 当社製品は、直接生命・身体に危害を及ぼす可能性のある機器・システム(生命維持装置、人体に埋め込み使用するもの等) 、もしくは多大な物的損害を発生さ せるおそれのある機器・システム(原子力制御システム、軍事機器等)に使用されることを意図しておらず、使用することはできません。 たとえ、意図しない用 途に当社製品を使用したことによりお客様または第三者に損害が生じても、当社は一切その責任を負いません。 なお、ご不明点がある場合は、当社営業にお問い 合わせください。 6. 当社製品をご使用の際は、当社が指定する最大定格、動作電源電圧範囲、放熱特性、実装条件その他の保証範囲内でご使用ください。当社保証範囲を超えて当社製 品をご使用された場合の故障および事故につきましては、当社は、一切その責任を負いません。 7. 当社は、当社製品の品質および信頼性の向上に努めていますが、半導体製品はある確率で故障が発生したり、使用条件によっては誤動作したりする場合がありま す。また、当社製品は耐放射線設計については行っておりません。当社製品の故障または誤動作が生じた場合も、人身事故、火災事故、社会的損害等を生じさせ ないよう、お客様の責任において、冗長設計、延焼対策設計、誤動作防止設計等の安全設計およびエージング処理等、お客様の機器・システムとしての出荷保証 を行ってください。特に、マイコンソフトウェアは、単独での検証は困難なため、お客様の機器・システムとしての安全検証をお客様の責任で行ってください。 8. 当社製品の環境適合性等の詳細につきましては、製品個別に必ず当社営業窓口までお問合せください。ご使用に際しては、特定の物質の含有・使用を規制する RoHS指令等、適用される環境関連法令を十分調査のうえ、かかる法令に適合するようご使用ください。お客様がかかる法令を遵守しないことにより生じた損害に 関して、当社は、一切その責任を負いません。 9. 本資料に記載されている当社製品および技術を国内外の法令および規則により製造・使用・販売を禁止されている機器・システムに使用することはできません。ま た、当社製品および技術を大量破壊兵器の開発等の目的、軍事利用の目的その他軍事用途に使用しないでください。当社製品または技術を輸出する場合は、「外 国為替及び外国貿易法」その他輸出関連法令を遵守し、かかる法令の定めるところにより必要な手続を行ってください。 10. お客様の転売等により、本ご注意書き記載の諸条件に抵触して当社製品が使用され、その使用から損害が生じた場合、当社は何らの責任も負わず、お客様にてご負 担して頂きますのでご了承ください。 11. 本資料の全部または一部を当社の文書による事前の承諾を得ることなく転載または複製することを禁じます。 注1. 本資料において使用されている「当社」とは、ルネサス エレクトロニクス株式会社およびルネサス エレクトロニクス株式会社がその総株主の議決権の過半数 を直接または間接に保有する会社をいいます。 注2. 本資料において使用されている「当社製品」とは、注1において定義された当社の開発、製造製品をいいます。 http://www.renesas.com ■営業お問合せ窓口 ※営業お問合せ窓口の住所は変更になることがあります。最新情報につきましては、弊社ホームページをご覧ください。 ルネサス エレクトロニクス株式会社 〒135-0061 東京都江東区豊洲3-2-24(豊洲フォレシア) ■技術的なお問合せおよび資料のご請求は下記へどうぞ。 総合お問合せ窓口:http://japan.renesas.com/contact/ © 2016 Renesas Electronics Corporation. All rights reserved. Colophon 4.0