ARM CM3 printf() problem
Weston Schmidt
weston_schmidt@alumni.purdue.edu
Thu Apr 4 08:20:00 GMT 2013
Thank you very much - it turns out I hadn't build gcc with multilibs
enabled. I added that option, rebuilt gcc and it works perfectly.
--Wes
On Thu, Apr 4, 2013 at 12:39 AM, Freddie Chopin <freddie_chopin@op.pl> wrote:
> 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