Compiling AT91bootstrap 3.7

AT91bootstrap is the 2nd level bootloader for the Atmel AT91 and SAM MPU to manage the hardware initialization such as clock speed configuration, PIO settings, DDR DRAM initialization. After that it downloads your main application, usually the Linux Kernel image, from the first microSD partition to the DDR RAM and runs it from there.

This article illustrates how to compile at91bootstrap 3.7 for Acqua A5, Aria G25 and Arietta G25 modules

For the FOX Board G20 please read this article: AcmeBoot - A tiny bootloader for the FOX Board G20

The binary executable file of at91bootstrap must be stored in the first FAT16 or FAT32 partition of the bootable SD card changing the name in boot.bin.

At startup RomBOOT, that is the 1st levet booloader saved in the Atmel MPU ROM, searches and loads boot.ini from microSD card to the SRAM located inside the MPU itself and runs it from there.

Toolchain installation

First of all you need to install the toolchain (cross compiler, linker, etc) on your Linux Ubuntu PC following this article (tested on Ubuntu 15.04):

Download AT91bootstrap v 3.7 from sources

Download from GitHub the Atmel AT91boostrap version 3.7 sources:

Uncompress it by typing:

$ unzip at91bootstrap-3.7.zip

Move inside the new directory and download the patch from our GitHub repository:

Applying the patch:

~/at91bootstrap-3.7 $ patch -p1 <  at91bootstrap-3.7.patch

Check wich is the defconfig filename of your board. Form the right column it is possible to download the binary file for your board to save on the first partition and rename as boot.bin.

Board Ram size defconfig binary files (to rename in boot.bin)
Acqua A5 256 MB acqua-256m_defconfig acqua-256m-boot.bin
Acqua A5 512 MB acqua-512m_defconfig acqua-512m-boot.bin
Aria G25 128 MB aria-128m_defconfig aria-128m-boot.bin
Aria G25 256 MB aria-256m_defconfig aria-256m-boot.bin
Arietta G25 128 MB arietta-128m_defconfig arietta-128m-boot.bin
Arietta G25 256 MB arietta-256m_defconfig arietta-256m-boot.bin


and use it on the following command:

~/at91bootstrap-3.7 $ make defconfig

Check the configuration menu

If you want to take a look to the at91bootstrap config launch:

~/at91bootstrap-3.7 $ make menuconfig

then save and exit.

Launch the compilation

To launch the compilation type:

~/at91bootstrap-3.7 $ make CROSS_COMPILE=arm-linux-gnueabi-
...

Installation

Copy the binary just created on the first partition of SD card renaming it in boot.bin. These exaamples are valid if you are using a zImage format for your Linux image:

For Acqua A5:

~/at91bootstrap-3.7 $ cp binaries/sama5d3_acqua-sdcardboot-linux-zimage-dt-3.7.bin /media/$USER/boot/boot.bin

For Aria G25:

~/at91bootstrap-3.7 $ cp binaries/at91sam9x5_aria-sdcardboot-linux-zimage-dt-3.7.bin /media/$USER/boot/boot.bin

For Arietta G25:

~/at91bootstrap-3.7 $ cp binaries/at91sam9x5_arietta-sdcardboot-linux-zimage-dt-3.7.bin /media/$USER/boot/boot.bin