[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Apex for fat slug



I've just upgraded my Nslu2 to 64MB of RAM, so I'm trying to upgrade
APEX to let me use the new memory.

To start with, I downloaded the Lenny di-nslu2.bin, and unpacked it
using slugimage:
./slugimage.pl -u -i di-nslu2.bin
Read 2 blocks into <RedBoot>
Read 0x00006 bytes into <EthAddr>
Read 1 blocks into <SysConf>
Read 0x1FFE0 bytes into <Loader>
Read 11 blocks into <Kernel>
Read 48 blocks into <Ramdisk>
Read 1 blocks into <FIS directory>
Read 0x00010 bytes into <Trailer>
Wrote 0x00040000 bytes from <RedBoot> into "RedBoot"
Wrote 0x00020000 bytes from <SysConf> into "SysConf"
Wrote 0x0001FFE0 bytes from <Loader> into "apex.bin"
Wrote 0x0015FFE0 bytes from <Kernel> into "vmlinuz"
Wrote 0x005FFFF0 bytes from <Ramdisk> into "ramdisk.gz"
Wrote 0x00000010 bytes from <Trailer> into "Trailer"

Then I went to the APEX download site (ftp://ftp.buici.com/pub/apex)
and picked the latest version 1.6.8.

There are 3 prebuilt images for debian slug:
apex-1.6.8-debian-nslu2-arm.zip
apex-1.6.8-debian-nslu2-armeb.zip
apex-1.6.8-debian-nslu2-armel.zip

Though apex-1.6.8-debian-nslu2-arm.zip and
apex-1.6.8-debian-nslu2-armel.zip appear to be identical.

I tried repacking my di-nslu2.bin using slugimage:
./slugimage.pl -p -o di-nslu2-newapex.bin -b RedBoot -s SysConf -L
apex-1.6.8-debian-nslu2-arm/apex.bin -k vmlinuz -r ramdisk.gz -t
Trailer
Read 0x00040000 bytes from "RedBoot" into <RedBoot> (2 blocks / 2 blocks)
Read 0x00020000 bytes from "SysConf" into <SysConf> (1 blocks / 1 blocks)
Read 0x0000DE98 bytes from "apex-1.6.8-debian-nslu2-arm/apex.bin" into
<Loader> (1 blocks / 1 blocks)
Read 0x0015FFE0 bytes from "vmlinuz" into <Kernel> (11 blocks / 11 blocks)
Read 0x005FFFF0 bytes from "ramdisk.gz" into <Ramdisk> (48 blocks / 48 blocks)
Read 0x00000010 bytes from "Trailer" into <Trailer> (0x00010 bytes /
0x00010 bytes)
Wrote  2 blocks (0x00000000 to 0x00040000) from <RedBoot> into
"di-nslu2-newapex.bin"
Wrote  1 blocks (0x00040000 to 0x00060000) from <SysConf> into
"di-nslu2-newapex.bin"
Wrote  1 blocks (0x00060000 to 0x00080000) from <Loader> into
"di-nslu2-newapex.bin"
Wrote 11 blocks (0x00080000 to 0x001E0000) from <Kernel> into
"di-nslu2-newapex.bin"
Wrote 48 blocks (0x001E0000 to 0x007E0000) from <Ramdisk> into
"di-nslu2-newapex.bin"
Wrote  1 blocks (0x007E0000 to 0x00800000) from <FIS directory> into
"di-nslu2-newapex.bin"
Wrote 0x00010 bytes (0x007FFFF0 to 0x00800000) from <Trailer> into
"di-nslu2-newapex.bin"

Then I flashed the resulting di-nslu2-newapex.bin using upslug2

When I tried booting this I got the following out of the serial terminal:
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Red Hat certified release, version 1.92 - built 15:16:07, Feb  3 2004

Platform: IXDP425 Development Platform (XScale)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00000000-0x02000000, 0x000723a0-0x01ff3000 available
FLASH: 0x50000000 - 0x50800000, 64 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
RedBoot> boot;exec 0x01d00000
have eRcOmM
copy kernel code from flash to RAM
copy ramdisk file from flash to RAM
run kernel
Using base address 0x01d00000 and length 0x0000de98

Then nothing more...

So I tried repacking di-nslu2.bin using the apex.bin file from the
apex-1.6.8-debian-nslu2-armeb.zip prebuilt image.
That resulted in the following output from the serial terminal:
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Red Hat certified release, version 1.92 - built 15:16:07, Feb  3 2004

Platform: IXDP425 Development Platform (XScale)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00000000-0x02000000, 0x000723a0-0x01ff3000 available
FLASH: 0x50000000 - 0x50800000, 64 blocks of 0x00020000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
RedBoot> boot;exec 0x01d00000
have eRcOmM
copy kernel code from flash to RAM
copy ramdisk file from flash to RAM
run kernel
Using base address 0x01d00000 and length 0x0000dd80
Ans

APEX Boot Loader 1.6.8 -- Copyright (c) 2004-2008 Marc Singer
  compiled for Debian NSLU2 (bigendian) on 2009.Jan.23-09:27:53

    APEX comes with ABSOLUTELY NO WARRANTY.  It is free software and
    you are welcome to redistribute it under certain circumstances.
    For details, refer to the file COPYING in the program source.

  apex => mem:0x00200000+0xdd80   (56704 bytes)
  env  => nor:0x7c000+15k         (empty)

    Use the command 'help help' to get started.

# sdram-init
 1 bank of 2 256Mib chips
# memscan -u 0+256m
 0x0 0x04000000 (64 MiB)
# copy $kernelsrc $bootaddr
# copy fis://kernel 0x00008000
1441760 bytes transferred
# copy $ramdisksrc $ramdiskaddr
# copy fis://ramdisk 0x01000000
6291440 bytes transferred
# wait 10 Type ^C key to cancel autoboot.
Type ^C key to cancel autoboot.
# boot
ARCH_ID: 597 (0x255)
ATAG_HEADER
ATAG_MEM: start 0x00000000  size 0x04000000
ATAG_CMDLINE: (55 bytes) 'console=ttyS0,115200 rtc-x1205.probe=0,0x6f noirqdebu'
ATAG_INITRD2: start 0x01000000  size 0x005ffff0
ATAG_END
Booting kernel at 0x00008000...
ocnUerpmnissiL g.xun dabpizggam n ciebmu-

now I have 64MB recognised by Apex (big endian) but I can't boot the
debian installer kernel.

I noticed that the apex environment in the original di-nslu2.bin used
copy -s instead of copy, but changing that in the new apex environment
didn't seem to improve anything.

Please can someone point out where I'm going wrong here?

Thanks

Chris


Reply to: