• 検索結果がありません。

フラッシュメモリ領域へのアクセス

ドキュメント内 TMP86FH47BUG (ページ 168-173)

第 9 章 8 ビットタイマカウンタ(TC3, TC4)

14.4 フラッシュメモリ領域へのアクセス

フラッシュメモリの書き込み

/

消去

/Security Program

設定時は、フラッシュメモリのすべての領域に対し てリード、プログラムフェッチを実行することができません。従って、フラッシュメモリ領域に対して これらの操作を行うときは

BOOTROM

領域もしくは

RAM

領域上の制御プログラムによってフラッシュ メモリをアクセスする必要があります

(

フラッシュメモリのプログラムで直接フラッシュメモリを書き換 えることはできません

)

。これらの領域上で制御プログラムを実行するにはシリアル

PROM

モード、また は

MCU

モードを使用します。

1)

フラッシュメモリ領域の書き込み、読み出しは

1

バイト単位、消去は全領域または

4K

バイト単位で実行可能で す。読み出しについては

1

つの転送命令で実行可能ですが、書き込み/消去については、コマンドシーケンス方 式を使用していますので、数個の転送命令を実行する必要があります。

2)

既にデータ(FFHを含む)が書き込まれたフラッシュのアドレスに対し、再度データの書き込みを行う場合、セク タイレースまたはチップイレースによって、かならずそのアドレスのデータを消去した後に書込みを実行して下 さい。

14.4.1 シリアル PROM モードのフラッシュメモリ制御

シリアル

PROM

モードは、BOOTROM上に予め用意された制御プログラムによってフラッシュメ モリをアクセスするモードです。フラッシュメモリのアクセスに関するほとんどの動作は、シリアル インタフェース

(UART)

の通信データによって簡易的に制御可能ですので、ユーザは制御レジスタの 操作を特に意識する必要はありません。シリアル

PROM

モードの詳細については「シリアル

PROM

モード」の章を参照してください。

シリアル

PROM

モードで任意の周辺機能を使用してフラッシュメモリをアクセスする場合は、RAM ローダコマンドを利用して、RAM上で制御プログラムを実行する必要があります。この場合の操作 は、「

14.4.1.1

シリアル

PROM

モードの

RAM

ローダモードで

RAM

領域に制御プログラムを展開して 書き込む例」を参照してください。

14.4.1.1

シリアル

PROM

モードの

RAM

ローダモードで

RAM

領域に制御プログラムを展開して書き込

む例

(1 ~ 2

BOOTROM

による制御、3 ~ 9は

RAM

に展開されたプログラムによる制御となりま

)

1. RAM

ローダで書き込み制御プログラムを

RAM

に転送します。

2. RAM

領域にジャンプします。

3.

割り込みマスタ許可フラグを禁止 (DI) にします。(IMF← “0”)

4. FLSCR<FLSMD>を “0011B”

に設定します。

(

コマンドシーケンスの実行を許可します

) 5.

消去コマンドシーケンスを実行します。

6.

フラッシュメモリの同一アドレスに対して

2

回連続でリード命令を実行します。

(読み出した値が同一になるまで 6.を繰り返します)

7.

書き込みコマンドシーケンスを実行します。

8.

フラッシュメモリの同一アドレスに対して

2

回連続でリード命令を実行します。

(

読み出した値が同一になるまで

8.

を繰り返します

) 9. FLSCR<FLSMD>を “1100B” に設定します 。

(コマンドシーケンスの実行を禁止します)

TMP86FH47BUG

14

フラッシュメモリ

14.4

フラッシュメモリ領域へのアクセス

Page 150

1) RAM

領域からフラッシュメモリに書き込みを行うときは、事前に割り込みマスタ許可フラグ (IMF)を

“0” に設定し、割り込みを禁止にしてください。通常は

RAM

に展開するプログラムの先頭で

DI

命令を 実行してください。

2) RAM

ローダを使用する場合は、BOOTROMによってウォッチドッグタイマは禁止に設定されています

ので、RAMローダプログラムによってウォッチドッグタイマを禁止に設定する必要はありません。

(プログラム例)チップイレースを実行した後、F000Hに

3FH

のデータを書き込む (RAMに展開するプログ ラム

)

DI ; 割り込みを禁止 (IMF←"0")

LD (FLSCR),00111000B ; コマンドシーケンスの実行を許可

LD IX,0F555H

LD IY,0FAAAH

LD HL,0F000H

; ####フラッシュメモリチップイレース処理 ####

LD (IX),0AAH ; 1st Bus Write Cycle

LD (IY),55H ; 2nd Bus Write Cycle

LD (IX),80H ; 3rd Bus Write Cycle

LD (IX),0AAH ; 4th Bus Write Cycle

LD (IY),55H ; 5th Bus Write Cycle

LD (IX),10H ; 6th Bus Write Cycle

sLOOP1: LD W,(HL)

CMP W,(HL)

JR NZ,sLOOP1 ;同一の値が読み出されるまでループする

; #### フラッシュメモリ書き込み処理 ####

LD (IX),0AAH ; 1st Bus Write Cycle

LD (IY),55H ; 2nd Bus Write Cycle

LD (IX),0A0H ; 3rd Bus Write Cycle

LD (HL),3FH ; 4th Bus Write Cycle, (F000H)=3FH

sLOOP2: LD W,(HL)

CMP W,(HL)

JR NZ,sLOOP2 ;同一の値が読み出されるまでループする

LD (FLSCR),11001000B ; コマンドシーケンスの実行を禁止

sLOOP3: JP sLOOP3

14.4.2 MCU モードのフラッシュメモリ制御

MCU

