build ODROID-U3(Kitkat) on Ubuntu 14.04
# Download and install Ubuntu 14.04 LTS
http://www.ubuntu.com/download/desktop/# Install packages
http://source.android.com/source/initializing.html$ sudo apt-get update
$ sudo apt-get install git gnupg flex bison gperf zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo apt-get install build-essential g++-multilib
$ sudo add-apt-repository "deb http://ftp.debian.org/debian squeeze main contrib non-free"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
# Setup serial terminal
Install minicom
$ sudo apt-get install minicom
$ sudo minicom -s
Setup Serail port
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
=================================================================
+-----------------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-----------------------------------------------------------------------+
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
=================================================================
Save setup as dfl
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
fix permission
$ ls -l /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 7월 29 12:30 ttyUSB0
minicom: Cannot open /dev/ttyUSB0: Permission denied
Just add your user to the dialout group so you have appropriate permissions on the device.
$ sudo usermod -a -G dialout [username]logout.
# Install fastboot and adb
$ sudo apt-get install android-tools-adb android-tools-fastboot
or download android sdk.
$ unzip adt-bundle-linux-x86_64-20140702.zip
$ mv adt-bundle-linux-x86_64-20140702 ~
$ vi ~/.bashrc
export PATH=$PATH:/home/odroid/adt-bundle-linux-x86_64-20140702/sdk/platform-tools
make 99-android.rules
$ sudo vi /etc/udev/rules.d/99-android.rules
# Hardkernel Odroid MTP mode (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="0002", MODE="0666" # MTP media
$ sudo apt-get install android-tools-adb android-tools-fastbootor download android sdk.
$ mv adt-bundle-linux-x86_64-20140702 ~
$ vi ~/.bashrc
make 99-android.rules
$ sudo vi /etc/udev/rules.d/99-android.rules
# Hardkernel Odroid MTP mode (multimedia device)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="0002", MODE="0666" # MTP media
# Install cross compiler
http://www.mdrjr.net/odroid/toots/arm-2010q1.tar.xz
or
http://dn.odroid.com/toolchains/arm-2010q1.tar.xz
or
http://dn.odroid.com/toolchains/arm-2010q1.tar.xz
$ unxz arm-2010q1.tar.xzadd this lines.
$ tar xvf arm-2010q1.tar
$ sudo mkdir /opt/toolchains
$ sudo mv arm-2010q1 /opt/toolchains/
$ vi ~/.bashrc
export PATH=$PATH:/home/odroid/adt-bundle-linux-x86_64-20140702/sdk/platform-tools:/opt/toolchains/arm-2010q1/bin
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
$ source ~/.bashrc
$ $ arm-none-linux-gnueabi-gcc --version
arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2010q1-202) 4.4.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# Download source
sign up https://github.com/
$ git config --global user.email xxx@xxx.xxx
$ git config --global user.name xxx
kernel
$ git clone https://github.com/hardkernel/linux.git -b odroid-3.0.y-android
android
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
$ sudo cp repo /usr/bin
$ sudo chmod a+x ~/bin/repo
$ repo init -u https://github.com/hardkernel/android.git -b 4412_4.4.4_master
$ repo sync
# Build kernel
ODROID-U3 kernel
$ make odroidu_android_442_defconfig
$ make -j8
connect UART-USB module kit and micro USB cable
open minicom
$ minicom
keep typing the space bar in the minicom.
apply power.
entry to uboot mode.
U-Boot 2010.12-svn (May 12 2014 - 15:05:46) for Exynox4412
CPU: S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
APLL = 1000MHz, MPLL = 880MHz
DRAM: 2 GiB
PMIC VERSION : 0x00, CHIP REV : 3
TrustZone Enabled BSP
BL1 version: 20121128
Checking Boot Mode ... EMMC4.41
REVISION: 2.0
Manufacture ID 0x45 [ 29820MB ]
NAME: S5P_MSHC4
MMC Device 0: 29820 MB
MMC Device 1: 0 MB
MMC Device 2 not found
USB3503 NINT = OUTPUT LOW!
ModeKey Check... run normal_boot
No ethernet found.
Hit any key to stop autoboot: 0
Exynos4412 #
format disk
Exynos4412 # fdisk -c 0
Count: 10000
NAME: S5P_MSHC4
fdisk is completed
partion # size(MB) block start # block count partition_Id
1 4110 6702223 8418828 0x0C
2 1027 134343 2104707 0x83
3 2048 2239050 4194487 0x83
4 131 6433537 268686 0x83
2 -> system partition
3 -> userdate partition
4 -> cache partition
Exynos4412 # fastboot
[Partition table on MoviNAND]
ptn 0 name='fwbl1' start=0x1 len=N/A (use hard-coded info. (cmd: movi))
ptn 1 name='bl2' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn 2 name='bootloader' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn 3 name='tzsw' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn 4 name='kernel' start=N/A len=N/A (use hard-coded info. (cmd: movi))
ptn 5 name='ramdisk' start=N/A len=0x0(~16777216KB) (use hard-coded info. (cmd:)
ptn 6 name='system' start=0x1 len=0x0(~1073741824KB)
ptn 7 name='userdata' start=0x1 len=0x0(~-2147483648KB)
ptn 8 name='cache' start=0x1 len=0x0(~134217728KB)
ptn 9 name='fat' start=0x1 len=0x0(~2009071616KB)
Insert a OTG cable into the connector!
run fastboot
$ fastboot flash kernel arch/arm/boot/zImage
sending 'kernel' (3401 KB)...
OKAY [ 0.559s]
writing 'kernel'...
OKAY [ 0.385s]
finished. total time: 0.944s
write to success
Insert a OTG cable into the connector!
OTG cable Connected!
Starting download of 3482864 bytes
...
downloading of 3482864 bytes finished
flashing 'kernel'
writing kernel..device 0 Start 2455, Count 16384
MMC write: dev # 0, block # 2455, count 16384 ... 16384 blocks written: OK
completed
partition 'kernel' flashed
CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7 | VT102 | Offline | ttyUSB0
# Build android
ODROID-U3 Android-4.4.4 (kitkat)
$ ./build_android odroidu
$ ./build_android.sh odroidu
Build android for odroidu
including device/generic/mips/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/sscr/sc1_dvt1/vendorsetup.sh
including device/asus/grouper/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/deb/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/lge/hammerhead/vendorsetup.sh
including device/hardkernel/odroidx/vendorsetup.sh
including device/hardkernel/odroidu/vendorsetup.sh
including device/hardkernel/odroidx2/vendorsetup.sh
including sdk/bash_completion/adb.bash
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
TARGET_PRODUCT=odroidu
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a9
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=out
============================================
[[[[[[[ Build android platform ]]]]]]]
make -j1 PRODUCT-odroidu-eng
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
TARGET_PRODUCT=odroidu
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a9
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-32-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=out
============================================
Checking build tools versions...
including ./art/Android.mk ...
including ./bionic/Android.mk ...
including ./bootable/diskinstaller
including ./abi/cpp/Android.mk ...
write images
$ fastboot flash system out/target/product/odroidu/system.img
$ fastboot flash userdate out/target/product/odroidu/userdate.img
$ fastboot flash cache out/target/product/odroidu/cache.img
$ fastboot reboot
# Fusing uboot
fusing micro SD
Insert micro SD to PC
$ sudo fdisk -l
Disk /dev/sdd: 4072 MB, 4072669184 bytes
36 heads, 52 sectors/track, 4249 cylinders, total 7954432 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d2157
Device Boot Start End Blocks Id System
/dev/sdd1 2048 7954431 3976192 b W95 FAT32
$ cd device/hardkernel/proprietary/uboot_4412
$ sudo sh ./sd_fusing_4412.sh /dev/sdd
fusing eMMC
boot from microSD
connect eMMC
Exynos4412 # movi init 1
emmc reset...
REVISION: 2.0
Manufacturer TOSHIBA [ 7456MB ]
NAME: S5P_MSHC4
Device: S5P_MSHC4
Manufacturer ID: 11
OEM: 100
Name: 008G9
Tran Speed: 0
Rd Block Len: 512
MMC version 4.0
High Capacity: Yes
Size: 0MB (block: 7456)
Bus Width: 8-bit DDR
Boot Partition Size: 4096 KB
Exynos4412 #
Exynos4412 # pri
baudrate=115200
bootargs=fb_x_res=1280 fb_y_res=720 hdmi_phy_res=720
bootcmd= cfgload; mmc rescan 0:1; mmc rescan 0:2; if run loadbootscript_1; then run bootscript; else if run loadbootscript_2; then run bootscript; else run default_bootcmd; f
bootdelay=1
bootscript=source 40008000
cfg_file_name=boot.ini
cfg_load_base_mem=41000000
cfg_load_device=0
cfg_load_partition=1
cfg_load_partition_type=fat
copy_uboot_emmc2sd=emmc open 0;movi r z f 0 40000000;emmc close 0;movi w f 1 40000000;emmc open 0;movi r z b 0 40000000;emmc close 0;movi w b 1 40000000;emmc open 0;movi r z u 0 40000000;emmc close 0;movi w u 1 ;
copy_uboot_sd2emmc=movi r f 0 40000000;emmc open 1;movi w z f 1 40000000;emmc close 1;movi r b 0 40000000;emmc open 1;movi w z b 1 40000000;emmc close 1;movi r u 0 40000000;emmc open 1;movi w z u 1 40000000;emmc;
default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000
erase_uboot_env=mmc write 0 0x40008000 0x977 0x20;
ethaddr=00:40:5c:26:0a:5b
extra_arg_0=0
extra_arg_1=0
extra_arg_2=0
extra_arg_3=0
gatewayip=192.168.0.1
ipaddr=192.168.0.20
loadbootscript_1=echo >>> Load Boot Script from mmc 0:1 <<<;fatload mmc 0:1 40008000 boot.scr
loadbootscript_2=echo >>> Load Boot Script from mmc 0:2 <<<;fatload mmc 0:2 40008000 boot.scr
netmask=255.255.255.0
serverip=192.168.0.10
usb_invert_clken=0
Environment size: 1706/16380 bytes
Exynos4412 #
Exynos4412 # run copy_uboot_sd2emmc
reading FWBL1 ..device 0 Start 1, Count 30
MMC read: dev # 0, block # 1, count 30 ... 30 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing FWBL1 ..device 1 Start 0, Count 30
MMC write: dev # 1, block # 0, count 30 ... 30 blocks written: OK
completed
eMMC CLOSE Success.!!
reading BL2 ..device 0 Start 31, Count 32
MMC read: dev # 0, block # 31, count 32 ... 32 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing BL2 ..device 1 Start 30, Count 32
MMC write: dev # 1, block # 30, count 32 ... 32 blocks written: OK
completed
eMMC CLOSE Success.!!
reading bootloader..device 0 Start 63, Count 2048
MMC read: dev # 0, block # 63, count 2048 ... 2048 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing bootloader..device 1 Start 62, Count 2048
MMC write: dev # 1, block # 62, count 2048 ... 2048 blocks written: OK
completed
eMMC CLOSE Success.!!
reading 0 TrustZone S/W.. Start 2111, Count 312
MMC read: dev # 0, block # 2111, count 312 ... 312 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing 1 TrustZone S/W.. Start 2110, Count 312
MMC write: dev # 1, block # 2110, count 312 ... 312 blocks written: OK
completed
eMMC CLOSE Success.!!
MMC write: dev # 1, block # 2423, count 32 ... 32 blocks written: OK
Exynos4412 #
emmc reset...
REVISION: 2.0
Manufacturer TOSHIBA [ 7456MB ]
NAME: S5P_MSHC4
Device: S5P_MSHC4
Manufacturer ID: 11
OEM: 100
Name: 008G9
Tran Speed: 0
Rd Block Len: 512
MMC version 4.0
High Capacity: Yes
Size: 0MB (block: 7456)
Bus Width: 8-bit DDR
Boot Partition Size: 4096 KB
Exynos4412 #
Exynos4412 # pri
baudrate=115200
bootargs=fb_x_res=1280 fb_y_res=720 hdmi_phy_res=720
bootcmd= cfgload; mmc rescan 0:1; mmc rescan 0:2; if run loadbootscript_1; then run bootscript; else if run loadbootscript_2; then run bootscript; else run default_bootcmd; f
bootdelay=1
bootscript=source 40008000
cfg_file_name=boot.ini
cfg_load_base_mem=41000000
cfg_load_device=0
cfg_load_partition=1
cfg_load_partition_type=fat
copy_uboot_emmc2sd=emmc open 0;movi r z f 0 40000000;emmc close 0;movi w f 1 40000000;emmc open 0;movi r z b 0 40000000;emmc close 0;movi w b 1 40000000;emmc open 0;movi r z u 0 40000000;emmc close 0;movi w u 1 ;
copy_uboot_sd2emmc=movi r f 0 40000000;emmc open 1;movi w z f 1 40000000;emmc close 1;movi r b 0 40000000;emmc open 1;movi w z b 1 40000000;emmc close 1;movi r u 0 40000000;emmc open 1;movi w z u 1 40000000;emmc;
default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000
erase_uboot_env=mmc write 0 0x40008000 0x977 0x20;
ethaddr=00:40:5c:26:0a:5b
extra_arg_0=0
extra_arg_1=0
extra_arg_2=0
extra_arg_3=0
gatewayip=192.168.0.1
ipaddr=192.168.0.20
loadbootscript_1=echo >>> Load Boot Script from mmc 0:1 <<<;fatload mmc 0:1 40008000 boot.scr
loadbootscript_2=echo >>> Load Boot Script from mmc 0:2 <<<;fatload mmc 0:2 40008000 boot.scr
netmask=255.255.255.0
serverip=192.168.0.10
usb_invert_clken=0
Environment size: 1706/16380 bytes
Exynos4412 #
Exynos4412 # run copy_uboot_sd2emmc
reading FWBL1 ..device 0 Start 1, Count 30
MMC read: dev # 0, block # 1, count 30 ... 30 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing FWBL1 ..device 1 Start 0, Count 30
MMC write: dev # 1, block # 0, count 30 ... 30 blocks written: OK
completed
eMMC CLOSE Success.!!
reading BL2 ..device 0 Start 31, Count 32
MMC read: dev # 0, block # 31, count 32 ... 32 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing BL2 ..device 1 Start 30, Count 32
MMC write: dev # 1, block # 30, count 32 ... 32 blocks written: OK
completed
eMMC CLOSE Success.!!
reading bootloader..device 0 Start 63, Count 2048
MMC read: dev # 0, block # 63, count 2048 ... 2048 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing bootloader..device 1 Start 62, Count 2048
MMC write: dev # 1, block # 62, count 2048 ... 2048 blocks written: OK
completed
eMMC CLOSE Success.!!
reading 0 TrustZone S/W.. Start 2111, Count 312
MMC read: dev # 0, block # 2111, count 312 ... 312 blocks read: OK
completed
eMMC OPEN Success.!!
!!!Notice!!!
!You must close eMMC boot Partition after all image writing!
!eMMC boot partition has continuity at image writing time.!
!So, Do not close boot partition, Before, all images is written.!
writing 1 TrustZone S/W.. Start 2110, Count 312
MMC write: dev # 1, block # 2110, count 312 ... 312 blocks written: OK
completed
eMMC CLOSE Success.!!
MMC write: dev # 1, block # 2423, count 32 ... 32 blocks written: OK
Exynos4412 #