I'm trying to properly understand the way eeprom memory is presented to the application by the above stated uC.
At my current state of knowledge about xmega eeprom, I'm able to perform:
- write access through avrdude programming:
/usr/local/avr/bin//avrdude -p x256a3 -c jtag2 -P usb -C /usr/local/avr/etc/avrdude.conf -u -V -U eeprom:w:./image.bin:r
- read access through avrdude eeprom dump [works]:
/usr/local/avr/bin//avrdude -p x256a3 -c jtag2 -P usb -C /usr/local/avr/etc//avrdude.conf -u -V -U eeprom:r:./imagedump.bin:r
Now, once I've flashed an application (preserving the eeprom data), this last one needs to access the eeprom data in order to fetch its desired information.
I ve'read doc8077 where they state that eeprom resides at the starting address 0x8C000. Soon after, in doc8068 (section 7.4) they mention a 0x1000 offset that should be used to access the eeprom.
I tried reading from address 0x8C0000, 0x8C1000, 0x801000, and probably many others, but could not ever read the data that actually was in the eeprom.
Finally I came across this post https://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=85261 which really dazed and confused me.
By chance I tried to read at address 0x810000 (as was described in the post - and I supposed it was a typo in there -) and voilÃ I got my eeprom data back.
Can anyone explain me the way the eeprom memory is mapped in the xmega and gdb and jtagice and all the orchestra?
Thanks in advance and sorry for my scarce knowledge about the subject.