ARM CM3 printf() problem
Freddie Chopin
freddie_chopin@op.pl
Thu Apr 4 07:39:00 GMT 2013
General advice regarding printf():
1. Make sure that your stack is double-word aligned - that is 8-bytes
2. Make sure you have A LOT of stack, printf can use up to 1kB of stack
- really! If you don't plan to use floating point you can cut that down
by using integer-only version iprintf().
Your problem is caused by wrong linking - notice that the problematic
instruction is "blx <even-address>", so it tries to switch to ARM mode,
which does not exist for Cortex-M3. First of all you need to use gcc (or
g++) for linking, not ld directly - this way it's easier to deal with
multilib. Second thing is that you need to have proper multilibs,
compiled for cortex-m3 in thumb mode...
4\/3!!
More information about the Newlib
mailing list