NoteThe iROM bootloader reads the OM pin state to choose the boot device, other bootloaders also can do this.

Bootloader

The U-Boot bootloader for Odroid is provided by the Hardkernel. If your board was delivered with SD/eMMC card, then it probably contains the bootloader and the Linux system. If not, then you can find the Hardkernel's U-Boot binaries here.

The Hardkernel's U-Boot works well, but it is based on the old U-Boot release: v2010.12

For Tizen purposes it is recommended to use U-Boot Tizen - it is based on the latest mainline U-Boot release and therefore is stable.

Tizen requirements

To prepare and download Tizen to the device, some tools are required.
For access to the tizen open source code it is recommended to register here.

Software

If you prefer to use precompiled binaries then you can skip this point

If you would like to build the source you will need most of the listed software

Git

To download the code of any Tizen.org repository git is required.
Instalation manual can be found here.

GBS - Git Build System

This is a Tizen development tool. It can be used e.g. for the automatic build using the Tizen.org source code and the user account.
The build environment is based on the ARM architecture thanks to the qemu package, so you don't need any cross compiler.
The main advantages:

GBS installation, configuration and usage is a topic for the another wiki, so please follow the instructions on this site.

ARM Cross Compiler Toolchain

The target board architecture is ARM. To compile bootloader, system and maybe some more you will need the cross compiler. One released by Linaro can be found here.

Fastboot Downloader

This application is one of the Android's SDK tool which is used for upgrade the binaries on Hardkernels U-Boot.
More informations can be found here.

Lthor Downloader

This software tool is required for any upgrade using the Tizen bootloader (bootloader, system, user data). You can download it from download.tizen.org. Choose your system version and find the lthor package. Example package for Ubuntu 14.04 64-bit can be found here.Lthor package is precompiled as a 32-bit binary and it also needs some 32-bit system libraries:

DFU Firmware Upgrade

This is an optional software tool for advanced users for bootloader and system upgrade. Application site: dfu-util. On the host site you can use the dfu-util application. It is available as a Ubuntu package. So you can install it by:

sudo apt-get install dfu-util

To get the latest available version or compile it for other Linux distribution you can get the source by git:

git clone git://gitorious.org/dfu-util/dfu-util.git

Build configuration requires a package:

autoconf

libusb-1.0-0-dev

Build steps:

$ ./autogen.sh
$ ./configure
$ sudo make install

Usage:
On the target side:

Exynos4412 # dfu 0 mmc 0

Or in the latest U-Boot Tizen:

Exynos4412 # dfu

On the host side:
First list the available firmware upgrade options to get the 'alt' number for each:

NoteFor the backward compatibility please use the u-boot-mmc.bin file, which has a special platform compatible signature.

How to flash U-Boot

Choose a suitable flash method and then read the first start info.
The following upgrade methods on working U-Boot:

by Fastboot

by Lthor

by DFU

requires only the U-Boot binary - u-boot-mmc.bin. The other boot binaries are required only if release needs this or in case of fusing a clean SD/eMMC cards.

by Fastboot

If the U-Boot on your board supports the fastboot protocol, then you can easily upgrade the bootloader.
Get the cable: microUSB <-> USB A and connect the microUSB connector to the target and the second one to your PC.
On the Target U-Boot console:

Exynos4412 # fastboot

On the Host console:

$ cd u-boot-tizen
$ sudo fastboot flash bootloader u-boot-mmc.bin

Then using Ctrl+C on the Target you will go back to the console and then type: "reset".
The U-Boot Tizen will start after the board reset.

by Lthor

If the U-Boot on your board supports the Lthor protocol, eg. current U-Boot Tizen or any private version - then you have an easy way to upgrade it.
Get the cable: microUSB <-> USB A and connect the microUSB connector to the target and the second one to your PC.
On the Target of Tizen old U-Boot console:

Exynos4412 # thor 0 mmc 0

Or if you have the latest U-Boot, then:

Exynos4412 # thor

On the Host console:
The Tizen downloader tool requires a compressed images, so you need to use tar:

by DFU

If the U-Boot on your board supports the DFU protocol, eg. current U-Boot Tizen or any private version - then you have the second easy way to upgrade it.
Get the cable: microUSB <-> USB A and connect the microUSB connector to the target and the second one to your PC.
On the target's console with the old U-Boot:

Exynos4412 # dfu 0 mmc 0

Or if you have the latest U-Boot:

Exynos4412 # dfu

On the Host console:
This tool requires a raw binary images, so don't use any compression:

SD Card

This can take a few minutes so wait for the script to finish. Now you can insert your card into Odroid and turn on the power.
On the console you will see U-Boot prompt with the compilation date in the head.

eMMC Card (microSD adapter)

This case is more complicated since usually most USB SD Card Readers represents the SD Card as a mass storage device.
This is not a problem for SD Card, but can be for an eMMC usage with the special boot partitions described here.

So first insert your eMMC with the microSD adapter and check if your reader supports the eMMC partitions:

And if you see the *boot* in mmc devices it means that your reader supports eMMC partitions. In the other case you will not see any mmcblkX and you should check your mass storage device (/dev/sd*) using 'dmesg | tail' commands.

If you have an mmcblkX in /dev/ directory than:

$ sudo ./sd_fusing.sh /dev/mmcblk0 # Check your mmc dev number

This will take a while. The script will write boot images to eMMC boot partitions.

If you have a new sdX in /dev/ directory than it needs some extra work:

First you need a modified 'sd_fusing.sh' script, so do the copy:

cp sd_fusing.sh ums_emmc_fusing.sh

And remove some lines of 'ums_emmc_fusing.sh', so the following lines:

Therefore the script will not check the device type and the positions are valid for the emmc only.

