A few months back I moved my project over to studio 6 and used it for a while before getting frustrated it. I was forced to do this with a classic school boy error of upgrading the processor to the xmega128a1u without really looking in to the repercussions. I simply thought i was a drop in replacement with some nice extras. It turns out you can't use it with studio 4 (AAARRRRGRGGGHHHHH!).
The main problem for me (although not limited to) was the fact I could no longer debug my bootloader section code. Even though the memory locations were set as before in studio 4 it just ignored them and in fact didn't even compile the code for either toolchain (I went back to xmega128a1 for winavr to compare). So to get round this without losing a day or 2 programming time messing around I went back to studio 4 and just set the processor to the old one and being similar it just worked, I did have to program the fuses with studio 6 though. I thought the long term solution would either be to buy IAR Workbench or pull the processors off the boards and refit with the older part.
Now yesterday I noticed I was no longer getting program or data size output, it only became important as I changed a large section of code over the weekend and wanted to compare size. I think this was because when I removed studio 4 and then re installed I installed the wrong version (build 730) and it no longer natively works with WinAvr (AAARRRRGRGGGHHHHH!).
So I moved back to studio 6 to find the code size, (probably an easier way to do this) and still not able to debug bootloader memory code but I had a bit of spare time. I found that if I get the makefile from the AS4 project and compile the code with that in AS6 I now get the bootloader section code generated and can debug it!
So in summary, my questions are:
Is there a setting somewhere in the linker options I need to set to enable the automatically generated make file to get GCC to compile the code with my sections?
Should I be doing this a different way?
Am I barking up the wrong tree on this?
Why can I not just use this device with avr studio 4?
Why can I not use my new JTAGICE 3 programmers with avr studio 4?
Why can I not use my new JTAGICE 3 programmers with AS6 on my laptop but they work fine on my desktop PC?
Should I just bite the bullet and ditch Atmel for being absolute rotters and go for a nice looking cortex M4 device?
I should also note these are not the only defined sections of my code and they work fine in the program space.
I should also note that it looks like the sections are being passed to the linker in the command line.
I should also say that I wanted to make sure that a routine was placed at the bootloader reset address so without real knowledge I created several sections for the bootloader area, .BOOTLOADERMAIN=0x10000 (contains only the reset routine) .BOOT=0x10800 for the memory programming functions and .BOOTLOADER=0x10400 for the rest of the bootloader code. It probably isn't the correct way of doing it but has worked fine for the last couple of years, with AS4.