While I understand there is some general disagreement regarding whether addresses for segments should be addressed by byte or by word, there seems to be some inconsistency even within AVR Studio 5.
In the "Memory" settings for a project, one sees the "Flash Size" listed for a given part. For example, the "Part Information" for the ATxmega256A3 shows "Flash Size: 0x42000". This is a size in bytes (256 KB application + 8 KB boot), so one might assume that the address one would be entering in the "Memory Segments" section below would be in bytes. For example, to target the boot loader, one might think it makes sense to define a flash area with name ".text" and address "0x40000", correct?
However, if one then watches what is actually passed to AVR-GCC during linking, one sees "-Wl,-section-start=.text=0x80000". That is, AVR Studio 5 has assumed that the user specified value was in words, so it's being doubled to provide a byte address to GCC. Of course, this value is now twice what it should be (and thus wrong).
Based on this, it seems as if one has to enter "0x20000" (for 256KB in words) as the "Address" under "Memory Segments", even though all the size values there are in bytes. This seems inconsistent. At a minimum, there should be a tooltip or some help text which clarifies that the value being entered is in 16-bit words. The help text currently does not provide any guidance, and there's no indication that this value will be doubled before being passed to GCC.
Am I mistaken here, or do others agree that this currently seems to be confusing or misleading?