[U-Boot] uImage load address and entry point with Minnowboard

vinoth eswaran evinoth1206 at gmail.com
Fri Jun 24 13:28:43 CEST 2016


Dear Mr.Wolfgang Denk,

Your reply had helped me a lot in figuring out the solution, but I run into
another issue.

I had identified the kernel file where load address is defined:
kexec-bzimage64.c:#define MIN_KERNEL_LOAD_ADDR    0x100000

I am using the following command to create uImage. Here in the architecture
argument I am not seeing any option corresponding to the Intel-x86_64. So I
had used x86, which I am not sure is valid or not. The kernel is 64 bit.

mkimage -A x86 -O linux -T kernel -C none -a 0x100000 -e 0x00000 -n Linux
-d vmlinux-4.4.6-ina uImage
Image Name:   Linux
Created:      Fri Jun 24 10:35:40 2016
Image Type:   Intel x86 Linux Kernel Image (uncompressed)
Data Size:    21966248 Bytes = 21451.41 kB = 20.95 MB
Load Address: 00100000
Entry Point:  00000000

The bootcmd is "bootcmd fatload mmc 1:1 02000000 uImage \; bootm 02000000".
Now after copying the kernel to RAM I am seeing the following error
messages:

Error: Invalid Boot Flag (found 0x0000, expected 0xaa55)
Setup at 0x000000
Magic signature not found

Is is I need to load setup.bin also?

After Starting Kernel I am seeing the following message:

Invalid Opcode (Undefined Opcode)
EIP: 0010:[<00000058>] EFLAGS: 00010006
Original EIP :[<849a4058>]
EAX: 05050616 EBX: 00000000 ECX: 00000000 EDX: 00000000
ESI: 00000000 EDI: 00000000 EBP: 00000000 ESP: 7b348150
 DS: 0018 ES: 0018 FS: 0020 GS: 0018 SS: 0018
CR0: 00000033 CR2: 00000000 CR3: 00000000 CR4: 00000600
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Stack:
    0x7b348190 : 0x00009000
    0x7b34818c : 0x7b5cf088
    0x7b348188 : 0x00000007
    0x7b348184 : 0x7b5ae4e8
    0x7b348180 : 0x00010000
    0x7b34817c : 0x00000000
    0x7b348178 : 0x7b3481bc
    0x7b348174 : 0x00000001
    0x7b348170 : 0xcb6e3ac1
    0x7b34816c : 0x7b55f663
    0x7b348168 : 0x7b36035c
    0x7b348164 : 0x00000000
    0x7b348160 : 0x00000400
    0x7b34815c : 0x7b5cf088
    0x7b348158 : 0x00000000
    0x7b348154 : 0x00000000
--->0x7b348150 : 0x00009000
    0x7b34814c : 0x00010006
    0x7b348148 : 0x00000010
    0x7b348144 : 0x00000058
### ERROR ### Please RESET the board ###

I didn't understand what#s happening here? Do I need to load the *.dtb file
also or this will be done internally by the u-boot.

Thanks & Regards,
Vinothkumar

On Thu, Jun 23, 2016 at 8:21 PM, Wolfgang Denk <wd at denx.de> wrote:

> Dear Vinoth,
>
> In message <CAJst-kGA9s24O=
> BKa8ESWmtg-HgZ8oPC+i1h0BJWc0_c1uczrg at mail.gmail.com> you wrote:
> >
> > 1) What's the address in the bootcmd corresponds to , I think it is
>
> Define "bootcmd" - this can be anything.
>
> > the address where we want the u-boot to load the Linux kernel image
> > into RAM
> >
> > For ex: fatload mmc 0:1 01000000 bzImage; zboot 01000000
>
> This does not apply to your previous question.  We were talking about
> the address entries in uImage files - but there you use a bzImage
> which does not include the uImage header, and so it doesn not have any
> "load address" or "entry point address" settings stored in the image.
> Here you need to know these yourself.
>
> > Here 01000000 is the address and bzImage is the compressed Linux
> > kernel stored in mmc0 partition1. Once the Kernel is copied to RAM we
> > are using zboot command to start the kernel, so after it Kernel
> > unpacks itself and starts running
>
> Correct - but this is a totally different scenario.
>
> Note also that th enotation of "kernel unpacks itself" is dependent on
> the image type and to some parts on the architecture.
>
> > 2) I want to use uncompressed Kernel(vmlinux) instead of bzImage.
> > U-boot directly doesn't support running vmlinux, so I need to generate
> > the uImage using the mkImage tool. So the payload in my case in
> > uncompressed kernel.  To generate this I want two addresses , load
> > address and entry point address. You have mentioned that the addresses
> > are often fixed. How can I get these addresses?
>
> They are defined in the kerel build process; check Linux Makefiles,
> and/or study the linker commands used when linking the kernel image.
>
> > I am using the same address in bootcmd: fatload mmc 0:1 01000000
> > uImage; bootm 01000000
>
> In this case 0x01000000 is what I usually call the "download address",
> i. e. the location where the uImage is stored in memory.  This has
> nothing to do with the load address or entry pint address (except that
> you will likely run into trouble if these should be the same or close
> to it).
>
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> You get a wonderful view from the point of no return.
>                                     - Terry Pratchett, _Making_Money_
>


More information about the U-Boot mailing list