Note that the user software can never read any code that is located inside the RWW section during a boot loader software
operation. The syntax “Read-while-write section” refers to which section that is being programmed (erased or written), not
which section that actually is being read during a boot loader software update.
24.3.1 RWW – Read-while-write Section
If a boot loader software update is programming a page inside the RWW section, it is possible to read code from the flash,
but only code that is located in the NRWW section. during an on-going programming, the software must ensure that the
RWW section never is being read. If the user software is trying to read code that is located inside the RWW section (i.e., by
a call/jmp/lpm or an interrupt) during programming, the software might end up in an unknown state. To avoid this, the
interrupts should either be disabled or moved to the boot loader section. The boot loader section is always located in the
NRWW section. The RWW section busy bit (RWWSB) in the store program memory control and status register (SPMCSR)
will be read as logical one as long as the RWW section is blocked for reading. After a programming is completed, the
RWWSB must be cleared by software before reading code located in the RWW section. See Section 24.5.1 “Store Program
Memory Control and Status Register – SPMCSR” on page 244 for details on how to clear RWWSB.
24.3.2 NRWW – No Read-while-write Section
The code located in the NRWW section can be read when the boot loader software is updating a page in the RWW section.
When the boot loader code updates the NRWW section, the CPU is halted during the entire page erase or page write
operation.
Table 24-1. Read-while-write Features
Which Section does the Z-pointer Address Which Section Can be Read
Is the CPU
Halted?
Read-while-write
Supported?
during the Programming?
during Programming?
NRWW section
None
RWW section
No
Yes
No
NRWW section
Yes
Figure 24-1. Read-while-write versus No Read-while-write
Read-While-Write
(RWW) Section
Z-pointer
addresses NRWW
section
Z-pointer
addresses RWW
section
No Read-While-Write
(RWW) Section
CPU is halted during
the operation
Code located in
NRWW section
can be read during
the operation
242
ATmega16/32/64/M1/C1 [DATASHEET]
7647O–AVR–01/15