Over the weekend I tried to track down what I thought was a problem with the optimiser in gcc 3.3 vs the one in gcc 2.95. I started getting inconsistent test results and after confusing myself and then sorting things out I've come to the conclusion that the optimiser isn't to blame - at least not directly. What does seem to be the problem is that the compiler is putting variables that are explicitly initialised to zero into the BSS segment, presumably because it assumes this segment gets zeroed before execution starts. However this doesn't seem to be true in our case. So, can someone explain how the BSS gets zeroed in the bootldr environment on balloon? I found some code for it (zbss) in bootldr.c but it doesn't get compiled. I also had a look through the various bits of assembler code, but I don't know ARM assembler and couldn't spot anything obvious. When I jflash the code into the balloon it appears to program a lot of zero's at the end but this is going into Flash, can someone point me to the code that copies the bootldr into RAM - maybe it's not copying enough (or any) of BSS? regards, Colin -- Colin Tuckley | colin@tuckley.org | PGP/GnuPG Key Id +44(0)1903 236872 | +44(0)7799 143369 | 0x1B3045CE Common Sense is the collection of prejudices acquired by age eighteen. - A. Einstein