This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ARM CM3 printf() problem


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!!


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]