i did some poking around in the linker script, objdumps and flash module for the first time in a few years. posted some observations in the other thread. deleted them there and reiterating here in case its helpful, or anyone can clarify / point out errors.
running, avr32-size,
my understanding * the .text section is the raw code size, .data section includes constants in flash, and the .dec and .hex outputs are two different representations of the final amount in flash after optimization. [is this true?] right now that number is
0x66be0.
(updates for accuracy)
the total size for the ucb0512 is (as the name implies) 0x80000 - you can see this in the linker script. (libavr32/src/link_uc3b0512.lds)
looks like the output of avr32-size includes stuff like the scene storage struct that is placed in nvram with a gcc attribute. (i guess
increasing the scene storage too much gives you a link error:
avr32/bin/ld: address 0x8009db02 of teletype.elf section `.flash_nvram' is not within region `FLASH'
that address 0x8009db02 is greater than 0x8000000 (start of flash) + 0x80000 (size of flash). we get this nice error because we used the nvram attribute and let the linker figure things out, instead of using the flash controller directly.
its possible that there are other “loopholes” at work that i’m missing. but i think we can trust the avr32-size output, which means there is still ~100k of flash available as of now (commit #8285656 on burnsauce’s fork.) i was wrong, that total includes .bss and .data, which aren’t in flash. so i think we actually have ~128K.