Ethernut Home Hardware Firmware Tools Download Community
Search | Legals | Deutsch

Ethernut 2.1 Memory Map

The ATmega128 used on Ethernut 2.1 is a member of the AVR family of microcontrollers, which are Harvard Architecture Machine, where program code and data are stored separately.

Data Memory

Address Description
0x0000 - 0x001F CPU Registers (Note 1)
0x0020 - 0x005F I/O Registers (Note 1)
0x0060 - 0x00FF Extended I/O Registers (Note 1)
0x0100 - 0x10FF Fast Internal RAM, no wait states required
0x1100 - 0x7FFF Fixed External RAM
0x8000 - 0xBFFF Banked External RAM, 30 pages, 16k each
0xC000 - 0xCFFF Ethernet Controller Registers (Note 2)
0xD000 - 0xDFFF Unused, Available for Custom Extensions (Note 3)
0xE000 - 0xEFFF Unused, Available for Custom Extensions (Note 4)
0xFF00 - 0xFFFF Bank Select Register (Note 5)

Note 1: See ATmega128 datasheet
Note 2: See LAN91C111 datasheet. Not fully decoded, registers are mirrored.
Note 3: Recommended for fast access.
Note 4: Recommended for slow peripherals.
Note 5: Writing bank number to (0xFF00 + bank number) selects the bank at 0x8000. Example: outr(0xFF02, 0x02) enables the third memory bank.

Program Memory

Word Address Description
0x0000 - 0x0045 Vector Table
0x0046 - 0xEFFF Initialization, RTOS and Application Sections
0xF000 - 0xF7FF Bootloader Section, if BOOTSZ = 00b (Note 1)
0xF800 - 0xFBFF Bootloader Section, if BOOTSZ = 01b (Note 1)
0xFC00 - 0xFDFF Bootloader Section, if BOOTSZ = 10b (Note 1)
0xFE00 - 0xF7FF Bootloader Section, if BOOTSZ = 11b (Note 1)

Note 1: Available for applications if not used by bootloader.