Rev. 1.00 2011.11.30
E10A-USB フラッシュメモリダウンロード機能の応用例
(シリアルフラッシュメモリへのダウンロード)
要旨
E10A-USB エミュレータにはフラッシュメモリにロードモジュールをダウンロードする機能があります。 本機能はフラッシュメモリにアクセスするために、ダウンロードプログラム(以下、FMTOOL と称します) を使用します。 本アプリケーションノートは、この FMTOOL を応用したシリアルフラッシュメモリへのダウンロード方法 について説明します。対象デバイス
SH7268/SH7269 グループ 以下、総称して「SH7269」として説明します。 本アプリケーションノートを他のマイコンへ適用する場合、そのマイコンの仕様にあわせて変更し、十分 評価してください。R01AN0883JJ0100 Rev. 1.00 Page 2 of 30 2011.11.30
目次
1. 仕様 ... 4
2.
動作確認条件... 5
3.
関連アプリケーションノート... 5
4.
周辺機能説明... 6
5.
ハードウェア説明... 7
5.1 使用端子一覧... 7 5.2 参考回路... 86.
ソフトウェア説明... 9
6.1 動作概要... 9 6.1.1 バッチファイル ...9 6.1.2 イレーズモジュール ...9 6.1.3 ライトモジュール ...10 6.2 ファイル構成... 11 6.3 定数一覧... 12 6.4 構造体/共用体一覧 ... 13 6.5 変数一覧... 14 6.6 関数一覧... 14 6.7 関数仕様... 15 6.8 フローチャート ... 20 6.8.1 イレーズモジュール ...20 6.8.2 ライトモジュール ...21 6.9 注意事項... 22 6.9.1 ロードモジュールへのダミーデータ追加 ...22 6.9.2 ロードモジュール間のセクタ共有禁止...237.
応用例 ... 24
7.1 ユーザプログラムダウンロード手順 ... 24 7.1.1 ダウンロード環境の準備 ...24 7.1.2 バッチファイルの登録...24 7.1.3 Configurationダイアログボックスの設定 ...25 7.1.4 ダウンロードモジュールの追加 ...26 7.1.5 ユーザプログラムのダウンロード ...26 7.2 シリアルフラッシュブートへの応用 ... 27 7.2.1 セクション配置 ...277.2.3 ロードモジュールのダウンロード方法...27 7.3 FMTOOLのカスタマイズ... 28 7.3.1 サンプルコードに対応するデバイス仕様 ...28 7.3.2 カスタマイズの内容 ...28 7.4 FMTOOLのデバッグ手順... 29 7.4.1 デバッグコードの実装...29 7.4.2 デバッグ環境の準備 ...29 7.4.3 FMTOOLのダウンロード...29 7.4.4 FMTOOLのデバッグ...29
8.
サンプルコード ... 30
9.
参考ドキュメント... 30
1. 仕様
SPI マルチ I/O バス空間に配置したロードモジュールをシリアルフラッシュメモリにダウンロードします。 ダウンロードにはシリアルフラッシュメモリに対応した FMTOOL を使用します。FMTOOL は、SPI マルチ I/O バスコントローラを使用して、マルチ I/O(データバス幅=4 ビット)に対応したシリアルフラッシュメモ リをアクセスします。 表 1.1に使用する周辺機能と用途を、図 1.1にFMTOOLを使用したダウンロード処理の流れ を示します。 表 1.1 使用する周辺機能と用途 周辺機能 用途 SPI マルチ I/O バスコントローラ シリアルフラッシュメモリへのダウンロード H-UDI E10A-USB エミュレータの接続 SH7269 SPIマルチI/O バスコントローラ シリアル フラッシュメモリ E10A-USB エミュレータ 統合開発環境 フラッシュメモリ ダウンロード機能 を実行 CPUリセット ①バッチファイル起動 ②イレーズモジュール実行 ③ライトモジュール実行 (2バイトずつ繰り返し) シリアルフラッシュ メモリの初期設定 ページ単位でライト、 セクタ単位にイレーズ (ページ=256バイト、 セクタ=64Kバイト) SPIマルチI/Oバス コントローラの初期化 1ページ分の バッファリング FMTOOL 図 1.1 FMTOOL を使用したダウンロード処理の流れ
R01AN0883JJ0100 Rev. 1.00 Page 4 of 30 2011.11.30
2. 動作確認条件
本アプリケーションノートのサンプルコードは、下記の条件で動作を確認しています。 表 2.1 動作確認条件 項目 内容 使用マイコン SH7269 使用デバイス マルチ I/O バス対応シリアルフラッシュメモリ メーカー:Spansion 社 型名:S25FL032P0XMFI01 動作周波数 CPU 内部クロック(Iφ):266.67MHz 内部クロック(Bφ):133.33MHz 周辺クロック 1(P1φ):66.67MHz 周辺クロック 0(P0φ):33.33MHz 動作電圧 電源電圧(I/O):3.3V 電源電圧(内部):1.25V 統合開発環境 ルネサス エレクトロニクス製High-performance Embedded Workshop Ver.4.07.00 ルネサス エレクトロニクス製
SuperH RISC engine ファミリ C/C++コンパイラパッケージ Ver.9.03 Release02
C コンパイラ
コンパイラオプション
-cpu=sh2afpu -fpu=single
-object="$(CONFIGDIR)\$(FILELEAF).obj" -debug -gbr=auto -chgincpath -errorpath -global_volatile=0 -opt_range=all -infinite_loop=0 -del_vacant_loop=0 -struct_alloc=1 -nologo (統合開発環境のデフォルト設定を使用しています) 使用ボード R0K572690C000BR
3. 関連アプリケーションノート
本アプリケーションノートに関連するアプリケーションノートを以下に示します。併せて参照してくださ い。 • SH7268/SH7269 グループ SPI マルチ I/O バスコントローラを使用したシリアルフラッシュメモリからの ブート例(R01AN0663JJ) • SH7268/SH7269 グループ SPI マルチ I/O バスコントローラ シリアルフラッシュメモリ接続例 (R01AN0671JJ) • E10A-USB エミュレータ用 フラッシュメモリ ダウンロードプログラム アプリケーションノートR01AN0883JJ0100 Rev. 1.00 Page 6 of 30 2011.11.30
4. 周辺機能説明
SPI マルチ I/O バスコントローラについて補足します。基本的な内容はハードウェアマニュアルに記載して います。
SPI マルチ I/O バスコントローラには、SPI 動作モードと外部アドレス空間リードモードがあります。シリ アルフラッシュメモリに書き込んだプログラムを直接フェッチする場合には、外部アドレス空間リードモー ドを使用しますが、シリアルフラッシュメモリをイレーズまたはライトする場合は SPI 動作モードを使用す る必要があります。
SPI 動作モードの設定手順については、アプリケーションノート「SH7268/SH7269 グループ SPI マルチ I/O バスコントローラ シリアルフラッシュメモリ接続例(R01AN0671JJ)」を参照してください。
5. ハードウェア説明
5.1
使用端子一覧
表 5.1に使用端子と機能を示します。 表 5.1 使用端子と機能 端子名 入出力 内容 SPBCLK 出力 シリアルフラッシュメモリへのクロック出力 SPBSSL 出力 シリアルフラッシュメモリへのデバイス選択信号出力 SPBIO0_0 入出力 シリアルフラッシュメモリへのデータ入出力(ビット 0) SPBIO1_0 入出力 〃 (ビット 1) SPBIO2_0 入出力 〃 (ビット 2) SPBIO3_0 入出力 〃 (ビット 3) MD_BOOT0 入力 ブートモードの選択(ビット 0) MD_BOOT1 入力 〃 (ビット 1) MD_BOOT2 入力 〃 (ビット 2)AUDCK 出力 E10A-USB エミュレータ(38pin)へのクロック出力
AUDATA0 出力 E10A-USB エミュレータ(38pin)へのアドレス出力(ビット 0) AUDATA1 出力 〃 (ビット 1) AUDATA2 出力 〃 (ビット 2) AUDATA3 出力 〃 (ビット 3) AUDSYNC# 出力 E10A-USB エミュレータ(38pin)への同期信号出力
TCK 入力 E10A-USB エミュレータからのクロック入力 TMS 入力 E10A-USB エミュレータからのモード選択 TRST# 入力 E10A-USB エミュレータからのリセット入力 TDI 入力 E10A-USB エミュレータからのデータ入力 TDO 出力 E10A-USB エミュレータへのデータ出力 ASEBRKAK#/ASEBRK# 入出力 ブレーク要求と応答 RES# 入力 システムリセット信号 ASEMD# 入力 ASE モードの選択 【注】#は負論理(またはアクティブロー)を示す記号です。
5.2
参考回路
図 5.1に接続例を示します。 TMS TDI TDO N.C. RES# H-UDIポートコネクタ(38-pin) AUDCK AUDATA0 AUDATA1 AUDATA2 AUDATA3 AUDSYNC# TRST# TMS TCK TDI TDO ASEBRKAK#/ASEBRK# RES# N.C. N.C. VCC GND 6 30 28 26 24 32 13 15 15 17 21 19 11 8 14 9 5 N.C. N.C. N.C. N.C. N.C. N.C. N.C. N.C. N.C. N.C. (ASEMD#)* N.C. N.C. N.C. N.C. N.C. N.C. N.C. VCC 1 3 5 7 9 11 6 13 8 4 2 12 14 TCK TRST# ASEBRKAK#/ASEBRK# 1 2 4 7 10 13 16 18 20 22 3 23 25 27 29 31 33 34 3.3V H-UDIポートコネクタ(14-pin) (ASEMD#)* GND GND GND 3.3V 3.3V RES# 3.3V PF0/AUDCK PG16/AUDATA0 PG17/AUDATA1 PG21/AUDATA2 PG23/AUDATA3 PG22/AUDSYNC# TRST# TMS TCK TDI TDO ASEBRKAK#/ASEBRK# ASEMD# RES# SH7269 *:接続方法の詳細はE10A-USBエミュレータ ユーザーズマニュアルを参照してください N.C. 10 VCC_TR12 N.C. 35 N.C. 36 N.C. 37 N.C. 38 PB20/SPBMI_0/SPBIO1_0 PB19/SPBMO_0/SPBIO0_0 PB18/SPBSSL PB17/SPBCLK PB16/SPBIO3_0 PB15/SPBIO2_0 シリアルフラッシュメモリ S25FL032P(4Mバイト) SCK SI/IO0 W#/ACC/IO2 CS# SO/IO1 HOLD#/IO3 3.3V 3.3V 3.3V 3.3V 3.3V 3.3V MD_BOOT0 MD_BOOT1 MD_BOOT2 3.3V ブートモード3 3.3V 【注】#は負論理(またはアクティブロー)を示す記号です。 図 5.1 接続例R01AN0883JJ0100 Rev. 1.00 Page 8 of 30 2011.11.30
6. ソフトウェア説明
6.1
動作概要
FMTOOL は、イレーズモジュールとライトモジュールの 2 つのプログラムから構成されます。E10A-USB エミュレータは、この 2 つのプログラムを使用して、フラッシュメモリにプログラムデータを書き込みます。 イレーズモジュールおよびライトモジュールの詳細仕様は、E10A-USB エミュレータ ユーザーズマニュアル 「6.22 フラッシュメモリへのダウンロード機能」を参照してください。 6.1.1 バッチファイル FMTOOL を実行する前にリセットコマンドを実行して SH7269 を初期化します。リセットコマンドについ ては統合開発環境のマニュアルを参照してください。 6.1.2 イレーズモジュール 図 6.1にイレーズモジュールの概要を示します。イレーズモジュールは高速内蔵RAM上で実行します。イ レーズモジュールには、通常、フラッシュメモリへのチップイレーズ処理を割り当てますが、サンプルコー ドでは初期設定処理を割り当てています。初期設定処理では、SPIマルチI/Oバスコントローラの初期化と、 シリアルフラッシュメモリのモード設定およびプロテクト解除を行います。 統合開発環境 イレーズ モジュール ライト モジュール SH7269 シリアル フラッシュメモリ FMTOOL 高速内蔵RAM SPIマルチI/O バスコントローラ ユーザプログラム イレーズ モジュール モード設定/ プロテクト解除 ダウンロード 実行 図 6.1 イレーズモジュールの概要6.1.3 ライトモジュール 図 6.2にライトモジュールの概要を示します。ライトモジュールは高速内蔵RAM上で実行します。ライト モジュールは、ユーザプログラムのワードデータを引数として受け取ります。ライトモジュールはこれをバッ ファリングして、ページの切り換えタイミングでシリアルフラッシュメモリにライトします。また引数で指 定された書き込み先アドレスが未消去セクタのものであれば、セクタイレーズを行ってから書き込みます。 なお、SPI マルチ I/O バス空間の先頭番地(H'1800 0000 番地)がシリアルフラッシュメモリの先頭番地 (H'0000 0000 番地)に対応するようにライトモジュール内でアドレス変換を行っています。 統合開発環境 イレーズ モジュール ライト モジュール SH7269 シリアル フラッシュメモリ FMTOOL 高速内蔵RAM SPIマルチI/O バスコントローラ ユーザプログラム ライト モジュール ページライト/ セクタイレーズ ページバッファ ワードデータ (2バイト) ページデータ (256バイト) ダウンロード 実行 H'1800 0000 (H'3800 0000) H'0000 0000 図 6.2 ライトモジュールの概要
R01AN0883JJ0100 Rev. 1.00 Page 10 of 30 2011.11.30
6.2
ファイル構成
表 6.1にサンプルコードで使用するファイルを示します。なお、統合開発環境で自動生成されるファイル は除きます。 表 6.1 ファイル構成 ファイル名 概要 備考 fmtool_entry.src FMTOOL のエントリモジュール イレーズモジュールと ライトモジュールのエントリ fmtool_main.c FMTOOL のメインモジュール fmtool_cpg.c CPG の初期化処理 fmtool_cpg.h fmtool_cpg.c の I/F 定義r_sf_spibsc.c シリアルフラッシュメモリ操作処理 マルチ I/O 対応版 r_sf_spibsc.h r_sf_spibsc.c の I/F 定義
io_spibsc.c SPI マルチ I/O バスコントローラの 制御処理
io_spibsc.h io_spibsc.c の I/F 定義
sh7269_spibsc_fmtool.hdc バッチファイル 統合開発環境に登録 fmtool_debug.c FMTOOL 用デバッグコード デバッグ時のみ使用
R01AN0883JJ0100 Rev. 1.00 Page 12 of 30 2011.11.30
6.3
定数一覧
表 6.2にサンプルコードで使用する定数を示します。 表 6.2 サンプルコードで使用する定数 定数名 設定値 内容 SFLASH_DUAL 0 シリアルフラッシュメモリの 2 個接続はしない SPI_QUAD 1 マルチ I/O バス対応のシリアルフラッシュメモリ SF_PAGE_SIZE 256 ページサイズ(256 バイト) PAGE_SIZE SF_PAGE_SIZE 〃 SF_SECTOR_SIZE (64*1024) セクタサイズ(64K バイト) SECTOR_SIZE SF_SECTOR_SIZE 〃 SR_Init 0x000000F0 ステータスレジスタの初期値 DEFAULT_VALUE 0xFFFFFFFF FMTOOL で使用する管理データの初期値 SFLASH_ADDRESS_MASK 0xFC000000 SPI マルチ I/O バス空間のアドレスをシリアルフラッシュメモリのアドレスに変換するためのマス ク設定値 TYPE_BYTE 0x4220 ライトモジュールの R5 パラメータ (データアクセスサイズは、バイトサイズ) TYPE_WORD 0x5720 ライトモジュールの R5 パラメータ (データアクセスサイズは、ワードサイズ) TYPE_LONG 0x4C20 ライトモジュールの R5 パラメータ (データアクセスサイズは、ロングサイズ) ENABLE_DEBUG_MODE 1 FMTOOL 用デバッグコードは有効
6.4
構造体/共用体一覧
図 6.3にサンプルコードで使用する構造体/共用体を示します。 /* ==== SPIマルチI/Oバスコントローラの転送制御を行うための構造体 ==== */ typedef struct{ /* ---- SPIモードイネーブル設定レジスタ(SMENR)の設定値 ---- */ uint32_t cdb :2; /* コマンドビット幅 */ uint32_t ocdb :2; /* オプショナルコマンドビット幅*/ uint32_t adb :2; /* アドレスビット幅*/ uint32_t opdb :2; /* オプションデータビット幅 */ uint32_t spidb :2; /* 転送データビット幅 */ uint32_t cde :1; /* コマンドイネーブル */ uint32_t ocde :1; /* オプショナルコマンドイネーブル */ uint32_t ade :4; /* アドレスイネーブル */ uint32_t opde :4; /* オプションデータイネーブル */ uint32_t spide :4; /* 転送データイネーブル */ /* ---- SPIモードコントロールレジスタ(SMCR)の設定値 ---- */ uint32_t sslkp :1; /* SPBSSL信号レベル保持 */ uint32_t spire :1; /* データリードイネーブル */ uint32_t spiwe :1; /* データライトイネーブル */ uint32_t :5; /* ---- SPIモードコマンド設定レジスタ(SMCMR)の設定値 ---- */ uint8_t cmd; /* コマンド */ uint8_t ocmd; /* オプショナルコマンド */ /* ---- SPIモードアドレス設定レジスタ(SMADR)の設定値 ---- */ uint32_t addr; /* ---- SPIモードオプション設定レジスタ(SMOPR)の設定値 ---- */ uint8_t opd[4]; /* オプションデータ0~3 */ /* ---- SPIモードリードデータレジスタ(SMRDR0,SMRDR1)の設定値 ---- */ uint32_t smrdr[2]; /* ---- SPIモードライトデータレジスタ(SMWDR0,SMWDR1)の設定値 ---- */ uint32_t smwdr[2]; } st_spibsc_spimd_reg_t; 図 6.3 サンプルコードで使用する構造体/共用体R01AN0883JJ0100 Rev. 1.00 Page 14 of 30 2011.11.30
6.5
変数一覧
表 6.3にグローバル変数を、表 6.4にstatic型変数を示します。
表 6.3 グローバル変数
Type Variable Name Contents Function Used st_spibsc_spimd_reg_t g_spibsc_spimd_reg SPI マルチ I/O バスコ
ントローラの設定 データ R_SF_SPIBSC_EraseChip R_SF_SPIBSC_EraseSector R_SF_SPIBSC_ByteProgram R_SF_SPIBSC_ByteRead read_data_quad read_status read_config write_enable write_status 表 6.4 static 型変数
Type Variable Name Contents Function Used uint32_t fmtool_pre_erase_sctno イレーズ済みセクタの管理情報 fmtool_init,
fmtool_write uint32_t fmtool_cur_page バッファリングしているページ の先頭アドレス fmtool_init, fmtool_write uint16_t fmtool_page_bufr[PAGE_SIZE / sizeof(uint16_t)] ページバッファ fmtool_write
6.6
関数一覧
表 6.5に関数を示します。 表 6.5 関数 関数名 概要 _ERASE_ENTRY イレーズモジュールのエントリ処理 _WRITE_ENTRY ライトモジュールのエントリ処理 fmtool_init イレーズモジュールのメイン処理(初期化処理) fmtool_write ライトモジュールのメイン処理(イレーズ/ライト処理) R_SF_SPIBSC_GetBsz シリアルフラッシュメモリ操作関数(データバス幅の検出) R_SF_SPIBSC_SetBsz 〃 (データバス幅の設定) R_SF_SPIBSC_AllocateExspace 〃 (外部アドレス空間リードモードの設定)R_SF_SPIBSC_Init 〃 (SPI マルチ I/O バスコントローラの初期設定および シリアルフラッシュメモリのモード設定) R_SF_SPIBSC_CtrlProtect 〃 (プロテクト制御) R_SF_SPIBSC_EraseChip 〃 (チップイレーズ処理) R_SF_SPIBSC_EraseSector 〃 (セクタイレーズ処理) R_SF_SPIBSC_ByteProgram 〃 (ライト処理) R_SF_SPIBSC_ByteRead 〃 (リード処理)※SPI 動作モードを使用したリード処理 fmtool_debug FMTOOL 用デバッグ関数
6.7
関数仕様
サンプルコードの関数仕様を示します。 _ERASE_ENTRY 概要 イレーズモジュールのエントリ処理 ヘッダ なし 宣言 _ERASE_ENTRY: 説明 イレーズモジュールのエントリ部で、H'FFF8 2000 番地に配置します。本モジュール は E10A-USB フラッシュメモリダウンロード機能によって起動されます。 本モジュールはスタックポインタの設定後、fmtool_init 関数を実行します。 引数 R4 レジスタ : アクセスサイズ (バイト= H'4220、ワード= H'5720、ロング= H'4C00) リターン値 なし 備考 アセンブリ言語で記述されています。 _WRITE_ENTRY 概要 ライトモジュールのエントリ処理 ヘッダ なし 宣言 _WRITE_ENTRY: 説明 ライトモジュールのエントリ部で、H'FFF8 2100 番地に配置します。本モジュールは E10A-USB フラッシュメモリダウンロード機能によって起動されます。 本モジュールはスタックポインタの設定後、fmtool_write 関数を実行します。 引数 R4 レジスタ : ライトデータが配置されているアドレス R5 レジスタ : アクセスサイズ (バイト= H'4220、ワード= H'5720、ロング= H'4C00) R6 レジスタ : ライトデータ R7 レジスタ : ベリファイフラグ (0=ベリファイなし、1=ベリファイあり) リターン値 R0 レジスタ=0 の場合:正常終了 R0 レジスタ=1 の場合:エラー終了 備考 アセンブリ言語で記述されています。 fmtool_init 概要 イレーズモジュールのメイン処理(初期化処理) ヘッダ なし 宣言 void fmtool_init(void); 説明 SPI マルチ I/O バスコントローラとシリアルフラッシュメモリの初期化を行います。 本関数は FMTOOL のエントリポイント(_ERASE_ENTRY)から実行します。R01AN0883JJ0100 Rev. 1.00 Page 16 of 30 2011.11.30
fmtool_write
概要 ライトモジュールのメイン処理(イレーズ/ライト処理) ヘッダ なし
宣言 int32_t fmtool_write(uint32_t addr, int32_t access_size, uint32_t write_data, int32_t v_flag ); 説明 シリアルフラッシュメモリのイレーズおよびライト処理を行います。イレーズはセク タ単位、ライトはページ単位でシリアルフラッシュメモリをアクセスします。本関数 は FMTOOL のエントリポイント(_WRITE_ENTRY)から実行します。 引数 第一引数 : addr : ライトデータが配置されているアドレス 第二引数 : size : アクセスサイズ (バイト= H'4220、ワード= H'5720、ロング= H'4C00) 第三引数 : write_data : ライトデータ 第四引数 : v_flag : ベリファイフラグ (0=ベリファイなし、1=ベリファイあり)※未使用 リターン値 0 の場合 : 正常終了 負の場合 :エラー終了 備考 アクセスサイズはワードサイズのみ対応します。 R_SF_SPIBSC_GetBsz 概要 シリアルフラッシュメモリ操作関数(データバス幅の検出) ヘッダ “r_sf_spibsc.h” 宣言 int32_t R_SF_SPIBSC_GetBsz(void); 説明 SPI マルチ I/O バスコントローラに設定したデータバス幅(接続デバイス数)を返し ます。 引数 なし リターン値 1 の場合:データバス幅 4 ビット(デバイス×1) 2 の場合:データバス幅 8 ビット(デバイス×2) 備考 R_SF_SPIBSC_SetBsz 概要 シリアルフラッシュメモリ操作関数(データバス幅の設定) ヘッダ “r_sf_spibsc.h” 宣言 void R_SF_SPIBSC_SetBsz(int32_t bsz); 説明 SPI マルチ I/O バスコントローラに、データバス幅(接続デバイス数)を設定します。 引数 第一引数 : bsz : データバス幅(接続デバイス数) リターン値 なし 備考
R_SF_SPIBSC_AllocateExspace 概要 シリアルフラッシュメモリ操作関数(外部アドレス空間リードモードの設定) ヘッダ “r_sf_spibsc.h” 宣言 void R_SF_SPIBSC_AllocateExspace(void); 説明 SPI マルチ I/O バスコントローラに、外部アドレス空間リードモードを設定します。 引数 なし リターン値 なし 備考 R_SF_SPIBSC_Init 概要 シリアルフラッシュメモリ操作関数(SPI マルチ I/O バスコントローラの初期設定お よびシリアルフラッシュメモリのモード設定) ヘッダ “r_sf_spibsc.h” 宣言 void R_SF_SPIBSC_Init(void); 説明 SPI マルチ I/O バスコントローラの基本部分の初期設定を行います。またシリアルフ ラッシュメモリを Quad 動作モードに設定します。 引数 なし リターン値 なし 備考 R_SF_SPIBSC_CtrlProtect 概要 シリアルフラッシュメモリ操作関数(プロテクト制御) ヘッダ “r_sf_spibsc.h”
宣言 void R_SF_SPIBSC_CtrlProtect(en_sf_req_t req);
説明 シリアルフラッシュメモリのプロテクトを解除、またはセットします。 引数 第一引数 : req : プロテクトリクエスト (SF_REQ_PROTECT : プロテクトセット、 SF_REQ_UNPROTECT : プロテクト解除) リターン値 なし 備考 R_SF_SPIBSC_EraseChip 概要 シリアルフラッシュメモリ操作関数(チップイレーズ処理) ヘッダ “r_sf_spibsc.h” 宣言 void R_SF_SPIBSC_EraseChip(void); 説明 シリアルフラッシュメモリをチップイレーズします。 引数 なし リターン値 なし 備考
R01AN0883JJ0100 Rev. 1.00 Page 18 of 30 2011.11.30
R_SF_SPIBSC_EraseSector
概要 シリアルフラッシュメモリ操作関数(セクタイレーズ処理) ヘッダ “r_sf_spibsc.h”
宣言 void R_SF_SPIBSC_EraseSector(int32_t sector_no); 説明 シリアルフラッシュメモリをセクタイレーズします。 引数 第一引数 : sector_no : イレーズするセクタ番号 リターン値 なし 備考 R_SF_SPIBSC_ByteProgram 概要 シリアルフラッシュメモリ操作関数(ライト処理) ヘッダ “r_sf_spibsc.h”
宣言 void R_SF_SPIBSC_ByteProgram(uint32_t addr, uint8_t * buf, int32_t size); 説明 引数で指定されたデータをシリアルフラッシュメモリにライトします。SPI_QUAD マクロで 1 を指定した場合は、Quad 対応のページプログラムコマンド(H'32)を使 用し、0 を指定した場合は、Single 対応のページプログラムコマンド(H'02)を使用 します。 引数 第一引数 : addr : ライトアドレス (シリアルフラッシュメモリのアドレス) 第二引数 : buf : ライトデータ(バッファの先頭アドレス) 第三引数 : size : データバイト数 リターン値 なし 備考 R_SF_SPIBSC_ByteRead 概要 シリアルフラッシュメモリ操作関数(リード処理) ヘッダ “r_sf_spibsc.h”
宣言 void R_SF_SPIBSC_ByteRead(uint32_t addr, uint8_t * buf, int32_t size);
説明 引数で指定されたシリアルフラッシュメモリの領域をリードしてバッファに格納し ます。SPI_QUAD マクロで 1 を指定した場合は、Quad 対応のリードコマンド(H'6B) を使用し、0 を指定した場合は、Single 対応のリードコマンド(H'0B)を使用します。 引数 第一引数 : addr : リードアドレス (シリアルフラッシュメモリのアドレス) 第二引数 : buf : リードバッファの先頭アドレス 第三引数 : size : データバイト数 リターン値 なし 備考
fmtool_debug 概要 FMTOOL 用デバッグ関数 ヘッダ なし 宣言 void fmtool_debug(void); 説明 FMTOOL をデバッグするためにイレーズモジュールとライトモジュールを実行しま す。本関数は統合開発環境を使用して起動します。レジスタウィンドウで PC に "fmtool_debug"、SP に"H'FFF90000"を設定してください。 本関数は、最終ページを除いた先頭 2 セクタ(H'1800 0000 番地~H'1801 FFFF 番地) に連番を書き込みます。ただし最終ページはダミーデータ領域ですので実際にはライ トされません。シリアルフラッシュメモリへの書き込み後に外部アドレス空間リード モードを設定しています。そのため、メモリウィンドウを開いて書き込み値を確認す ることができます。なお、外部アドレス空間リードモードを設定するまでは SPI マル チ I/O バス空間にはアクセスできません。したがって、メモリウィンドウも外部アド レス空間リードモードを設定した後に開いてください。 引数 なし リターン値 なし 備考 イレーズモジュールおよびライトモジュールがスタックポインタの値を書き換える ため本関数は両モジュールのエントリ部分ではなくメイン処理を実行しています。
6.8
フローチャート
サンプルコードで使用する主な関数の処理の流れを示します。シリアルフラッシュメモリ操作関数につい てはアプリケーションノート「SH7268/SH7269 グループ SPI マルチ I/O バスコントローラ シリアルフラッ シュメモリ接続例(R01AN0671JJ)」を参照してください。 6.8.1 イレーズモジュール 図 6.4にイレーズモジュールのフローチャートを示します。 _ERASE_ENTRY スタックポインタの設定 レジスタ退避 割り込みは禁止しています。 モジュールのメイン処理を実行 fmtool_init() レジスタ復帰 return fmtool_init ステータスレジスタの設定 シリアルフラッシュメモリを初期化 R_SF_SPIBSC_Init() return クロックパルス発振器の設定 io_set_cpg() FMTOOLで使用する グローバルデータを初期化 高速内蔵RAM上の以下の変数を初期値に設定します。 - fmtool_pre_erase_sctno : イレーズ済みセクタの管理情報 - fmtool_cur_page : バッファリングしているページの先頭アドレス シリアルフラッシュメモリのプロテクト解除 R_SF_SPIBSC_CtrlProtect() アセンブリ言語で記述しています。 スタックポインタ以外のレジスタを退避します。 図 6.4 イレーズモジュールR01AN0883JJ0100 Rev. 1.00 Page 20 of 30 2011.11.30
6.8.2 ライトモジュール 図 6.5にライトモジュールのフローチャートを示します。 _WRITE_ENTRY スタックポインタの設定 レジスタ退避 モジュールのメイン処理を実行 fmtool_write() レジスタ復帰 return (fmtool_writeの戻り値) fmtool_write SPIマルチI/Oバス空間上のアドレスを シリアルフラッシュメモリのアドレスに変換 書き込み先のページ番号とオフセットを算出 アセンブリ言語で記述しています。 戻り値に使用するR0レジスタと、スタックポインタ以外のレジスタを 退避します。 ワードアクセス? return (-1) ワードアクセス以外はエラーコードを返して終了します。 イレーズ済み? ライト先のセクタ番号を算出 セクタイレーズを実行 R_SF_SPIBSC_EraseSector() イレーズ済みセクタ情報を更新 No Yes No Yes fmtool_pre_erase_sctno 変数に保存している イレーズ済みセクタ番号と比較します。 バッファリング中のページ? No Yes バッファのデータ(256バイト)を シリアルフラッシュメモリにライト R_SF_SPIBSC_ByteProgram() バッファリング中のページ番号を更新 H'FFでバッファをクリア fmtool_cur_page 変数に保存している バッファリング中のページ番号と比較します。
6.9
注意事項
6.9.1 ロードモジュールへのダミーデータ追加 シリアルフラッシュメモリへの書き込み速度を向上させるため、FMTOOL は書き込みデータをバッファリ ングしてページ単位に書き込みます。シリアルフラッシュメモリへの書き込みは、バッファリング中のペー ジと異なるページのアドレスが指定されたタイミングで行われるため、最後の 1 ページ分のデータは、バッ ファに残ったままシリアルフラッシュメモリに書き込まれない可能性があります。有効データをバッファに 残さないために、ロードモジュールの最後の 1 ページ分のデータにはダミーデータを配置してください。 書き込まれる 領域 書き込まれない 領域 H'1801 0000 H'1801 1F4B H'1801 1EFF H'1801 1F00 ロードモジュール ロードモジュール H'1801 0000 H'1801 1F4B H'1801 1F4C H'1801 204B H'1801 1FFF H'1801 2000 ダミーデータ 書き込まれる 領域 書き込まれない 領域 図 6.6 バッファに残って書き込まれない領域 図 6.7にダミーデータの追加例を示します。用意したダミーセクション(CDUMMY_MODULE_END)で 256 バイトの定数データを定義し、ROM領域の最後に配置します。 #define SF_PAGE_SIZE 256#pragma section DUMMY_MODULE_END
const char dummy_area[SF_PAGE_SIZE] = { 0 }; #pragma section
dummy.c
ROM領域の 最後に配置する
図 6.7 ダミーデータの追加例
R01AN0883JJ0100 Rev. 1.00 Page 22 of 30 2011.11.30
6.9.2 ロードモジュール間のセクタ共有禁止 図 6.8にロードモジュール間でセクタを共有した場合の動作を示します。FMTOOLでダウンロードする ユーザプログラムを複数のロードモジュールで構成することも可能ですが、ロードモジュール間でセクタを 共有することはできません。セクタを共有した場合、先にダウンロードしたロードモジュールのデータが誤っ て消去されます。 なお、ここでいうロードモジュールの領域には、6.9.1で説明したダミーデータの領域も含みます。 消去 ①ロードモジュール2 書き込み前 H'1800 0000 ロード モジュール1 ロード モジュール2 H'1801 FFFF ロード モジュール1 消去済み ②ロードモジュール2書き込み開始 イレーズモジュール実行(初期化) セクタ0 0 H'FFFF FFFF (初期データ) ロード モジュール2 ③ライトモジュール実行 (セクタイレーズ) ロード モジュール2 ④ライトモジュール実行 (プログラム) 消去済み 消去済み セクタイレーズ ロード モジュール2 消去済みセクタを 管理する変数 0 0 例)ロードモジュール1とロードモジュール2がセクタ0を共有する場合 図 6.8 ロードモジュール間でセクタを共有した場合の動作
7. 応用例
7.1
ユーザプログラムダウンロード手順
作成した FMTOOL(sh7269_spibsc_fmtool.mot)を使用してユーザプログラムをシリアルフラッシュメモリ にダウンロードする手順を以下に示します。 7.1.1 ダウンロード環境の準備 (1) PC に接続した E10A-USB エミュレータと、ユーザシステムを接続します。(2) High-performance Embedded Workshop を起動し、ユーザプログラムのワークスペースを開きます。 (3) 図 7.1に示すCPU selectダイアログボックスが表示されます。 ご使用の CPU をドロップダウンリストボックスより選択し、OK ボタンを押してください。 【注】SH72691 の場合 図 7.1 CPU select ダイアログボックス (4) Connectingダイアログボックスが表示され、エミュレータの接続を開始します。 図 7.2に示すRESET信号入力要求メッセージのダイアログボックスが表示されます。 図 7.2 RESET 信号入力要求メッセージのダイアログボックス (5) ユーザシステムの電源を入れます。 ユーザシステムからRESET信号を入力し、OKボタンをクリックします。
High-performance Embedded Workshop のOutputウィンドウに "Connected" と表示されたら、E10A-USBエ ミュレータの起動は完了です。
7.1.2 バッチファイルの登録
(1) メニューの[デバッグ]→[デバッグの設定]を選択します。 (2) 図 7.3に示すデバッグの設定ウィンドウが開きます。
(3) "コマンドバッチファイル実行タイミング" のプルダウンメニューから、"Before download modules"を選択 します。
(4) "コマンドバッチファイル実行順序" の追加ボタンをクリックし、バッチファイルを追加します。 (5) OK ボタンをクリックして登録は完了です。
R01AN0883JJ0100 Rev. 1.00 Page 24 of 30 2011.11.30
図 7.3 デバッグの設定ウィンドウ
7.1.3 Configuration ダイアログボックスの設定
図 7.4に示すConfigurationダイアログボックス(Loading flash memoryページ)で、E10A-USBエミュレータ を使用して外部フラッシュメモリにユーザプログラムをダウンロードするための設定を行います。
項目 設定値 Loading flash memory Enable
Erasing flash memory Enable
File Name sh7269_spibsc_fmtool.mot Bus width of flash memory 16-bit bus width
All erasing module address イレーズモジュールの先頭アドレスを指定 Writing module address ライトモジュールの先頭アドレスを指定
7.1.4 ダウンロードモジュールの追加 デバッグメニューからデバッグの設定ウィンドウを開き、追加ボタンをクリックしてください。図 7.5に 示すダウンロードモジュールウィンドウが表示されますのでユーザプログラム(シリアルフラッシュメモリ にロードしたいプログラム)をダウンロードモジュールに追加します。 図 7.5 ダウンロードモジュールウィンドウ 7.1.5 ユーザプログラムのダウンロード 図 7.6に示すダウンロード機能にて、ユーザプログラムをダウンロードします。 図 7.6 ユーザプログラムのダウンロード
R01AN0883JJ0100 Rev. 1.00 Page 26 of 30 2011.11.30
7.2
シリアルフラッシュブートへの応用
シリアルフラッシュメモリからブートする機能を、ここではシリアルフラッシュブートと称します。シリ アルフラッシュブートの詳細は、アプリケーションノート「SH7268/SH7269 グループ SPI マルチ I/O バスコ ントローラを使用したシリアルフラッシュメモリからのブート例(R01AN0663JJ)」に記載していますのでこち らを参照してください。 ここでは、上記アプリケーションノート(R01AN0663JJ)のフラッシュ書き込みツールであるダウンローダを FMTOOL に置き換える際の変更点について説明します。 7.2.1 セクション配置 図 7.7にFMTOOLを使用した場合のセクション配置を示します。ローダプログラムとアプリケーションプ ログラムは、以下の点に注意して配置してください。 • SPI マルチ I/O バス空間に、セクションを配置する • 異なるロードモジュールで 1 つのセクタを共有しない(アプリケーションプログラムは H'1800 2000 番地 ではなく H'1801 0000 番地に配置するなど) • ローダプログラムは、最適化リンケージエディタのオプション(ROM から RAM へマップするセクショ ン)を使って H'FFF8 0000 番地にマッピングする 統合開発環境 SH7269 ローダ プログラム アプリケーション プログラム H'1800 0000 H'1801 0000 appinfo SPIマルチI/Oバス空間 H'1800 0000 H'1801 0000 アプリケーション プログラム appinfo ローダ プログラム H'FFF8 0000 高速内蔵RAM シリアル フラッシュメモリ H'0000 0000 H'0001 0000 ローダ プログラム アプリケーション プログラム appinfo ローダ プログラム FMTOOL 外部アドレス空間 リードモード ブート起動用内蔵ROMが 転送(アドレス固定) ブート後は 参照しない FMTOOL 図 7.7 FMTOOL を使用した場合のセクション配置 7.2.2 ダミーデータの追加 「6.9.1 ロードモジュールへのダミーデータ追加」に示したとおり、ローダプログラムおよびアプリケーショ ンプログラムにダミーデータを必ず追加してください。R01AN0883JJ0100 Rev. 1.00 Page 28 of 30 2011.11.30
7.3 FMTOOL のカスタマイズ
サンプルコードはシリアルフラッシュメモリのデバイス仕様に依存するため、デバイス変更時はプログラ ムのカスタマイズが必要な場合があります。 7.3.1 サンプルコードに対応するデバイス仕様 表 7.2と表 7.3に、使用デバイスの詳細仕様およびサンプルコードで使用するコマンドを示します。 表 7.2 使用デバイスの詳細仕様 項目 内容 メーカー Spansion Inc. 型名 S25FL032P0XMFI01 容量 4M バイトインタフェース SPI マルチ I/O バス(Single/Dual/Quad mode) アクセスタイム 104MHz(Single mode)、80MHz(Dual/Quad mode)
セクタ構造 ユニフォーム型 セクタサイズ 64K バイト ページサイズ 256 バイト 表 7.3 サンプルコードで使用するコマンド 項目 内容 イレーズコマンド H'D8(64KB セクタイレーズ) プログラムコマンド H'32(Quad ページプログラミング)、 H'02(Single ページプログラミング) 7.3.2 カスタマイズの内容 以下にカスタマイズが必要なケースと、その変更内容を示します。 表 7.4 カスタマイズが必要なケースとカスタマイズ内容 項目 カスタマイズ内容 Quad モードが使用できない場合 (Single モードで動作させる場合) SPI_QUAD マクロの設定値を 0 に変更してください。 セクタサイズが異なる場合 (64K バイトのセクタイレーズに対応 していない場合) セクタ構造がユニフォーム型の場合は、SF_SECTOR_SIZE マ クロの設定値を新しいセクタサイズに変更し、 R_SF_SPIBSC_EraseChip 関数で使用するセクタイレーズコマ ンドを新しいセクタサイズに対応したコマンドに変更してくだ さい。セクタ構造がトップ型またはボトム型の場合は、 fmtool_write 関数で行っているセクタ番号の判別アルゴリズム も変更する必要があります。 デバイスの初期設定手順が異なる場合 表 7.3のコマンドが使用できない場合 電気的特性が異なる場合 シリアルフラッシュメモリの操作関数および SPI マルチ I/O バ スコントローラの制御関数のカスタマイズが必要です。詳細は サンプルコードを参照してください。 【注】 FMTOOLはフラッシュメモリの仕様に依存するため、表 7.4が全てのチェック項目を網羅しているわ けではありません。使用されるデバイスのデータシートをご確認の上、デバイスの仕様に合わせて FMTOOLを修正してください。
7.4 FMTOOL のデバッグ手順
FMTOOL は統合開発環境から起動するため、通常のデバッグ手順は使用できません。ここでは FMTOOL のデバッグ手順を説明します。 7.4.1 デバッグコードの実装 ENABLE_DEBUG_MODE マクロを 1 に設定した状態でビルドを行ってください。FMTOOL のロードモ ジュールにデバッグ関数(fmtool_debug)が組み込まれます。デバッグ関数の仕様については、6.7 関数仕様 を参照してください。 7.4.2 デバッグ環境の準備 「7.1.1 ダウンロード環境の準備」と同じ手順で、E10A-USB エミュレータとユーザシステムを接続します。 7.4.3 FMTOOL のダウンロード (1) CPU をリセットします。 メニューの[デバッグ]→[CPU のリセット]を選択してください。 (2) FMTOOL を高速内蔵 RAM 上にダウンロードします。 「7.1.5 ユーザプログラムのダウンロード」と同様の手順で、sh7269_spibsc_fmtool.abs を高速内蔵 RAM 上 にダウンロードします。デバッグ情報もダウンロードするために、S フォーマットファイル(.mot)では なく、ELF-DWARF ファイル(.abs)をダウンロードしてください。 7.4.4 FMTOOL のデバッグ (1) プログラムカウンタをデバッグプログラムの先頭に設定します。 レジスタウィンドウの PC をダブルクリックして、"fmtool_debug" を入力してください。 (2) スタックポインタを設定します。 レジスタウィンドウの SP をダブルクリックして、"H'FFF90000" を入力してください。 図 7.8 PC と SP の初期化 (3) デバッグコードを実行します。 メニューから[デバッグ]→[実行]を選択するとプログラムが実行されます。必要に応じてステップ実行や ブレークポイントを利用してデバッグを行ってください。R01AN0883JJ0100 Rev. 1.00 Page 30 of 30 2011.11.30
8. サンプルコード
サンプルコードは、ルネサス エレクトロニクスホームページから入手してください。9. 参考ドキュメント
SH7268/SH7269 グループ ユーザーズマニュアル ハードウェア編 Rev.1.00 (最新版をルネサス エレクトロニクスホームページから入手してください。) テクニカルアップデート/テクニカルニュース (最新の情報をルネサス エレクトロニクスホームページから入手してください。) C コンパイラマニュアルSuperH RISC engine ファミリ C/C++コンパイラパッケージ V.9.04 C コンパイラユーザーズマニュアル Rev.1.01
(最新版をルネサス エレクトロニクスホームページから入手してください。)
SuperH ファミリ用 E10A-USB エミュレータ ユーザーズマニュアル Rev.9.00 (最新の情報をルネサス エレクトロニクスホームページから入手してください。)
ホームページとサポート窓口
• ルネサス エレクトロニクスホームページ http://japan.renesas.com • お問合せ先 http://japan.renesas.com/inquiry改訂内容 Rev. 発行日
ページ ポイント
ここでは、マイコン製品全体に適用する「使用上の注意事項」について説明します。個別の使用上の注意 事項については、本文を参照してください。なお、本マニュアルの本文と異なる記載がある場合は、本文の 記載が優先するものとします。 1. 未使用端子の処理 【注意】未使用端子は、本文の「未使用端子の処理」に従って処理してください。 CMOS製品の入力端子のインピーダンスは、一般に、ハイインピーダンスとなっています。未使用端子 を開放状態で動作させると、誘導現象により、LSI周辺のノイズが印加され、LSI内部で貫通電流が流れ たり、入力信号と認識されて誤動作を起こす恐れがあります。未使用端子は、本文「未使用端子の処理」 で説明する指示に従い処理してください。 2. 電源投入時の処置 【注意】電源投入時は,製品の状態は不定です。 電源投入時には、LSIの内部回路の状態は不確定であり、レジスタの設定や各端子の状態は不定です。 外部リセット端子でリセットする製品の場合、電源投入からリセットが有効になるまでの期間、端子の 状態は保証できません。 同様に、内蔵パワーオンリセット機能を使用してリセットする製品の場合、電源投入からリセットのか かる一定電圧に達するまでの期間、端子の状態は保証できません。 3. リザーブアドレスのアクセス禁止 【注意】リザーブアドレスのアクセスを禁止します。 アドレス領域には、将来の機能拡張用に割り付けられているリザーブアドレスがあります。これらのア ドレスをアクセスしたときの動作については、保証できませんので、アクセスしないようにしてくださ い。 4. クロックについて 【注意】リセット時は、クロックが安定した後、リセットを解除してください。 プログラム実行中のクロック切り替え時は、切り替え先クロックが安定した後に切り替えてください。 リセット時、外部発振子(または外部発振回路)を用いたクロックで動作を開始するシステムでは、ク ロックが十分安定した後、リセットを解除してください。また、プログラムの途中で外部発振子(また は外部発振回路)を用いたクロックに切り替える場合は、切り替え先のクロックが十分安定してから切 り替えてください。 5. 製品間の相違について 【注意】型名の異なる製品に変更する場合は、事前に問題ないことをご確認下さい。 同じグループのマイコンでも型名が違うと、内部メモリ、レイアウトパターンの相違などにより、特性 が異なる場合があります。型名の異なる製品に変更する場合は、製品型名ごとにシステム評価試験を実 施してください。
ع༡ᬺ߅วߖ⓹ญ عᛛⴚ⊛ߥ߅วߖ߅ࠃ߮⾗ᢱߩߏ⺧᳞ߪਅ⸥߳ߤ߁ߙޕ ޓ✚ว߅วߖ⓹ญ㧦http://japan.renesas.com/inquiry ࡞ࡀࠨࠬ ࠛࠢ࠻ࡠ࠾ࠢࠬ⽼ᄁᩣᑼળ␠ޓޥ100-0004ޓජઍ↰ᄢᚻ↸2-6-2㧔ᣣᧄࡆ࡞㧕 (03)5201-5307 http://www.renesas.com ̪༡ᬺ߅วߖ⓹ญߩᚲ㔚⇟ภߪᄌᦝߦߥࠆߎߣ߇ࠅ߹ߔޕᦨᣂᖱႎߦߟ߈߹ߒߡߪޔᑷ␠ࡎࡓࡍࠫࠍߏⷩߊߛߐޕ 1. ᧄ⾗ᢱߦ⸥タߐࠇߡࠆౝኈߪᧄ⾗ᢱ⊒ⴕᤨὐߩ߽ߩߢࠅޔ੍๔ߥߊᄌᦝߔࠆߎߣ߇ࠅ߹ߔޕᒰ␠ຠߩߏ⾼߅ࠃ߮ߏ↪ߦߚࠅ߹ߒߡߪޔ೨ߦᒰ␠༡ ᬺ⓹ญߢᦨᣂߩᖱႎࠍߏ⏕ߚߛ߈߹ߔߣߣ߽ߦޔᒰ␠ࡎࡓࡍࠫߥߤࠍㅢߓߡ㐿ߐࠇࠆᖱႎߦᏱߦߏᵈᗧߊߛߐޕ 2. ᧄ⾗ᢱߦ⸥タߐࠇߚᒰ␠ຠ߅ࠃ߮ᛛⴚᖱႎߩ↪ߦ㑐ㅪߒ⊒↢ߒߚ╙ਃ⠪ߩ․⸵ᮭޔ⪺ᮭߘߩઁߩ⍮⊛⽷↥ᮭߩଚኂ╬ߦ㑐ߒޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ ߖࠎޕᒰ␠ߪޔᧄ⾗ᢱߦၮߠ߈ᒰ␠߹ߚߪ╙ਃ⠪ߩ․⸵ᮭޔ⪺ᮭߘߩઁߩ⍮⊛⽷↥ᮭࠍࠄ⸵⻌ߔࠆ߽ߩߢߪࠅ߹ߖࠎޕ 3. ᒰ␠ຠࠍᡷㅧޔᡷᄌޔⶄ╬ߒߥߢߊߛߐޕ 4. ᧄ⾗ᢱߦ⸥タߐࠇߚ࿁〝ޔ࠰ࡈ࠻࠙ࠚࠕ߅ࠃ߮ߎࠇࠄߦ㑐ㅪߔࠆᖱႎߪޔඨዉຠߩേޔᔕ↪ࠍ⺑ߔࠆ߽ߩߢߔޕ߅ቴ᭽ߩᯏེߩ⸳⸘ߦ߅ߡޔ࿁〝ޔ ࠰ࡈ࠻࠙ࠚࠕ߅ࠃ߮ߎࠇࠄߦ㑐ㅪߔࠆᖱႎࠍ↪ߔࠆ႐วߦߪޔ߅ቴ᭽ߩ⽿છߦ߅ߡⴕߞߡߊߛߐޕߎࠇࠄߩ↪ߦ࿃ߒ߅ቴ᭽߹ߚߪ╙ਃ⠪ߦ↢ߓߚ៊ኂ ߦ㑐ߒޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ߖࠎޕ 5. ャߦ㓙ߒߡߪޔޟᄖ࿖ὑᦧ߮ᄖ࿖⾏ᤃᴺޠߘߩઁャ㑐ㅪᴺࠍㆩߒޔ߆߆ࠆᴺߩቯࠆߣߎࠈߦࠃࠅᔅⷐߥᚻ⛯ࠍⴕߞߡߊߛߐޕᧄ⾗ᢱߦ⸥タߐࠇߡ ࠆᒰ␠ຠ߅ࠃ߮ᛛⴚࠍᄢ㊂⎕უེߩ㐿⊒╬ߩ⋡⊛ޔァ↪ߩ⋡⊛ߘߩઁァ↪ㅜߩ⋡⊛ߢ↪ߒߥߢߊߛߐޕ߹ߚޔᒰ␠ຠ߅ࠃ߮ᛛⴚࠍ࿖ౝᄖߩ ᴺ߅ࠃ߮ⷙೣߦࠃࠅㅧ↪⽼ᄁࠍᱛߐࠇߡࠆᯏེߦ↪ߔࠆߎߣ߇ߢ߈߹ߖࠎޕ 6. ᧄ⾗ᢱߦ⸥タߐࠇߡࠆᖱႎߪޔᱜ⏕ࠍᦼߔߚᘕ㊀ߦᚑߒߚ߽ߩߢߔ߇ޔ⺋ࠅ߇ߥߎߣࠍ⸽ߔࠆ߽ߩߢߪࠅ߹ߖࠎޕਁ৻ޔᧄ⾗ᢱߦ⸥タߐࠇߡࠆᖱႎ ߩ⺋ࠅߦ࿃ߔࠆ៊ኂ߇߅ቴ᭽ߦ↢ߓߚ႐วߦ߅ߡ߽ޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ߖࠎޕ 7. ᒰ␠ߪޔᒰ␠ຠߩຠ⾰᳓ḰࠍޟᮡḰ᳓Ḱޠޔޟ㜞ຠ⾰᳓Ḱޠ߅ࠃ߮ޟ․ቯ᳓Ḱޠߦಽ㘃ߒߡ߅ࠅ߹ߔޕ߹ߚޔฦຠ⾰᳓Ḱߪޔએਅߦ␜ߔ↪ㅜߦຠ߇ࠊࠇࠆߎ ߣࠍᗧ࿑ߒߡ߅ࠅ߹ߔߩߢޔᒰ␠ຠߩຠ⾰᳓Ḱࠍߏ⏕ߊߛߐޕ߅ቴ᭽ߪޔᒰ␠ߩᢥᦠߦࠃࠆ೨ߩᛚ⻌ࠍᓧࠆߎߣߥߊޔޟ․ቯ᳓Ḱޠߦಽ㘃ߐࠇߚ↪ㅜߦ ᒰ␠ຠࠍ↪ߔࠆߎߣ߇ߢ߈߹ߖࠎޕ߹ߚޔ߅ቴ᭽ߪޔᒰ␠ߩᢥᦠߦࠃࠆ೨ߩᛚ⻌ࠍᓧࠆߎߣߥߊޔᗧ࿑ߐࠇߡߥ↪ㅜߦᒰ␠ຠࠍ↪ߔࠆߎߣ߇ߢ߈ ߹ߖࠎޕᒰ␠ߩᢥᦠߦࠃࠆ೨ߩᛚ⻌ࠍᓧࠆߎߣߥߊޔޟ․ቯ᳓Ḱޠߦಽ㘃ߐࠇߚ↪ㅜ߹ߚߪᗧ࿑ߐࠇߡߥ↪ㅜߦᒰ␠ຠࠍ↪ߒߚߎߣߦࠃࠅ߅ቴ᭽߹ߚ ߪ╙ਃ⠪ߦ↢ߓߚ៊ኂ╬ߦ㑐ߒޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ߖࠎޕߥ߅ޔᒰ␠ຠߩ࠺࠲ࠪ࠻ޔ࠺࠲ࡉ࠶ࠢ╬ߩ⾗ᢱߢ․ߦຠ⾰᳓Ḱߩ␜߇ߥ ႐วߪޔᮡḰ᳓Ḱຠߢࠆߎߣࠍߒ߹ߔޕ ᮡḰ᳓Ḱ㧦 ࠦࡦࡇࡘ࠲ޔOAᯏེޔㅢାᯏེޔ⸘᷹ᯏེޔAVᯏེޔኅ㔚ޔᎿᯏ᪾ޔࡄ࠰࠽࡞ᯏེޔ↥ᬺ↪ࡠࡏ࠶࠻ 㜞ຠ⾰᳓Ḱ㧦 ャㅍᯏེ㧔⥄േゞޔ㔚ゞޔ⦁⥾╬㧕ޔㅢ↪ାภᯏེޔ㒐ἴ㒐‽ⵝ⟎ޔฦ⒳ోⵝ⟎ޔ↢⛽ᜬࠍ⋡⊛ߣߒߡ⸳⸘ߐࠇߡߥක≮ᯏེ 㧔ෘ↢ഭ⋭ቯ⟵ߩ▤ℂක≮ᯏེߦ⋧ᒰ㧕 ․ቯ᳓Ḱ㧦 ⥶ⓨᯏེޔ⥶ⓨቝቮᯏེޔᶏᐩਛ⛮ᯏེޔේሶജᓮࠪࠬ࠹ࡓޔ↢⛽ᜬߩߚߩක≮ᯏེ㧔↢⛽ᜬⵝ⟎ޔੱߦၒㄟߺ↪ߔࠆ߽ߩޔᴦ≮ ⴕὑ㧔ᖚㇱಾࠅߒ╬㧕ࠍⴕ߁߽ߩޔߘߩઁ⋥ធੱߦᓇ㗀ࠍਈ߃ࠆ߽ߩ㧕㧔ෘ↢ഭ⋭ቯ⟵ߩ㜞ᐲ▤ℂක≮ᯏེߦ⋧ᒰ㧕߹ߚߪࠪࠬ࠹ࡓ╬ 8. ᧄ⾗ᢱߦ⸥タߐࠇߚᒰ␠ຠߩߏ↪ߦߟ߈ޔ․ߦޔᦨᄢቯᩰޔേ㔚Ḯ㔚▸࿐ޔᾲ․ᕈޔታⵝ᧦ઙߘߩઁ⻉᧦ઙߦߟ߈߹ߒߡߪޔᒰ␠⸽▸࿐ౝߢߏ↪ߊ ߛߐޕᒰ␠⸽▸࿐ࠍ߃ߡᒰ␠ຠࠍߏ↪ߐࠇߚ႐วߩ㓚߅ࠃ߮ߦߟ߈߹ߒߡߪޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ߖࠎޕ 9. ᒰ␠ߪޔᒰ␠ຠߩຠ⾰߅ࠃ߮ା㗬ᕈߩะߦദߡ߅ࠅ߹ߔ߇ޔඨዉຠߪࠆ⏕₸ߢ㓚߇⊒↢ߒߚࠅޔ↪᧦ઙߦࠃߞߡߪ⺋േߒߚࠅߔࠆ႐ว߇ࠅ߹ ߔޕ߹ߚޔᒰ␠ຠߪ⠴✢⸳⸘ߦߟߡߪⴕߞߡ߅ࠅ߹ߖࠎޕᒰ␠ຠߩ㓚߹ߚߪ⺋േ߇↢ߓߚ႐ว߽ޔੱりޔἫἴޔ␠ળ⊛៊ኂߥߤࠍ↢ߓߐ ߖߥࠃ߁߅ቴ᭽ߩ⽿છߦ߅ߡ౬㐳⸳⸘ޔᑧኻ╷⸳⸘ޔ⺋േ㒐ᱛ⸳⸘╬ߩో⸳⸘߅ࠃ߮ࠛࠫࡦࠣಣℂ╬ޔᯏེ߹ߚߪࠪࠬ࠹ࡓߣߒߡߩ⩄⸽ࠍ߅㗿 ߚߒ߹ߔޕ․ߦޔࡑࠗࠦࡦ࠰ࡈ࠻࠙ࠚࠕߪޔන⁛ߢߩᬌ⸽ߪ࿎㔍ߥߚޔ߅ቴ᭽߇ㅧߐࠇߚᦨ⚳ߩᯏེࠪࠬ࠹ࡓߣߒߡߩోᬌ⸽ࠍ߅㗿ߚߒ߹ߔޕ 10. ᒰ␠ຠߩⅣႺㆡวᕈ╬ޔ⚦ߦߟ߈߹ߒߡߪຠߦᔅߕᒰ␠༡ᬺ⓹ญ߹ߢ߅วߖߊߛߐޕߏ↪ߦ㓙ߒߡߪޔ․ቯߩ‛⾰ߩ㨯↪ࠍⷙߔࠆRoHS ᜰ╬ޔㆡ↪ߐࠇࠆⅣႺ㑐ㅪᴺࠍචಽ⺞ᩏߩ߁߃ޔ߆߆ࠆᴺߦㆡวߔࠆࠃ߁ߏ↪ߊߛߐޕ߅ቴ᭽߇߆߆ࠆᴺࠍㆩߒߥߎߣߦࠃࠅ↢ߓߚ៊ኂߦ㑐ߒ ߡޔᒰ␠ߪޔ৻ಾߘߩ⽿છࠍ⽶߹ߖࠎޕ 11. ᧄ⾗ᢱߩోㇱ߹ߚߪ৻ㇱࠍᒰ␠ߩᢥᦠߦࠃࠆ೨ߩᛚ⻌ࠍᓧࠆߎߣߥߊォタ߹ߚߪⶄߔࠆߎߣࠍ࿕ߊ߅ᢿࠅߚߒ߹ߔޕ 12. ᧄ⾗ᢱߦ㑐ߔࠆ⚦ߦߟߡߩ߅วࠊߖߘߩઁ߅᳇ઃ߈ߩὐ╬߇ߏߑ߹ߒߚࠄᒰ␠༡ᬺ⓹ญ߹ߢߏᾖળߊߛߐޕ ᵈ1. ᧄ⾗ᢱߦ߅ߡ↪ߐࠇߡࠆޟᒰ␠ޠߣߪޔ࡞ࡀࠨࠬ ࠛࠢ࠻ࡠ࠾ࠢࠬᩣᑼળ␠߅ࠃ߮࡞ࡀࠨࠬ ࠛࠢ࠻ࡠ࠾ࠢࠬᩣᑼળ␠߇ߘߩ✚ᩣਥߩ⼏ᮭߩㆊඨᢙࠍ ⋥ធ߹ߚߪ㑆ធߦߔࠆળ␠ࠍ߹ߔޕ ᵈ2. ᧄ⾗ᢱߦ߅ߡ↪ߐࠇߡࠆޟᒰ␠ຠޠߣߪޔᵈ1ߦ߅ߡቯ⟵ߐࠇߚᒰ␠ߩ㐿⊒ޔㅧຠࠍ߹ߔޕ