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