mirror of
https://github.com/mariusgreuel/avrdude.git
synced 2025-12-17 11:04:16 +00:00
bug #28744: Can't load bootloader to xmega128a1 (part 2, fix for
firmware >= V7.x) * jtagmkII.c: Add firmware-version dependent handling of Xmega parameters. V7.x firmware expects the NVM offsets being specified through the Xmega parameters command, but left out as part of the memory address itself. * jtagmkII_private.h: Add CMND_SET_XMEGA_PARAMS, and struct xmega_device_desc. * config_gram.y: Add mcu_base keyword. * avrpart.h: (Dito.) * lexer.l: (Dito.) * avrdude.conf.in (.xmega): add mcu_base, and data memory segment. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1078 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
@@ -111,6 +111,7 @@
|
||||
#define CMND_WRITE_MEMORY32 0x2D
|
||||
#define CMND_ISP_PACKET 0x2F
|
||||
#define CMND_XMEGA_ERASE 0x34
|
||||
#define CMND_SET_XMEGA_PARAMS 0x36 // undocumented in AVR067
|
||||
|
||||
|
||||
/* ICE responses */
|
||||
@@ -355,6 +356,27 @@ struct device_descriptor
|
||||
/* new as of early 2005, firmware 4.x */
|
||||
unsigned char EECRAddress[2]; /* EECR memory-mapped IO address */
|
||||
};
|
||||
|
||||
/* New Xmega device descriptor, for firmware version 7 and above */
|
||||
struct xmega_device_desc {
|
||||
unsigned char whatever[2]; // cannot guess; must be 0x0002
|
||||
unsigned char datalen; // length of the following data, = 47
|
||||
unsigned char nvm_app_offset[4]; // NVM offset for application flash
|
||||
unsigned char nvm_boot_offset[4]; // NVM offset for boot flash
|
||||
unsigned char nvm_eeprom_offset[4]; // NVM offset for EEPROM
|
||||
unsigned char nvm_fuse_offset[4]; // NVM offset for fuses
|
||||
unsigned char nvm_lock_offset[4]; // NVM offset for lock bits
|
||||
unsigned char nvm_user_sig_offset[4]; // NVM offset for user signature row
|
||||
unsigned char nvm_prod_sig_offset[4]; // NVM offset for production sign. row
|
||||
unsigned char nvm_data_offset[4]; // NVM offset for data memory (SRAM + IO)
|
||||
unsigned char app_size[4]; // size of application flash
|
||||
unsigned char boot_size[2]; // size of boot flash
|
||||
unsigned char flash_page_size[2]; // flash page size
|
||||
unsigned char eeprom_size[2]; // size of EEPROM
|
||||
unsigned char eeprom_page_size; // EEPROM page size
|
||||
unsigned char nvm_base_addr[2]; // IO space base address of NVM controller
|
||||
unsigned char mcu_base_addr[2]; // IO space base address of MCU control
|
||||
};
|
||||
#endif /* JTAGMKII_PRIVATE_EXPORTED */
|
||||
|
||||
/* return code from jtagmkII_getsync() to indicate a "graceful"
|
||||
|
||||
Reference in New Issue
Block a user