NRWW Flash¶
Atmegas have a seperate flash region called NRWW. This area is rather small (2 to 8 KB depending on the controller type) and has some special features. It is primarily intended for boot loaders which can reprogram the RWW flash without a special programmer. Amforth uses this feature to do the dictionary management. Furthermore the NRWW section cannot self reprogram itself. Since this space is not available for user code amforth places as much as possible of its predefined words there.
If an application needs code space in the NRWW section for some tasks, amforth has to leave room for it. This can be done by setting the Assembler variable AMFORTH_RO_SEG to a value higher than NRWW_START_ADDR (the default). This leaves the flash between NRWW_START_ADDR and AMFORTH_RO_SEG free for other uses. The build process restructures the word placement accordingly.
Internally the files dict/nrww.inc
and dict/rww.inc
use predefined dictionary file sets to include the essential words
in a way to maximize the NRWW utilization.