モードの場合、RAM上で制御プログラムを実行することによってフラッシュメモリの書き 込みを行うことができます。

RAM

上で実行する制御プログラムは、予めフラッシュメモリ内にコピ ーを用意しておくか、通信端子などを利用して外部から取り込む必要があります。

以下に

MCU

モードで

RAM

上の制御プログラムを実行する方法

(

)

を示します。

14.4.2.1 MCU

モードから

RAM

領域に制御プログラムを展開して書き込む例

(1 ~ 2

はフラッシュメモリ上のプログラムによる制御、3 ~ 11は

RAM

に展開されたプログラム

による制御となります

)

1.

書き込み制御プログラムを

RAM

に転送します。

2. RAM

領域にジャンプします。

3.

割り込みマスタ許可フラグを禁止 (DI) にします(IMF← “0”)。

4.

ウォッチドッグタイマを使用している場合は禁止に設定します。

5. FLSCR<FLSMD>を “0011B” に設定します。

(

コマンドシーケンスの実行を許可します

) 6.

消去コマンドシーケンスを実行します。

7.

フラッシュメモリの同一アドレスに対して

2

回連続でリード命令を実行します。

(

読み出した値が同一になるまで

7.

を繰り返します

) 8.

書き込みコマンドシーケンスを実行します。

9.

フラッシュメモリの同一アドレスに対して

2

回連続でリード命令を実行します。

(読み出した値が同一になるまで 9.を繰り返します)

10. FLSCR<FLSMD>

“1100B”

に設定します。

(

コマンドシーケンスの実行を禁止します

) 11.

フラッシュ領域にジャンプします。

1) RAM

領域からフラッシュメモリに書き込みを行うときは、事前に割り込みマスタ許可フラグ (IMF)を“0” に設

定し、割り込みを禁止にしてください。通常は

RAM

に展開するプログラムの先頭で

DI

命令を実行してくださ い。

2)

フラッシュメモリに書き込みを行うときにノンマスカブル割り込みを意図的に使用しないでください (ウォッチ ドッグタイマを使用している場合は禁止にしてください)。書き込み中にノンマスカブル割り込みが発生する と、フラッシュメモリ (割り込みベクタ) から想定しないデータ値が読み込まれるためマイコンが誤動作する恐 れがあります。

TMP86FH47BUG

14

フラッシュメモリ

14.4

フラッシュメモリ領域へのアクセス

Page 152

(プログラム例)E000H~EFFFHのセクタイレースを実行した後、E000Hに

3FH

のデータを書き込む (RAM に展開するプログラム

)

DI ; 割り込みを禁止 (IMF←"0")

LD (WDTCR2),4EH ; WDT 2進カウンタのクリア

LDW (WDTCR1),0B101H ; WDTの禁止

LD (FLSCR),00111000B ;コマンドシーケンスの実行を許可

LD IX,0F555H

LD IY,0FAAAH

LD HL,0E000H

; #### フラッシュメモリセクタイレース処理 ####

LD (IX),0AAH ; 1st Bus Write Cycle

LD (IY),55H ; 2nd Bus Write Cycle

LD (IX),80H ; 3rd Bus Write Cycle

LD (IX),0AAH ; 4th Bus Write Cycle

LD (IY),55H ; 5th Bus Write Cycle

LD (HL),30H ; 6th Bus Write Cycle

sLOOP1: LD W,(HL)

CMP W,(HL)

JR NZ,sLOOP1 ; 同一の値が読み出されるまでループする

; #### フラッシュメモリ書き込み処理 ####

LD (IX),0AAH ; 1st Bus Write Cycle

LD (IY),55H ; 2nd Bus Write Cycle

LD (IX),0A0H ; 3rd Bus Write Cycle

LD (HL),3FH ; 4th Bus Write Cycle, (E000H)=3FH

sLOOP2: LD W,(HL)

CMP W,(HL)

JR NZ,sLOOP2 ; 同一の値が読み出されるまでループする

LD (FLSCR),11001000B ; コマンドシーケンスの実行を禁止

JP XXXXH ; フラッシュ領域にジャンプします。

(プログラム例)F000Hからデータをリードして

RAM

98H

に格納する

LD A,(0F000H) ; F000Hからデータを読み出す

LD (98H),A ; 98Hにデータを格納する

TMP86FH47BUG

14

フラッシュメモリ

14.4

フラッシュメモリ領域へのアクセス

Page 154

第 15 章 シリアル PROM モード

15.1 概要

TMP86FH47BUG

はフラッシュメモリへのプログラミング用に

2K

バイトの

BOOTROM(MASK ROM)を

内蔵しています。

BOOTROM

は、シリアル

PROM

モードで有効になります。シリアル

PROM

モードは、

TEST

端子と

BOOT

端子、

RESET

端子で制御され、

UART

を通して通信します。

シリアル

PROM

モードには、フラッシュメモリ書き込み、

RAM

ローダ、フラッシュメモリ

SUM

出 力、製品識別コード出力、フラッシュメモリステータス出力、フラッシュメモリ消去、フラッシュメモ

Security Program

設定の

7

種類のモードがあります。シリアル

PROM

モードでは、メモリのアドレス割

り当てが

MCU

モードと異なります。図

15-1

にシリアル

PROM

モードでのメモリアドレスマップを示し ます。

15-1 シリアル PROM

モード動作範囲

項目 Min Max 単位

電源電圧 4.5 5.5 V

高周波周波数 2 16 MHz

注) 上記の高周波周波数の範囲であってもサポートされない周波数があります。詳細については表

15-5

を参照くださ い。

ドキュメント内 TMP86FH47BUG (ページ 168-173)