uImage's load address and entry point?
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
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.
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.
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/Makefileandarch/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 address0x0.So ${ZRELADDR} should be set to
0x00180000, right? Thus the load address and entry point are both set to0x00180000. Right?
Sorry for some typo. I mean {ZRELADDR} should be set to 0x00108000. {ZRELADDR} always ends with 0x8000 for ARM.
-Shawn.