APEX is a very cool bootloader replacement for RedBoot. Replacing your boot loader is a highly technical feat. This voids our warrenty for sure. The procedures here describe building APEX, but not actually reflashing the bootloader. One should have JTAG on the slug because 1 mistake could create a brick with the only recovery by JTAG.
N.B. This is highly experimental software -- USE AT YOUR OWN RISK
[beewoolie-2006.1.20] Recently, a user loaded APEX into SDRAM from
Redboot and booted openslug-3.1. It usually booted OK, but the system
crashed after some time. He found that when he flashed APEX as the
system boot loader, the crashes went away. I've been using APEX for
months now without issue.
Things to you'll need
- An ARMv5b compiler. I'm running the latest ARMv5b from crosstool 0.35. One could probably used the compilers built by OE when building OpenSlug or Unslung, but I haven't tried that yet.
- An fairly recent OpenSlug build is important for testing.
- Version 1.2.16 or better. I used version 1.2.15 but it had a bug in it. You can get the download page from the discussion on APEX
- Running you slug on an UPS during flashing make tons of sense, otherwise a power glitch could cause a brick without JTAG.
What I did
- I downloaded APEX
- untar and cd into the apex-1.3.12 directory. The exact name of the directory depends on the version you download.
make openslug_config -- This configures APEX for booting a slug with the Openslug firmware.
make xconfig -- This brings up the configuration tool
- Under ARM Platform -> General Setup -> Cross Compiler Prefix -> change the path to point to you local armv5b compiler tools
- If you've modified your slug with 64MiB of SDRAM, you'll want to change the memory setup. Under ARM Platform -> Size in bytes of each SDRAM banks change the 0x02000000 to 0x04000000.
- Save the configuration and quit the program
The final product of the build, the file that you need, is in
src/arch-arm/rom/apex.bin. This is the dumped binary.
You've got a freshly minted APEX boot loader.
After some more airtime, I'll add the final steps for running APEX. Otherwise, stop by #openslug or #openjtag for more information. See me [g2] or beewoolie.
eFfeM does not have serial but wanted to give APEX a go anyway. He did the following (on openslug):
- set up a cross environment using the master makefile
- cd openslug; source setup-env; cd openembedded/pacakges/apex
- copy the existing bb file to the latest release (for me apex_1.3.14.bb)
- edit this bb file to adapt the path for the cross compiler (I'm not knowledgeable enough to use the "right" compiler).
- bb -b apex_1.3.14.bb (assuming that is your filename)
- in openslug/tmp/work/apex-1.3.14-r0/apex-1.3.14/src/arch-arm/rom/apex.bin you can find your bin file (your path will be different if you are not using 1.3.14; size for my bin file is 32452 bytes)
- setup a tftp server on your pc. Under Fedora core this can be done by
yum install tftp-server
- copy apex.bin to /tftpboot; make sure the dir and file are readable by tftp (I just did chmod 444 apex.bin)
- telnet into redboot
- in redboot type: ip_address -h 192.168.0.2 (or whatever the address of your development pc is)
- in redboot type: load -b 0x1000000 -r -v -m tftp /apex.bin
- in redboot type: g 0x01000000
Then I heard the slug reboot, the led turned red and that's it.
At this point I discovered that there is apparently no telnet access to apex, and as I do not have serial it is the end of the exercise for now. If someone at some point tells me how to write a conf file or something so that it can automatically build from hard disk, that would be great.