This page will explain how the boot sequence on Exynos 4412 occurs. Covers the following products: ODROID-X/X2/U/U2/U3/Q/Q2
On ODROID-U/U2/U3 There's no method to select the boot media. It will attempt first a eMMC boot if eMMC isn't found it will attempt the SDCard Boot
On ODROID-Q/Q2 It will always default to eMMC boot. However if you want to boot of the SDCard use the supplied debug board and change the first jumper on the right. Upon doing that it will change to sdcard boot. The debug board must be present if you want to boot of SDCard
On ODROID-X/X2 there's a jumper (JP2) to select the boot media. If you have it connected it will boot of SDCard, if its not connected it will boot of eMMC
Upon power on the board/tablet will search for the boot media. It will perform the following: * 1) iROM (Code inside the SoC) will attempt to read the boot media at the first 512 bytes of it. On those first 512 bytes fwbl1 should exist. * 2) fwbl1 will load bl2 (SPL) that is part of the U-Boot. * 3) bl2 will load U-boot * 4) U-Boot will do whats left, such as handle TrustZone, load kernel image and Ramdisk if setted.
This blob is the first thing that CPU will call, we don't have much information on it since its provided by Samsung. Position on SD: 1
This is the SPL, part of the U-Boot, upon building U-Boot you'll have the mkspl program what will extract it from the u-boot.bin Position on SD: 31
This is the U-Boot itself built. For more information about U-Boot please check their website: http://www.denx.de/wiki/U-Boot Position on SD: 63
This is the blob done by Samsung/ARM to support Trustzone platform. Position on SD: 2111
The default env provided in U-Boot will attempt the following:
This package below packs all needed files above and a shell script to flash them to your SDCard. * Official Download: boot.tar.gz
* Mirror: http://www.mdrjr.net/odroid/mirror/BSPs/Alpha4/unpacked/boot.tar.gz
[http://www.codesourcery.com/sgpp/lite/arm/portal/release1294]
or
Note this tool chain can be used to build the Android kernel.
If the '/opt/toolchains' directory does not exist in host pc, then create the directory.
# sudo mkdir /opt/toolchains # sudo cp arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 /opt/toolchains
# cd /opt/toolchains # sudo tar xjf arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
Modify your ~/.bashrc file to add a new path with editor (gedit or vi)
PATH=$PATH:/opt/toolchains/arm-2010q1/bin
To apply this change, login again or restart the .bashrc
# source ~/.bashrc
# arm-none-eabi-gcc -v Using built-in specs. Target: arm-none-eabi Configured with: /scratch/julian/2010q1-release-eabi-lite/src/gcc-4.4-2010q1/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-eabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics\}\}\}' --enable-languages=c,c++ --disable-shared --disable-lto --with-newlib --with-pkgversion='Sourcery G++ Lite 2010q1-188' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-headers=yes --with-sysroot=/opt/codesourcery/arm-none-eabi --with-build-sysroot=/scratch/julian/2010q1-release-eabi-lite/install/arm-none-eabi --with-gmp=/scratch/julian/2010q1-release-eabi-lite/obj/host-libs-2010q1-188-arm-none-eabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/2010q1-release-eabi-lite/obj/host-libs-2010q1-188-arm-none-eabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/julian/2010q1-release-eabi-lite/obj/host-libs-2010q1-188-arm-none-eabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/julian/2010q1-release-eabi-lite/obj/host-libs-2010q1-188-arm-none-eabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/2010q1-release-eabi-lite/install/arm-none-eabi/bin --with-build-time-tools=/scratch/julian/2010q1-release-eabi-lite/install/arm-none-eabi/bin Thread model: single gcc version 4.4.1 (Sourcery G++ Lite 2010q1-188)
https://github.com/hardkernel/u-boot.git Branch : odroid-v2010.12
# cd uboot # make distclean --> This is only used to clean up files from the source code # make smdk4412_config --> common use for ODROID-X, ODROID-X2, ODROID-Q, ODROID-Q2, ODROID-U, ODROID-U2 # make
* You will have bl2.bin and u-boot.bin, if you build it.
* 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@hardkernel.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 SD card, refer the scriptor file sd_fusing.sh in sd_fuse directory.
* To flash the updated images on your eMMC moduel, refer the scriptor file emmc_fastboot_fusing.sh in sd_fuse directory.
* For eMMC update, you need a fastboot driver and micro-USB cable.