Memory Map

The ATXMega256A3U PDI controller has the following memory map:

+==============+ <- 0x00000000
|   Processor  |
|  Controller  |
+--------------+ <- 0x00000020
|  Breakpoint  |
|     Unit     |
+--------------+ <- 0x00000060
|              |
+--------------+ <- 0x00000100
|  (reserved)  |
+==============+ <- 0x00800000
| Application  |
|    Section   |
+--------------+ <- 0x00840000
|  Bootloader  |
|    Section   |
+==============+ <- 0x00842000
|  (reserved)  |
+==============+ <- 0x008C0000
|    EEPROM    |
+==============+ <- 0x008C1000
|  (reserved)  |
+==============+ <- 0x008E0200
|  Signature   | Two flash pages
|      Row     | (256 * 2)
+==============+ <- 0x008E0600
|  (reserved)  |
+==============+ <- 0x008F0020
|    Fuses     |
+==============+ <- 0x008F0026
|  (reserved)  |
+==============+ <- 0x01000000
|  Data Memory |
| (Mapped IO + |
(     SRAM)    |
+==============+ <- 0x02000000

Processor Controller

The processor controller has the following memory layout:

+=========================+
| Multi-function register | +0x0
+-------------------------+
| Program Counter  (next) | +0x4
+-------------------------+
|      Debug Control      | +0xa
+-------------------------+
|         I/O FIFO        | +0xc
+-------------------------+
|            ⋮           |
+=========================+

Breakpoint Unit

The breakpoint unit has the following memory layout:

+===================+
|  break address 1  | +0x00
+-------------------+
|  break address 2  | +0x04
+-------------------+
| breakpoint  count | +0x08
+-------------------+
|         ⋮         |
+-------------------+
|        ???        | +0x20
+-------------------+
|        ???        | +0x24
+-------------------+
|        ???        | +0x28
+-------------------+
|         ⋮         |
+-------------------+
|        ???        | +0x30
+===================+

Data Memory

The data memory area maps the main chip memory (MMIO + SRAM) to the PDI address space. This has the following layout:

+===============+ <- 0x01000000
|   GPIO Regs   |
+---------------+ <- 0x01000010
|    VPORT 0    |
+---------------+ <- 0x01000014
|    VPORT 1    |
+---------------+ <- 0x01000018
|    VPORT 2    |
+---------------+ <- 0x0100001C
|    VPORT 3    |
+---------------+ <- 0x01000030
|      CPU      |
+---------------+ <- 0x01000040
|      CLK      |
+---------------+ <- 0x01000048
|     SLEEP     |
+---------------+ <- 0x01000050
|      OSC      |
+---------------+ <- 0x01000060
|   DFLLRC32M   |
+---------------+ <- 0x01000068
|   DFLLRC2M    |
+---------------+ <- 0x01000070
|      PR       |
+---------------+ <- 0x01000078
|      RST      |
+---------------+ <- 0x01000080
|      WDT      |
+---------------+ <- 0x01000090
|      MCU      |
+---------------+ <- 0x010000A0
|     PMIC      |
+---------------+ <- 0x010000B0
|    PORTTCFG   |
+---------------+ <- 0x010000C0
|      AES      |
+---------------+ <- 0x010000D0
|      CRC      |
+---------------+ <- 0x010000F0
|     VBAT      |
+---------------+ <- 0x01000100
|      DMA      |
+---------------+ <- 0x01000180
|     EVSYS     |
+---------------+ <- 0x010001C0
|      NVM      |
+---------------+ <- 0x01000200
|     ADC A     |
+---------------+ <- 0x01000240
|     ADC B     |
+---------------+ <- 0x01000300
|     DAC A     |
+---------------+ <- 0x01000320
|     DAC B     |
+---------------+ <- 0x01000380
|      ACA      |
+---------------+ <- 0x01000390
|      ACB      |
+---------------+ <- 0x01000400
|      RTC      |
+---------------+ <- 0x01000420
|     RTC32     |
+---------------+ <- 0x01000440
|      EBI      |
+---------------+ <- 0x01000480
|     TWI C     |
+---------------+ <- 0x01000490
|     TWI D     |
+---------------+ <- 0x010004A0
|     TWI E     |
+---------------+ <- 0x010004B0
|     TWI F     |
+---------------+ <- 0x010004C0
|      USB      |
+---------------+ <- 0x01000600
|     PORTA     |
+---------------+ <- 0x01000620
|     PORTB     |
+---------------+ <- 0x01000640
|     PORTC     |
+---------------+ <- 0x01000660
|     PORTD     |
+---------------+ <- 0x01000680
|     PORTE     |
+---------------+ <- 0x010006A0
|     PORTF     |
+---------------+ <- 0x010006E0
|     PORTH     |
+---------------+ <- 0x01000700
|     PORTJ     |
+---------------+ <- 0x01000720
|     PORTK     |
+---------------+ <- 0x010007C0
|     PORTQ     |
+---------------+ <- 0x010007E0
|     PORTR     |
+---------------+ <- 0x01000800
|     TCC 0     |
+---------------+ <- 0x01000840
|     TCC 1     |
+---------------+ <- 0x01000880
|     AWEXC     |
+---------------+ <- 0x01000890
|    HIRES C    |
+---------------+ <- 0x010008A0
|    USARTC0    |
+---------------+ <- 0x010008B0
|    USARTC1    |
+---------------+ <- 0x010008C0
|     SPI C     |
+---------------+ <- 0x010008F8
|     IRCOM     |
+---------------+ <- 0x01000900
|     TC D0     |
+---------------+ <- 0x01000940
|     TC D1     |
+---------------+ <- 0x01000980
|     AWEXD     |
+---------------+ <- 0x01000990
|    HIRES D    |
+---------------+ <- 0x010009A0
|    USARTD0    |
+---------------+ <- 0x010009B0
|    USARTD1    |
+---------------+ <- 0x010009C0
|     SPI D     |
+---------------+ <- 0x01000A00
|     TC E0     |
+---------------+ <- 0x01000A40
|     TC E1     |
+---------------+ <- 0x01000A80
|     AWEXE     |
+---------------+ <- 0x01000A90
|    HIRES E    |
+---------------+ <- 0x01000AA0
|    USARTE0    |
+---------------+ <- 0x01000AB0
|    USARTE1    |
+---------------+ <- 0x01000AC0
|     SPI E     |
+---------------+ <- 0x01000B00
|     TC F0     |
+---------------+ <- 0x01000B40
|     TC F1     |
+---------------+ <- 0x01000B80
|     AWEXF     |
+---------------+ <- 0x01000B90
|    HIRES F    |
+---------------+ <- 0x01000BA0
|    USARTF0    |
+---------------+ <- 0x01000BB0
|    USARTF1    |
+---------------+ <- 0x01000BC0
|     SPI F     |
+===============+ <- 0x01001000
|    EEPROM     |
+===============+ <- 0x01002000
| Internal SRAM |
+===============+ <- 0x01002800
| External  RAM |
+===============+ <- 0x02000000