I'am new in GCC compilers. How can i use sprintf function with WinArm gcc
compiler (Version 20060606). When i try use the sprintf function , comes next
error:
-------- begin --------
arm-elf-gcc (GCC) 4.1.1 (WinARM)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiling: main.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=main.lst
-std=gnu99 -MD -MP -MF .dep/main.o.d main.c -o main.o
Compiling: sysTime.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=sysTime.lst
-std=gnu99 -MD -MP -MF .dep/sysTime.o.d sysTime.c -o sysTime.o
Compiling: uart.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=uart.lst
-std=gnu99 -MD -MP -MF .dep/uart.o.d uart.c -o uart.o
Compiling: uartISR.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=uartISR.lst
-std=gnu99 -MD -MP -MF .dep/uartISR.o.d uartISR.c -o uartISR.o
Compiling: armVIC.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=armVIC.lst
-std=gnu99 -MD -MP -MF .dep/armVIC.o.d armVIC.c -o armVIC.o
Compiling: lpcWD.c
arm-elf-gcc -c -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=lpcWD.lst
-std=gnu99 -MD -MP -MF .dep/lpcWD.o.d lpcWD.c -o lpcWD.o
Assembling: crt0.S
arm-elf-gcc -c -mcpu=arm7tdmi -I. -x assembler-with-cpp -DROM_RUN
-Wa,-adhlns=crt0.lst,-gdwarf-2 crt0.S -o crt0.o
Linking: main.elf
arm-elf-gcc -mcpu=arm7tdmi -I. -gdwarf-2 -DROM_RUN -Os -Wall
-Wstrict-prototypes -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch -Wredundant-decls
-Wreturn-type -Wshadow -Wstrict-prototypes -Wunused -Wa,-adhlns=main.o
-std=gnu99 -MD -MP -MF .dep/main.elf.d main.o sysTime.o uart.o uartISR.o
armVIC.o lpcWD.o crt0.o --output main.elf -nostartfiles
-Wl,-Map=main.map,--cref -lc -lm -lc -lgcc -TLPC2103-ROM.ld
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(freer.o):
In function `_malloc_trim_r':
mallocr.c:(.text+0x48): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x64): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x84): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(makebuf.o):
In function `__smakebuf':
makebuf.c:(.text+0x3c): undefined reference to `_fstat_r'
makebuf.c:(.text+0x110): undefined reference to `isatty'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(mallocr.o):
In function `_malloc_r':
mallocr.c:(.text+0x424): undefined reference to `_sbrk_r'
mallocr.c:(.text+0x4cc): undefined reference to `_sbrk_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o):
In function `__sclose':
stdio.c:(.text+0xc): undefined reference to `_close_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o):
In function `__sseek':
stdio.c:(.text+0x30): undefined reference to `_lseek_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o):
In function `__swrite':
stdio.c:(.text+0x84): undefined reference to `_lseek_r'
stdio.c:(.text+0xac): undefined reference to `_write_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libc.a(stdio.o):
In function `__sread':
stdio.c:(.text+0xd0): undefined reference to `_read_r'
collect2: ld returned 1 exit status
make.exe: *** [main.elf] Error 1
> Process Exit Code: 2
> Time Taken: 00:01
Best regards
Winarm and sprintf
Started by ●October 29, 2009
Reply by ●October 29, 20092009-10-29
--- In l..., "Taris" wrote:
>
> I'am new in GCC compilers. How can i use sprintf function with WinArm gcc compiler (Version 20060606). When i try use the sprintf function , comes next error:
>
You are required to provide the system level code to implement a number of functions. Heap management is one of them (_sbrk).
I tend to like the code in JCWren's demo program www.jcwren.com/arm. Look in syscalls.c. You don't need to implement all of that code.
Note high tightly _sbrk is tied to symbols defined in the linker script. You may need to modify both.
You can Google around for more info.
Richard
>
> I'am new in GCC compilers. How can i use sprintf function with WinArm gcc compiler (Version 20060606). When i try use the sprintf function , comes next error:
>
You are required to provide the system level code to implement a number of functions. Heap management is one of them (_sbrk).
I tend to like the code in JCWren's demo program www.jcwren.com/arm. Look in syscalls.c. You don't need to implement all of that code.
Note high tightly _sbrk is tied to symbols defined in the linker script. You may need to modify both.
You can Google around for more info.
Richard
Reply by ●October 29, 20092009-10-29
Newlib is awsome, but it has high costs in code size (reeeealy high), also I
couldn't ger scanf to work.
2009/10/29 rtstofer
> --- In l... , "Taris"
> wrote:
> >
> > I'am new in GCC compilers. How can i use sprintf function with WinArm gcc
> compiler (Version 20060606). When i try use the sprintf function , comes
> next error:
> > You are required to provide the system level code to implement a number of
> functions. Heap management is one of them (_sbrk).
>
> I tend to like the code in JCWren's demo program www.jcwren.com/arm. Look
> in syscalls.c. You don't need to implement all of that code.
>
> Note high tightly _sbrk is tied to symbols defined in the linker script.
> You may need to modify both.
>
> You can Google around for more info.
>
> Richard
>
>
>
couldn't ger scanf to work.
2009/10/29 rtstofer
> --- In l... , "Taris"
> wrote:
> >
> > I'am new in GCC compilers. How can i use sprintf function with WinArm gcc
> compiler (Version 20060606). When i try use the sprintf function , comes
> next error:
> > You are required to provide the system level code to implement a number of
> functions. Heap management is one of them (_sbrk).
>
> I tend to like the code in JCWren's demo program www.jcwren.com/arm. Look
> in syscalls.c. You don't need to implement all of that code.
>
> Note high tightly _sbrk is tied to symbols defined in the linker script.
> You may need to modify both.
>
> You can Google around for more info.
>
> Richard
>
>
>
Reply by ●October 29, 20092009-10-29
--- In l..., "Felipe de Andrade Neves L." wrote:
>
> Newlib is awsome, but it has high costs in code size (reeeealy high), also I
> couldn't ger scanf to work.
There are a lot of folks writing embedded applications who don't use newlib or any other canned library. There could be (probably are) licensing issues with newlib and I believe they have been discussed before. It's wasn't interesting to me because I don't do commercial development. Including printf() is expensive in terms of memory!
It is often easier to just write your own library functions. I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie and "Software Tools" by Kernighan/Plauger.
I know there are issues with re-entrancy but they only pop up if you have multiple tasks and most of my stuff doesn't use an RTOS.
Richard
>
> Newlib is awsome, but it has high costs in code size (reeeealy high), also I
> couldn't ger scanf to work.
There are a lot of folks writing embedded applications who don't use newlib or any other canned library. There could be (probably are) licensing issues with newlib and I believe they have been discussed before. It's wasn't interesting to me because I don't do commercial development. Including printf() is expensive in terms of memory!
It is often easier to just write your own library functions. I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie and "Software Tools" by Kernighan/Plauger.
I know there are issues with re-entrancy but they only pop up if you have multiple tasks and most of my stuff doesn't use an RTOS.
Richard
Reply by ●October 30, 20092009-10-30
It is true, the better choice is to write a own library.. Someday I will.
2009/10/29 rtstofer
> --- In l... , "Felipe de
> Andrade Neves L." wrote:
> >
> > Newlib is awsome, but it has high costs in code size (reeeealy high),
> also I
> > couldn't ger scanf to work.
> >
> > There are a lot of folks writing embedded applications who don't use newlib
> or any other canned library. There could be (probably are) licensing issues
> with newlib and I believe they have been discussed before. It's wasn't
> interesting to me because I don't do commercial development. Including
> printf() is expensive in terms of memory!
>
> It is often easier to just write your own library functions. I tend to use
> the stuff from "The C Programming Language" by Kernighan/Ritchie and
> "Software Tools" by Kernighan/Plauger.
>
> I know there are issues with re-entrancy but they only pop up if you have
> multiple tasks and most of my stuff doesn't use an RTOS.
>
> Richard
>
>
>
2009/10/29 rtstofer
> --- In l... , "Felipe de
> Andrade Neves L." wrote:
> >
> > Newlib is awsome, but it has high costs in code size (reeeealy high),
> also I
> > couldn't ger scanf to work.
> >
> > There are a lot of folks writing embedded applications who don't use newlib
> or any other canned library. There could be (probably are) licensing issues
> with newlib and I believe they have been discussed before. It's wasn't
> interesting to me because I don't do commercial development. Including
> printf() is expensive in terms of memory!
>
> It is often easier to just write your own library functions. I tend to use
> the stuff from "The C Programming Language" by Kernighan/Ritchie and
> "Software Tools" by Kernighan/Plauger.
>
> I know there are issues with re-entrancy but they only pop up if you have
> multiple tasks and most of my stuff doesn't use an RTOS.
>
> Richard
>
>
>
Reply by ●October 30, 20092009-10-30
--- In l..., "Felipe de Andrade Neves L." wrote:
>
> It is true, the better choice is to write a own library.. Someday I will.
>
Don't put off until tomorrow what you can do today. The sooner you do it the more time and effort you will save in the long term.
When you do bite the bullet, make sure you avoid using the fragile format string-interpreting schemes as used by printf / fprintf / scanf etc. They are accidents just waiting to happen.
Any minimal time that you might save writing code which uses interfaces like this is quickly used up at testing time - and then some. In the worst case you might find yourself trying to sort out obscure runtime problems of your application's users on the other side or the world).
--
Chris Burrows
Armaide: LPC2xxx Integrated Development System
http://www.cfbsoftware.com/armaide
>
> It is true, the better choice is to write a own library.. Someday I will.
>
Don't put off until tomorrow what you can do today. The sooner you do it the more time and effort you will save in the long term.
When you do bite the bullet, make sure you avoid using the fragile format string-interpreting schemes as used by printf / fprintf / scanf etc. They are accidents just waiting to happen.
Any minimal time that you might save writing code which uses interfaces like this is quickly used up at testing time - and then some. In the worst case you might find yourself trying to sort out obscure runtime problems of your application's users on the other side or the world).
--
Chris Burrows
Armaide: LPC2xxx Integrated Development System
http://www.cfbsoftware.com/armaide
Reply by ●October 30, 20092009-10-30
Am 10/29/2009 8:40 PM, also sprach rtstofer:
> I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie
It's amazing that a 31 year old IT book is still relevant.
> I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie
It's amazing that a 31 year old IT book is still relevant.
Reply by ●October 30, 20092009-10-30
rtstofer wrote:
>
> --- In l..., "Felipe de Andrade Neves L." wrote:
>> Newlib is awsome, but it has high costs in code size (reeeealy high), also I
>> couldn't ger scanf to work.
>>
>> There are a lot of folks writing embedded applications who don't use newlib or any other canned library. There could be (probably are) licensing issues with newlib and I believe they have been discussed before. It's wasn't interesting to me because I don't do commercial development. Including printf() is expensive in terms of memory!
>
> It is often easier to just write your own library functions. I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie and "Software Tools" by Kernighan/Plauger.
>
> I know there are issues with re-entrancy but they only pop up if you have multiple tasks and most of my stuff doesn't use an RTOS.
>
> Richard
>
Search the files in the FreeRTOS download for a file called
printf-stdarg.c. This has a very light weight version of sprintf in it
(not written by me, but the version in the download has a couple of bugs
fixed). It is limited however, for example it does not manage %f, etc.
Regards,
Richard.
+ http://www.FreeRTOS.org
Designed for Microcontrollers. More than 7000 downloads per month.
+ http://www.SafeRTOS.com
Certified by T as meeting the requirements for safety related systems.
>
> --- In l..., "Felipe de Andrade Neves L." wrote:
>> Newlib is awsome, but it has high costs in code size (reeeealy high), also I
>> couldn't ger scanf to work.
>>
>> There are a lot of folks writing embedded applications who don't use newlib or any other canned library. There could be (probably are) licensing issues with newlib and I believe they have been discussed before. It's wasn't interesting to me because I don't do commercial development. Including printf() is expensive in terms of memory!
>
> It is often easier to just write your own library functions. I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie and "Software Tools" by Kernighan/Plauger.
>
> I know there are issues with re-entrancy but they only pop up if you have multiple tasks and most of my stuff doesn't use an RTOS.
>
> Richard
>
Search the files in the FreeRTOS download for a file called
printf-stdarg.c. This has a very light weight version of sprintf in it
(not written by me, but the version in the download has a couple of bugs
fixed). It is limited however, for example it does not manage %f, etc.
Regards,
Richard.
+ http://www.FreeRTOS.org
Designed for Microcontrollers. More than 7000 downloads per month.
+ http://www.SafeRTOS.com
Certified by T as meeting the requirements for safety related systems.
Reply by ●October 31, 20092009-10-31
--- In l..., Dick Balaska wrote:
>
> Am 10/29/2009 8:40 PM, also sprach rtstofer:
> > I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie
> It's amazing that a 31 year old IT book is still relevant.
>
IT Book ???
You have never read have you ??!!!
don
>
> Am 10/29/2009 8:40 PM, also sprach rtstofer:
> > I tend to use the stuff from "The C Programming Language" by Kernighan/Ritchie
> It's amazing that a 31 year old IT book is still relevant.
>
IT Book ???
You have never read have you ??!!!
don
Reply by ●October 31, 20092009-10-31
--- In l..., "cfbsoftware1" wrote:
>
> --- In l..., "Felipe de Andrade Neves L." wrote:
> >
> > It is true, the better choice is to write a own library.. Someday I will.
> > Don't put off until tomorrow what you can do today. The sooner you do it the more time and effort you will save in the long term.
>
> When you do bite the bullet, make sure you avoid using the fragile format string-interpreting schemes as used by printf / fprintf / scanf etc. They are accidents just waiting to happen.
>
> Any minimal time that you might save writing code which uses interfaces like this is quickly used up at testing time - and then some. In the worst case you might find yourself trying to sort out obscure runtime problems of your application's users on the other side or the world).
>
> --
> Chris Burrows
> Armaide: LPC2xxx Integrated Development System
> http://www.cfbsoftware.com/armaide
>
I don't want to imply that I have ever rewritten the C library or even a minor portion of it. When I start a project, I get the serial port to work first. Then I write a few put??? functions to output hex bytes, shorts and words. Next I write a putnum routine to output decimal values and add a few string routines.
I avoid sprintf, printf and scanf at every opportunity. I don't always use fopen, fclose, fget and fput either. I just don't want the overhead.
But my projects tend to be pretty simple and don't tend to have a lot of user interaction. Formatted IO is usually a minor portion of the work.
However, as I don't use JTAG, having the various string and put functions simplifies debugging.
Richard
>
> --- In l..., "Felipe de Andrade Neves L." wrote:
> >
> > It is true, the better choice is to write a own library.. Someday I will.
> > Don't put off until tomorrow what you can do today. The sooner you do it the more time and effort you will save in the long term.
>
> When you do bite the bullet, make sure you avoid using the fragile format string-interpreting schemes as used by printf / fprintf / scanf etc. They are accidents just waiting to happen.
>
> Any minimal time that you might save writing code which uses interfaces like this is quickly used up at testing time - and then some. In the worst case you might find yourself trying to sort out obscure runtime problems of your application's users on the other side or the world).
>
> --
> Chris Burrows
> Armaide: LPC2xxx Integrated Development System
> http://www.cfbsoftware.com/armaide
>
I don't want to imply that I have ever rewritten the C library or even a minor portion of it. When I start a project, I get the serial port to work first. Then I write a few put??? functions to output hex bytes, shorts and words. Next I write a putnum routine to output decimal values and add a few string routines.
I avoid sprintf, printf and scanf at every opportunity. I don't always use fopen, fclose, fget and fput either. I just don't want the overhead.
But my projects tend to be pretty simple and don't tend to have a lot of user interaction. Formatted IO is usually a minor portion of the work.
However, as I don't use JTAG, having the various string and put functions simplifies debugging.
Richard