In the coarse of building up the CMSIS libraries, I ran into a known bug in the
GCC compiler.
Depending on who knows what, the compiler will try to create an eh_frame which
should actually be discarded. This can cause errors in the download and often
odd bugs in the code, as its inserting data into the code space.
There is a cure, it requires adding a line to the linker script. These scripts
are in the libarm7 directory. This will be part of the next release, but in the
meantime you can add this line to the *.ld file
/DISCARD/ : { *(.eh_frame) } /* seems to be a known bug in gcc */