[PATCH 9/9] Add compressed image support
js at sig21.net
Fri Jul 20 11:01:06 EDT 2012
On Thu, Jul 19, 2012 at 10:42:12PM +0200, Sascha Hauer wrote:
> On Thu, Jul 19, 2012 at 08:32:38PM +0200, Johannes Stezenbach wrote:
> > > > ...
> > > > LD barebox
> > > > arm-linux-ld -EL -Map barebox.map -static --gc-sections -o barebox \
> > > > -T arch/arm/lib/barebox-compressed.lds \
> > > > --start-group common/built-in.o drivers/built-in.o commands/built-in.o lib/built-in.o crypto/built-in.o net/built-in.o fs/built-in.o arch/arm/boards/foo/built-in.o arch/arm/mach-foo/built-in.o arch/arm/lib/built-in.o arch/arm/cpu/built-in.o piggy.lzo.o --end-group
> > > >
> > > >
> > > > It shouldn't link all the -built-in.o into the uncompressor, should it?
> > > > Or is it supposed to work via --gc-sections trick?
> > >
> > > Yes, it works using --gc-sections. Are you building a defconfig or a
> > > custom one? If the error above is correct start_barebox is referenced
> > > from the decompressor code. This should not happen.
> > I'm building a custom one (unpublished code). It has some SPI flash
> > boot assembly code, I guess that might cause the issue wrt the new section
> > annotations. I'll look at it tomorrow. However, I still wonder
> > about the empty $(barebox-compressed)?
> It's empty here aswell, so this shouldn't be a problem. Though I should
> probably simpy remove it.
OK, got it to work now. I had a "b start" in my SPI flash boot code
to skip low level init when it was loaded into RAM via JTAG.
That needed to be changed to "b compressed_start". It seems
there is no real support in ld to debug this, I added --cref
to LDFLAGS_barebox but I still couldn't see why stuff from
common/built-in.o gets pulled into the uncompressor.
BTW, I briefly tried the lzo update from
(don't have much time to do real benchmarks, just tried
"time uncompress somefile.lzo somefile"),
but it seems to be slower on ARM926 than the old version
(504ms vs 362ms).
More information about the barebox