Boot.axf

From linux-sunxi.org
Jump to navigation Jump to search

General

boot.axf is the final allwinner bootloader. It can either load a u-boot image, or a stripped linux kernel directly, called bImage by the build scripts. Manually building is possible using arm-linux-gnueabi-objcopy -R .note.gnu.build-id -S -O binary vmlinux output/bImage for example.

Boot partition structure

The default structure of the boot-partition, which boot.axf uses to load various data from. An example layout can be found on github.

Configuration

The booting configuration is defined by the ini-file linux/linux.ini:

[segment]
img_name = c:\linux\bImage
img_size = 0x2000000
img_base = 0x40008000

[segment]
img_name = c:\linux\params
img_size = 0x100
img_base = 0x40000100

[script_info]
script_base = 0x43000000
script_size = 0x10000

[logo_info]
logo_name = c:\linux\android.bmp
logo_address = 0x48000000
logo_show = 1

Note: yes, they actually use DOS paths and partition names, and most likely internally translate those.

boot.axf can also "chainload" u-boot, replacing the bImage portion by:

[segment]
img_name = c:\linux\u-boot.bin
img_size = 0x80000
img_base = 0x4a000000

This is what is done on ICS firmwares on tablets, where what is booted is an Android boot.img by u-boot.

Source code

There is a source tree for building boot.axf available at this repository. Use at your own risk, as it's very obscure and not well known.