[U-Boot-Users] printf with u-boot-1.1.2

Shakthi Kannan shakthimaan at yahoo.com
Thu Oct 13 09:51:19 CEST 2005


Hi Andrew,

Thanks for your reply.

Here is the hello_world compilation output:

make[1]: Entering directory
`/home/shaks/docs/monitor/u-boot/u-boot-1.1.2/examples'
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-gcc -g
 -Os   -fno-strict-aliasing  -fno-common -ffixed-r8
-msoft-float -D__KERNEL__ -DTEXT_BASE=0x01000000
-I/home/shaks/docs/monitor/u-boot/u-boot-1.1.2/include
-fno-builtin -ffreestanding -nostdinc -isystem
/usr/local/arm/3.4.3/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.3/include
-pipe  -DCONFIG_ARM -D__ARM__ -march=armv4 -Wall
-Wstrict-prototypes -c -o stubs.o stubs.c
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-ar crv
libstubs.a  stubs.o
a - stubs.o
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-gcc -g
 -Os   -fno-strict-aliasing  -fno-common -ffixed-r8
-msoft-float -D__KERNEL__ -DTEXT_BASE=0x01000000
-I/home/shaks/docs/monitor/u-boot/u-boot-1.1.2/include
-fno-builtin -ffreestanding -nostdinc -isystem
/usr/local/arm/3.4.3/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.3/include
-pipe  -DCONFIG_ARM -D__ARM__ -march=armv4 -Wall
-Wstrict-prototypes -c -o hello_world.o hello_world.c
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-ld -g 
-Ttext 0xc100000 \
	-o hello_world -e hello_world hello_world.o
libstubs.a \

-L/usr/local/arm/3.4.3/bin/../lib/gcc/arm-none-linux-gnueabi/3.4.3
-lgcc
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-objcopy
-O srec hello_world hello_world.srec 2>/dev/null
/usr/local/arm/3.4.3/bin/arm-none-linux-gnueabi-objcopy
-O binary hello_world hello_world.bin 2>/dev/null
make[1]: Leaving directory
`/home/shaks/docs/monitor/u-boot/u-boot-1.1.2/examples'

C code
-------

#include <common.h>
#include <exports.h>

int hello_world (int argc, char *argv[])
{
  char str[] = "foobar";
  
  printf ("%s\n", str);
  return 0;
}

Disassembly code
-----------------

hello_world.o:     file format elf32-littlearm

Disassembly of section .text:

00000000 <hello_world>:
#include <exports.h>


int hello_world (int argc, char *argv[])
{
   0:	e52de004 	str	lr, [sp, #-4]!
  char str[]="foobar";
   4:	e59f302c 	ldr	r3, [pc, #44]	; 38 <.text+0x38>
   8:	e8930003 	ldmia	r3, {r0, r1}
   c:	e1a03821 	mov	r3, r1, lsr #16
  10:	e24dd00c 	sub	sp, sp, #12	; 0xc
  14:	e58d0000 	str	r0, [sp]

  printf ("%s\n", str);
  18:	e59f001c 	ldr	r0, [pc, #28]	; 3c <.text+0x3c>
  1c:	e1cd10b4 	strh	r1, [sp, #4]
  20:	e1a0100d 	mov	r1, sp
  24:	e5cd3006 	strb	r3, [sp, #6]
  28:	ebfffffe 	bl	0 <printf>
  return 0;
}
  2c:	e3a00000 	mov	r0, #0	; 0x0
  30:	e28dd00c 	add	sp, sp, #12	; 0xc
  34:	e8bd8000 	ldmia	sp!, {pc}
  38:	00000000 	andeq	r0, r0, r0
  3c:	00000008 	andeq	r0, r0, r8

I still don't get printf output. Only a single
character gets printed. Any thoughts?

Thanks,

SK


--
Shakthi Kannan, MS
Software Engineer, Specsoft (Hexaware Technologies)
[E]: shakthimaan at yahoo.com           [M]: (91) 98407-87007
[W]: http://www.shakthimaan.com      [L]: Chennai, India


		
__________________________________ 
Start your day with Yahoo! - Make it your home page! 
http://www.yahoo.com/r/hs




More information about the U-Boot mailing list