====== U-boot ======
===== Toolchain =====
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.
* [[http://releases.linaro.org/archive/14.04/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2014.04_linux.tar.xz|Download #1]]
* [[http://dn.odroid.com/toolchains/gcc-linaro-arm-none-eabi-4.8-2014.04_linux.tar.xz|Download #2]]
Once the download is done, extract the tarball to **/opt/toolchains/**.
$ sudo mkdir -p /opt/toolchains
$ sudo tar xJvf gcc-linaro-arm-none-eabi-4.8-2014.04_linux.tar.xz -C /opt/toolchains/
In order to add the toolchain path to PATH, paste below lines to **$HOME/.bashrc**.
export PATH=/opt/toolchains/gcc-linaro-arm-none-eabi-4.8-2014.04_linux/bin:$PATH
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.8.3 20140401 (prerelease)** at the end of the line, the toolchain is well installed.
$ arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/opt/toolchains/gcc-linaro-arm-none-eabi-4.8-2014.04_linux/bin/../libexec/gcc/arm-none-eabi/4.8.3/lto-wrapper
Target: arm-none-eabi
Configured with: /cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/src/gcc-linaro-4.8-2014.04/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-eabi --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/install --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/install/arm-none-eabi --without-headers --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC 4.8-2014.04' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --disable-__cxa_atexit --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-none-eabi-linux/.build/arm-none-eabi/build/static --enable-lto --enable-linker-build-id --enable-libmudflap --disable-libgomp --enable-libssp --disable-libstdcxx-pch --enable-multilib --enable-languages=c,c++,fortran --with-multilib-list=aprofile
Thread model: single
gcc version 4.8.3 20140401 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.04 - Linaro GCC 4.8-2014.04)
===== Checkout & compile =====
You can checkout **U-boot** source tree from **[[https://github.com/hardkernel/u-boot/tree/odroidc-v2011.03|Hardkernel's Github]]**.
$ git clone https://github.com/hardkernel/u-boot.git -b odroidc-v2011.03
Before you compile **U-boot**, you must configure for **ODROID-C1** with following command,\\
and then compile.\\
For Ubuntu and Android, the different config option is used.\\
=== Ubuntu ===
$ cd u-boot
$ make odroidc_config
$ make
===Android 5.1.1 and 4.4.4 ===
$ cd u-boot
$ make odroidc_rev2_config
$ make
===Android 4.4.2 ===
$ cd u-boot
$ make odroidc_config
$ make
===== Installation =====
The bootloader for **ODROID-C1** is consisted with two part, **1st stage bootloader** + **U-boot**. You can find **u-boot.bin** once you compile **U-boot**, as well as **bl1.bin.hardkernel** in the directory **sd_fuse/**. Both binaries must be installed in a card (eMMC or MicroSD).
* The 1st stage bootloader, **bl1.bin.hardkernel**, is provided as prebuilt binary only.
* Bootloader signing process is not necessary for **ODROID-C1** at all.
==== Installation to blank card ====
We provide the script, **sd_fuse/sd_fusing.sh**, this helps you to install the bootloader into your blank card eMMC or MicroSD.
- Insert your card to USB card reader and attach to USB host port of your desktop.
- Check the device path of your USB card reader.
- Install the bootloader binaries using **sd_fuse/sd_fusing.sh**.
$ cd sd_fuse
$ ./sd_fusing.sh
==== Installation using fastboot ====
If you can boot your **ODROID-C1** 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.
$ sudo fastboot flash bootloader sd_fuse/u-boot.bin
If installation is done, you care reboot your **ODROID-C1** with fastboot.
$ 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-C1**. Then do the command below in order to flash your U-boot image to MicroSD or eMMC.
$ sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=512 seek=64
$ sudo sync