NoteThe following method uses Odroid's SD card slot for the first boot and then the U-Boot upgrade is done on an eMMC boot partition using U-Boot features. The destination is to boot U-Boot from eMMC boot partition using eMMC dedicated slot to improve systm performance.

Now carefully follow the steps:

First use this steps for upgrade eMMC as a standard SD Card using the microSD card adapter.

As you can see in the above listing - this macro needs additional environment variables:

$mmcrootdev - the number of mmc device with the root filesystem

$mmcrootpart - the number of $mmcrootdev partition with the root filesystem

$console - which defines the stdout for the kernel: e.g. console=ttySAC1,115200n8

$opts - optional setup for the system - default is unset

U-Boot Tizen - troubleshoting

Supported devices

The latest U-Boot Tizen binary supports the following boards:

Trats2

Odroid U3

Odroid X2

That means that the one binary can be upgraded onto those devices. The board type is recognized by U-Boot and the environment setup is done on each boot.NoteIf you want to use the one binary for a multiple devices, then make sure that the binary supports this feature. This was introduced with the 'tizen_config'.

Reset the U-Boot environment

To reset U-Boot environment:

Exynos4412 # env default -a
Exynos4412 # saveenv
Exynos4412 # reset

Each time you do the environment reset and save - you should also reset the board.
This is because some environment variables are set automatically on boot.

are equal to active setup data. Latest U-Boot supports Tizen 2.2.1 and Tizen 3.0 setups, and you can switch between them before system upgrade. Default is Tizen 3.0 setup.

Note If you change the chosen setup, then U-Boot will try to update the partiion table - if ${partitions} defined. Do it carefully, because you can lost your data if the new partition table is different.

Lthor and DFU target setup

Those upgrade tools require one U-Boot environment variable:

$dfu_alt_info - this includes the device firmware on flash placement description

In the latest U-Boot version it is set automatically on boot.

Upgrade by thor fails

Then go to the U-Boot prompt to check the environment:

Exynos4412 # print dfu_alt_info
dfu_alt_info=Please reset the board.

If you see the above information - then reset the board and after the boot, check this setup.

Using the UMS

The UMS feature should be used by advanced users. Any operations on the MMC device using the ums can overwrite the bootloader or system data and make the board unbootable. Make sure that you know what are you using this for.

USB Mass Storage a useful feature. By this feature, user can export a storage device (eMMC, SD) as a mass storage using the USB device port (microUSB on the Odroid). It can be used for:

upgrade

device backup image

file operations on the device partitions (read/write)

UMS usage:
First, get the cable: microUSB <-> USB A and connect the microUSB connector to the target and the second one to your PC.
Then, check the available mmc devices on the target:

And on the target console you will see an info about the start sector and the sector count. This mode can be finished by the Ctrl+C keys.Before you finish this mode be sure that data is physically written after the data transfer.To flush the host filesystem buffers, run:

$ sync

If you have the eMMC card, you can also export the eMMC boot partitions:

So in this example: '/dev/sde' is the UMS device. Now you can upgrade the bootloader, but remember about the eMMC binary block offsets.
If you export the SD card or eMMC user partition (ums 0 mmc 0), then the card's partitions can be mounted (automatically in the Ubuntu).

Unknown Version

Prepare the system

Tizen Partitions layout

Before the device partitioning you must setup a proper partiion table on it.
Partition tables used in Tizen releases:

GPT - Trats2

MBR MSDOS - Odroid

NoteOdroid uses a different partition table, because it supports the SD Card boot. SD Card specification doesn't provide the special hidden boot partitions, and the bootloader for Odroid is stored on its second physical block. This doesn't allow use of GPT since it uses first two physical blocks: 0 and 1. The MBR uses only first block.

Tizen Partitions Layout for tizen 3.0

Partition

Name

Offset (MB)

Size (MB)

Thor image name

DFU image name

1

boot

4

64

boot.tar

boot.img

2

rootfs

-

3072

tizen-common-{flavour}.tar.gz

rootfs.img

3

system-data

-

512

tizen-common-{flavour}.tar.gz

system-data.img

4

user

-

-

tizen-common-{flavour}.tar.gz

user.img

5

module

-

20

boot.tar

modules.img

Tizen Partitions Layout for tizen 2.2.1

Partition

Name

Offset (MB)

Size (MB)

Thor image name

DFU image name

1

boot

2

128

boot.tar

boot.img

2

platform

-

2048

platform.tar

platform.img

3

data

-

3072

data.tar

data.img

4

ums

-

-

ums.tar

ums.img

Tizen device partitioning

If you have a problem with the device partitioning, then follow this guide.
You can put the card into the reader or you can use the U-Boot UMS feature to export the mmc card space:

Using a precompiled image

The latest kernel is not yet released. After the release, this section will be updated.

How to flash the kernel

The preferred way to upgrade the kernel is Lthor downloader. So please follow the steps:
Get the cable: microUSB <-> USB A and connect the microUSB connector to the target and the second one to your PC.
On the target side:

Exynos4412 # thor 0 mmc 0

Or in the latest U-Boot Tizen:

Exynos4412 # thor

On the host side:

lthor kernel.tar

After the upgrade finishes, the board reset will occure.

Getting the system

Caution: This guide is not official. We'll notice a official image guide how to make the image based on Tizen:Common profile soon.
Various system releases can depend on more then one system image. Sometimes you need first download some old full release and then do the upgrade with the new one - which is not a full system image.

To get some more info about the Tizen System Common profile please continue with this wiki.

Changing the mount options (For Tizen 2.x)

If you use a precompiled platform image for other devices, you should modify the mount and SDB options.

First, mount 'platform.img' to any directory of your host computer.
Then, move to the mounted directory.