U-boot

Click one of the site to download toolchain to build U-boot. Please note that this toolchain is for U-boot, there is another toolchain to build Linux kernel.

Once the download is done, extract the tarball to /opt/toolchains/.

If the '/opt/toolchains' directory does not exist in host pc, then create the directory.

$ sudo mkdir -p /opt/toolchains
$ sudo tar xzvf arm-eabi-4.4.3.tar.gz -C /opt/toolchains/

In order to add the toolchain path to PATH, paste below lines to $HOME/.bashrc.

export PATH=/opt/toolchains/arm-eabi-4.4.3/bin:$PATH
export CROSS_COMPILE=arm-eabi-

You can apply the change if you login again or import to apply this change, login again or evaluate $HOME/.bashrc with source command.

$ source ~/.bashrc

You can check if the toolchain installed above works properly while checking the version of toolchain. If you can find gcc version 4.4.3(GCC) at the end of the line, the toolchain is well installed.

$ arm-eabi-gcc -v
Using built-in specs.
Target: arm-eabi
Configured with: /home/jingyu/projects/gcc/android-toolchainsrc/build/../gcc/gcc-4.4.3/configure --prefix=/usr/local --target=arm-eabi 
--host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/home/jingyu/projects
/gcc/toolchain_build/obj/temp-install --with-mpfr=/home/jingyu/projects/gcc/toolchain_build/obj/temp-install --disable-libssp --enable
-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disa
ble-tls --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --with-gcc-version=4.4.3 --with
-binutils-version=2.19 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=7.1.x --with-arch=armv5te --with-multilib
-list=mandroid --with-sysroot=/usr/local/google/home/android/cupcake_rel_root --program-transform-name='s&^&arm-eabi-&'
Thread model: single
gcc version 4.4.3 (GCC) 

You can checkout U-boot source tree from Hardkernel's Github.

$ git clone https://github.com/hardkernel/u-boot.git -b odroid-v2015.10

Before you compile U-boot, you must configure for ODROID-U3 with following command.

$ cd u-boot
$ make smdk4412_config

And finally you can compile U-boot.

$ make

Then you can start to build u-boot image, u-boot.bin. This will create u-boot/u-boot.bin. You can also add -j option for fast compile.

ODROID-U3 boot load must have the secure booting process and there are 4 binary files.(bl1.HardKernel, bl2.HardKernel, u-boot.bin, tzsw.HardKernel)
The u-boot.bin file can be generated by compiling the u-boot source code.
bl1.HardKernel, bl2.HardKernel and tzsw.HardKernel blobs can be found in “u-boot/sd_fuse” directory.

  • If you don't change the early H/W initialization code, you don't need to change the bl2.bin. Updating the u-boot.bin should be enough most cases.
  • bl1.bin.hardkernel and tzsw.bin.hardkernel are supplied only in binary format due to Samsung's polish.
  • You need to sign the bl2.bin with Hardkernel's private key to make it bootable.
  • If you want to contribute your patch, apply it to our u-boot github admin. Or, contact “odroid.uboot@gmail.com”
  • And we will publically release the signed bl2 image within 48 hours if there is any update.
  • To flash the updated images on your MicroSD card, refer the scriptor file sd_fusing.sh in sd_fuse directory.
  • To update the boot loader in the eMMC, you must use the fastboot protocol. Fastboot Tool.
  • When the boot loader in the eMMC is corrupted, Recover it with this instruction. eMMC Recovery.
  • For eMMC update, you need a fastboot driver and micro-USB cable.

Installation to blank card

We provide the script, sd_fuse/sd_fusing.sh, this helps you to install the bootloader into your blank card MicroSD.

  1. Insert your card to USB card reader and attach to USB host port of your desktop.
  2. Check the device path of your USB card reader.
  3. Install the bootloader binaries using sd_fuse/sd_fusing.sh.
$ cd sd_fuse
$ ./sd_fusing.sh <device/path/of/your/card>

Installation using fastboot

If you can boot your ODROID-U3 already and want to install a new u-boot.bin built by you. Fastboot helps you to install a u-boot.bin into your board.

u-boot.bin install

$ sudo fastboot flash bootloader u-boot.bin

bl1.bin install

$ sudo fastboot flash fwbl1 sd_fuse/bl1.HardKernel

bl2.bin install

$ sudo fastboot flash bl2 sd_fuse/bl2.HardKernel

tzsw.bin install

$ sudo fastboot flash tzsw sd_fuse/tzsw.HardKernel

If installation is done, you care reboot your ODROID-U3 with fastboot.

$ sudo fastboot reboot

Updating from Linux

You also can update U-boot from Linux with dd command. After building U-boot, copy u-boot.bin into your ODROID-U3. Then do the command below in order to flash your U-boot image to MicroSD.

$ sudo dd if=u-boot.bin of=<device/path/of/your/card> seek=63
$ sudo sync

A tip for the TFTP booting

Here is a modified u-boot to support the TFTP booting. Special thanks to Surian and kangur91 in our community forum. Uboot-for-TFTP