00001
00038 #ifndef CHIP_MEMORY_H_INCLUDED
00039
00040 #ifndef __ASSEMBLY__
00041
00042 #define CHIP_MEMORY_H_INCLUDED
00043
00044 #include <memory/flash/flash_xmega.h>
00045 #include <memory/eeprom/eeprom_xmega.h>
00046 #include <memory/fuses/fuses_xmega.h>
00047 #include <memory/sram/sram_xmega.h>
00048 #include <memory/lockbits/lockbits_xmega.h>
00049 #include <memory/user-signature/user-signature_xmega.h>
00050 #include <memory/common/memory_common_xmega.h>
00051 #include <io.h>
00052 #include <types.h>
00053
00054 #endif
00055
00056 #include <chip/memory-map.h>
00057
00058
00059
00060 #define NVM_ADDR0 0x00
00061 #define NVM_ADDR1 0x01
00062 #define NVM_ADDR2 0x02
00063 #define NVM_DATA0 0x04
00064 #define NVM_DATA1 0x05
00065 #define NVM_DATA2 0x06
00066 #define NVM_CMD 0x0A
00067 #define NVM_CTRLA 0x0B
00068 #define NVM_CTRLB 0x0C
00069 #define NVM_INTCTRL 0x0D
00070 #define NVM_STATUS 0x0F
00071 #define NVM_LOCKBITS 0x10
00072
00073
00074 #define NVM_CMD_NO_OPERATION 0x00
00075 #define NVM_CMD_LOAD_FLASH_BUFFER 0x23
00076 #define NVM_CMD_ERASE_FLASH_PAGE 0x2B
00077 #define NVM_CMD_WRITE_FLASH_PAGE 0x2E
00078 #define NVM_CMD_ERASE_APP_PAGE 0x22
00079 #define NVM_CMD_WRITE_APP_PAGE 0x24
00080 #define NVM_CMD_ERASE_WRITE_APP_PAGE 0x25
00081 #define NVM_CMD_ERASE_APP 0x20
00082
00083 #define NVM_CMD_READ_EEPROM 0x06
00084 #define NVM_CMD_ERASE_EEPROM 0x30
00085 #define NVM_CMD_WRITE_EEPROM_PAGE 0x34
00086 #define NVM_CMD_ERASE_EEPROM_PAGE 0x32
00087 #define NVM_CMD_LOAD_EEPROM_BUFFER 0x33
00088 #define NVM_CMD_ERASE_EEPROM_BUFFER 0x36
00089 #define NVM_CMD_ERASE_WRITE_EEPROM_PAGE 0x35
00090
00091 #define NVM_CMD_READ_FUSES 0x07
00092 #define NVM_CMD_WRITE_LOCK_BITS 0x08
00093
00094 #define NVM_CMD_READ_USER_SIG_ROW 0x01
00095 #define NVM_CMD_WRITE_USER_SIG_ROW 0x1A
00096 #define NVM_CMD_ERASE_USER_SIG_ROW 0x18
00097
00098
00099 #define NVM_CTRLA_CMDEX 0x01
00100
00101
00102 #define NVM_CTRLB_EEMAPEN 0x08
00103
00104
00105 #define NVM_STATUS_NVMBUSY 0x80
00106 #define NVM_STATUS_EELOAD 0x02
00107
00111 #define nvm_write_reg(reg, value) \
00112 mmio_write8((void *) (NVM_CONTROLLER_BASE + NVM_##reg), value)
00113
00116 #define nvm_read_reg(reg) \
00117 mmio_read8((void *)(NVM_CONTROLLER_BASE + NVM_##reg))
00118
00119 #endif