[U-Boot-Users] Multi-file problem
Rick Bronson
rick at efn.org
Thu Oct 23 05:47:10 CEST 2003
Hi Detlev,
I actually thought about the fix you recommended but I noticed the
hdr struct was being written to before calling the print_image_hdr()
routine so I was a little hesitant. But I tried it, and it seems to
work okay. Did you want a diff file or shouldn't I bother for one
line:
print_image_hdr ((image_header_t *) addr); /* don't pass hdr, we look past it */
Thanks for your help.
Rick
> Hi Rick,
>
> > I found a problem with Mutli-file use of mkimage (using "-T multi")
> > and fixed in my old u-boot-0.4.0 but my fix seemed to filter through
> > too many files when I tried to do it (more correctly) on the cvs tree.
> >
> > Here's the problem (using 21-Oct-03 cvs files):
> >
> > When this address in cmd_bootm.c:1122 inside print_image_hdr() (is
> > caculated:
> >
> > ulong *len_ptr = (ulong *)((ulong)hdr + sizeof(image_header_t));
> >
> > it points to memory that wasn't copied back on cmd_bootm.c:174:
> >
> > memmove (&header, (char *)addr, sizeof(image_header_t));
> >
> > because len_ptr points to the address header[1] and the memmove only
> > moved header[0]. So I changed line 140 to:
> >
> > image_header_t header[2]; /* enough room for multi-image's size bytes too */
> >
> > and all occurances of memmove (&header... from:
> >
> > memmove (&header, (char *)addr, sizeof(image_header_t));
> > to:
> > memmove (&header, (char *)addr, sizeof(header));
> >
> > But cmd_autoscript.c,common_util.c, armlinux.c uses &header and I'm
> > not sure if this is the right fix. Maybe someone who knows this
> > stuff can give me some direction.
>
> In a standard setup, the copying into ram is only done so we can
> recalculate the header checksum and compare it to the original value.
> If you simply want to print the header information (as iminfo does -
> cf. image_info()) a pointer to the flash location will do just as
> well. I have to admit that I do not fully understand the
> HAVE_DATAFLASH code so I cannot comment on this situation but apart
> from that you could try replacing the
>
> /* for multi-file images we need the data part, too */
> print_image_hdr (hdr);
>
> with
>
> /* for multi-file images we need the data part, too */
> print_image_hdr (addr);
>
> If this works, then it surely is less intrusive than your patch.
>
> Cheers
> Detlev
>
> --
> I haven't lost my mind, I know exactly where I left it.
>
>
More information about the U-Boot
mailing list