Angel and Angelboot

Angel and Angelboot together make a simple but effective boot loader that can upload a kernel and RAMdisk to a target device from a host then run them. Angel is the code that lives on the device that gets started on boot and Angelboot is the program that runs on the host and manages the upload. Angel is in fact part of the ARM SDT and can be used as a debugger in that environment. Angelboot allows it to be used outside this environment.

The Windows Jflash code 'SA-1110 Development Board, JTAG Programming Software v0.3' to give it its full title, can be downloaded from: http://developer.intel.com/design/strong/swsup/SA1110Jflash.htm whilst Jflash-linux is obtainable from: ftp://ftp.netwinder.org/users/n/nico/SA1110Jflash.tgz.

Configuring Angelboot

Copy dot.angelrc and Angelboot from the CD to your development directory and rename dot.angelrc to .angelrc. .angelrc is now classified as a hidden file so your filer may hide it from you. You will however, need to edit .angelrc to match your device. so that it has the following settings:

This is an example for an Assabet board

base 0xc0008000
entry 0xc0008000
r0 0x00000000
r1 0x00000019
device /dev/ttyS1       
options 9600 8N1
baud 115200
otherfile ramdisk_img.gz
otherbase 0xc0800000
exec minicom

The meaning of these settings is as follows:

Runing Angelboot

Make sure your device is ready and that the serial port is connected. Run:

./angelboot

Angelboot will run using the config in .angelrc. You should see the following:
Initialising execution environment.
Downloading image size 0x98c34 to 0xc00080000
followed by 4 lines of stars indicating the kernel upload. This is immediately followed by:
Downloading other image size 0x26935d to 0xc0800000
followed by 14 lines of dots indicating the RAMdisk upload. Once the upload is complete whatever you specified on the exec line is executed.

Obvisouly the sizes and number of lines of dots and stars vary with the size of the uploaded images and the target addresses are what you specify in .angelrc.

The device should now be running, booting the kernel and using the RAMdisk as the root filing system. If you specified an exec line to run your serial program then it will start and show you the kernel boot info and login prompt.