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: first post, perplexed by printf()


On 10/03/2014 05:42 AM, Dave McGuire wrote:
If I do printf("%d\n", 1); everything works fine.  If I do
printf("%d\n", 10);, my processor hangs.  (again with no debugging
support just yet, I don't know where)  In other words, as soon as I try
to format an integer with more than one digit, it hangs.  I can add
characters to the format string, and it works.  I've given it ever more
stack, no change. (I'm aware of printf()'s appetite for memory)

Before digging any further set stack to 4kB (or 2kB at least). Second thing - make sure your stack is 8-byte aligned (this shouldn't be a problem for printf()ing ints, but its better to be safe).

You could also try one of my example ARM projects, take the one for Cortex-M3 (like the one for STM32F4) and just do these two things: - disable any hardware-specific calls in main() - setting the PLL, GPIOs, ..., - adjust the sizes and addresses of memories in the linker script to match your chip (you can also increase the stack size).

Then download the "syscalls" package, drop the source file into the main folder of the example and at this point printf() MUST work. To make it actually print anything, you'd also need to add your "retargetting" code...

Did you build the toolchain yourself or are you using some precompiled one? Have you tried your code with the "official" one - https://launchpad.net/gcc-arm-embedded or maybe with my own compilation - bleeding-edge-toolchain - http://sourceforge.net/projects/bleeding-edge/

Regards,
FCh


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