Self-programming the flash, Atmega128(l) – Rainbow Electronics ATmega128L User Manual

Page 272

Advertising
background image

272

ATmega128(L)

2467B–09/01

Figure 134. Addressing the Flash During SPM

(1)

Note:

1. The different variables used in

Figure 134 are listed in Table 114 on page 277.

Self-Programming the
Flash

The program memory is updated in a page by page fashion. Before programming a
page with the data stored in the temporary page buffer, the page must be erased. The
temporary page buffer is filled one word at a time using SPM and the buffer can be filled
either before the page erase command or between a page erase and a page write
operation:

Alternative 1, fill the buffer before a page erase

Fill temporary page buffer

Perform a page erase

Perform a page write

Alternative 2, fill the buffer after page erase

Perform a page erase

Fill temporary page buffer

Perform a page write

If only a part of the page needs to be changed, the rest of the page must be stored (for
example in the temporary page buffer) before the erase, and then be rewritten. When
using alternative 1, the boot loader provides an effective read-modify-write feature which
allows the user software to first read the page, do the necessary changes, and then
write back the modified data. If alternative 2 is used, it is not possible to read the old
data while loading since the page is already erased. The temporary page buffer can be
accessed in a random sequence. It is essential that the page address used in both the
page erase and page write operation is addressing the same page. See

“Simple Assem-

bly Code Example for a Boot Loader” on page 275 for an assembly code example.

PROGRAM MEMORY

0

1

15

Z - REGISTER

BIT

0

ZPAGEMSB

WORD ADDRESS
WITHIN A PAGE

PAGE ADDRESS
WITHIN THE FLASH

ZPCMSB

INSTRUCTION WORD

PAGE

PCWORD[PAGEMSB:0]:

00

01

02

PAGEEND

PAGE

PCWORD

PCPAGE

PCMSB

PAGEMSB

PROGRAM
COUNTER

Advertising