Skip to contentSkip to conversation

uImage's load address and entry point?

U-Boot-Users Shawn 2 participants 4 messages Nov 12, 2004 – Nov 15, 2004

lore
Share & tools
lore

Shawn

author
#0 lore raw

Hi,

I have built a uClinux kernel image vmlinux and the header information is dumped here by objdump. I want to make a uImage to let u-boot start linux and am confused about the values of load address and entry point. If the uImage is built from raw binary linux.bin, the load address and entry point should be set to 0. Right? If it is built from vmlinux, the entry point in my case should be 0x00008000, what' should be the load address?

Thanks,
-Shawn.

vmlinux: file format elf32-littlearm

Sections:

Idx Name          Size      VMA       LMA       File off  Algn
  0 .init         00011000  00008000  00008000  00008000  2**5

CONTENTS, ALLOC, LOAD, CODE
1 .text 0014e7c0 00019000 00019000 00019000 2**5
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 __ex_table 000009b8 001677c0 001677c0 001677c0 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 __ksymtab 00000000 00168178 00168178 0017f720 2**0
CONTENTS
4 __ksymtab_gpl 00000000 00168178 00168178 0017f720 2**0
CONTENTS
5 __kcrctab 00000000 00168178 00168178 0017f720 2**0
CONTENTS
6 __kcrctab_gpl 00000000 00168178 00168178 0017f720 2**0
CONTENTS
7 .data 0001570c 0016a000 0016a000 0016a000 2**5
CONTENTS, ALLOC, LOAD, DATA
8 .bss 000117d4 0017f720 0017f720 0017f720 2**5
ALLOC
9 .debug_abbrev 00051055 00000000 00000000 0017f720 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_info 01ab2fc5 00000000 00000000 001d0775 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00243022 00000000 00000000 01c8373a 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_pubnames 00011e0c 00000000 00000000 01ec675c 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_aranges 000035b0 00000000 00000000 01ed8568 2**0
CONTENTS, READONLY, DEBUGGING

#1 lore raw
Quoted 6 lines · In message <[email protected]> you wrote:

I have built a uClinux kernel image vmlinux and the header information is dumped here by objdump. I want to make a uImage to let u-boot start linux and am confused about the values of load address and entry point. If the uImage is built from raw binary linux.bin, the load address and entry point should be set to 0. Right? If it is built from

Maybe, maybe not. I have no idea what your memory map looks like.

Quoted 2 lines

vmlinux, the entry point in my case should be 0x00008000, what' should be the load address?

load address and entry point address do NOT depend on which image you use for building the U-Boot image (actually the only choice you have is using the raw binary or the compressed raw binary). They depen on your kernel's memory map, and nothing else.

Best regards,

Wolfgang Denk

Signature · 5 lines
See us @ Embedded/Electronica Munich, Nov 09 - 12, Hall A.6 Booth 513
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Nobody trips over mountains. It is the small pebble that  causes  you
to  stumble.  Pass all the pebbles in your path and you will find you
have crossed the mountain.
author
#2 lore raw
Quoted 7 lines
Quoted 2 lines

vmlinux, the entry point in my case should be 0x00008000, what' should be the load address?

load address and entry point address do NOT depend on which image you use for building the U-Boot image (actually the only choice you have is using the raw binary or the compressed raw binary). They depen on your kernel's memory map, and nothing else.

I noticed that the load address and entry point are all set to ${ZRELADDR} in both arch/armnommu/boot/Makefile and arch/arm/boot/Makefile. In my case (CM946E and Integrator CP) the memory map is as follows.

0x00000000    ---    Flash (alias)
0x00100000    ---    SDRAM (128M)
0x10000000    ---    CM control registers
0x24000000    ---    Flash (16M)

At reset the top 256K (0x24FC0000 - 0x24FFFFFF) of flash is mapped to address 0x0.

So ${ZRELADDR} should be set to 0x00180000, right? Thus the load address and entry point are both set to 0x00180000. Right?

Thanks,
-Shawn.

author
#3 lore raw
Quoted 15 lines
Quoted 4 lines

load address and entry point address do NOT depend on which image you use for building the U-Boot image (actually the only choice you have is using the raw binary or the compressed raw binary). They depen on your kernel's memory map, and nothing else.

I noticed that the load address and entry point are all set to ${ZRELADDR} in both arch/armnommu/boot/Makefile and arch/arm/boot/Makefile. In my case (CM946E and Integrator CP) the memory map is as follows.

0x00000000    ---    Flash (alias)
0x00100000    ---    SDRAM (128M)
0x10000000    ---    CM control registers
0x24000000    ---    Flash (16M)
Quoted 5 lines

At reset the top 256K (0x24FC0000 - 0x24FFFFFF) of flash is mapped to address 0x0.

So ${ZRELADDR} should be set to 0x00180000, right? Thus the load address and entry point are both set to 0x00180000. Right?

Sorry for some typo. I mean {ZRELADDR} should be set to 0x00108000. {ZRELADDR} always ends with 0x8000 for ARM.

-Shawn.