본문 바로가기

Embedded/ODROID-X2

[ODROID-X2] U-Boot, Kenel, Android Fusing

먼저 SD카드를 Format 합니다.

1. SD Card Format

2. SD Card Mount Check

VirtualBox의 우측하단의 USB장치중에서 Generic Mass Storage Device를 클릭하여 VirtualBox가 인식하도록 합니다.

SD카드 연결 확인은 sudo fdisk -l 명령어를 사용합니다.

$ sudo fdisk -l


3. SD Card unmount & uboot fusing

위의 그림은 sd카드가 /dev/sdb1에 마운드 된것을 확인 할 수 있습니다.

mount된 저장장치를 umount 해제하고 uboot 이미지 파일이 존재하는 폴더로 이동합니다. 

$ sudo umount /dev/sdb*

uboot_hardkernel/sd_fuse 폴더로 이동한 후 uboot 이미지 파일을 sd카드에 fusing합니다.

./sd_fusing.sh /dev/sdb

$ sync

uboot fusing후 SD카드를 카드리더기에서 ODROID-X2 보드의 SD슬롯에 삽입합니다.

4. uboot booting 확인

Ubuntu에서 minicom이나 Windows에서 putty을 준비합니다.

4.1 minicom 설치

Virtualbox의 우측 USB장치 icon을 클릭하신 후 usb-to-serial 장치를 클릭하여 Ubuntu에 연결 시킵니다.

minicom 설정방법은 [기초]Exynos-4210 듀얼코어 프로세서로 배우는 안드로이드 플랫폼 문서를 참고하시기 바랍니다.

minicom의 port와 통신속도를 설정하신 후 Sd-card를 ODROID-X2에서 장착하신 후 보드 전원을 인가하여 정상적으로 부팅되는지 확인합니다.

4.2 putty 다운로드 및 설정

http://www.chiark.greenend.org.uk/~sgtatham/putty/에서 putty 프로그램을 다운받습니다.

ODROID-X2 board의 uart에 usb-to-serial 장치를 연결하 신 후 uboot가 로그를 확인합니다.

Uart 속도는 115200으로 맞추시면 됩니다.


5. Kernel fusing

u-boot로 먼저 부팅하신 후 진행하여야 합니다. 

자세한 사항은 하드커널의 http://dev.odroid.com/projects/ics/wiki/FrontPage?action=show#s-7.4 사이트를 참고하십시오.

5.1 Partition 설정

u-boot prompt 상태에서 

# fdisk -c 0

5.2 FAT Format

# fatformat mmc 0:1


5.3 Kernel Image fusing

u-boot prompt 상태에서 fastboot 명령어를 입력합니다.


Virtualbox 우측하단의 USB 장치 아이콘에서 마우스 우측버튼을 클릭하면 USB장치가 보입니다.

여기서 Google, Inc ndroid 1.0 [0100]을 클릭하여 Ubuntu가 인식할 수 있도록 합니다.

USB장치가 연결되었는지 확인하는 방법은 lsusb 명령을 입력하게 되면 연결된 USB장치들이 나열되게 됩니다.

$ lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet


Ubuntu terminal창에서 아래 명령어를 입력합니다.

$fastboot flash kernel arch/arm/boot/zImage

만약 fastboot: command not found 라는 에러 메세지가 보이신다면 fastboot 툴이 설치되지 않았기 때문입니다.

adb와 fastboot 툴의 설치 방법은 [ODROID-X2] 리눅스 개발환경 설정을 참고하시기 바랍니다.




6. Android fusing

android image을 fusing하기 위해서는 u-boot mode로 부팅해야 합니다.

보드에 전원을 인가한 후 UART창에서 키보드의 키를 누르게 되면 u-boot prompt상태로 부팅합니다.

#fastboot을 입력하여 ODROID_X2보드가 android image을 fusing할 수 있게 합니다.

Virtualbox 우측하단의 USB 장치 아이콘에서 마우스 우측버튼을 클릭하면 USB장치가 보입니다.

여기서 Google, Inc ndroid 1.0 [0100]을 클릭하여 Ubuntu가 인식할 수 있도록 합니다.

android 소스 폴더로 이동한 후 


Userdata & cache partition format

$ fastboot -w

erasing 'userdata'...
OKAY [ 14.960s]
formatting 'userdata' partition...
Erase successful, but not automatically formatting.
File system type  not supported.
OKAY [  0.005s]
erasing 'cache'...
OKAY [  4.621s]
formatting 'cache' partition...
Erase successful, but not automatically formatting.
File system type  not supported.
OKAY [  0.005s]
finished. total time: 19.591s

userdata partition이 없을 경우에는 아래와 같은 메세지가 보이게 됩니다. 무시하고 다음으로 넘어 가시면 됩니다.

erasing 'userdata'...
FAILED (remote: failed to erase partition)
finished. total time: 0.008s

Flash RAM disk image
$ fastboot flash ramdisk out/target/product/odroidx2/ramdisk-uboot.img

sending 'ramdisk' (163 KB)...
OKAY [  0.042s]
writing 'ramdisk'...
OKAY [  0.033s]
finished. total time: 0.075s

Flash Android image
$ fastboot flash system out/target/product/odroidx2/system.img

sending 'system' (217800 KB)...

OKAY [ 41.074s]

writing 'system'...

OKAY [ 24.429s]

finished. total time: 65.503s

Flash Userdata image

$ fastboot flash userdata out/target/product/odroidx2/userdata.img

ODROID-X2 ReBooting

다운로드가 완료가 되면

$ fastboot reboot 명령으로 장치를 Rebooting 시킨 후 Android가 정상적으로 부팅하면 완료가 된 것입니다. 


7. System image 크기가 파티션 보다 클경우

BoardConfig.mk 파일을 보시면 system.img 사이즈를 정하는 곳이 있습니다.

TARGET_USERIMAGES_USE_EXT4 := true

BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1073741824

BOARD_USERDATAIMAGE_PARTITION_SIZE := 2147483648

BOARD_CACHEIMAGE_PARTITION_SIZE := 134217728

BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4

BOARD_FLASH_BLOCK_SIZE := 4096


partition 은 u-boot에서 아래와 같이 입력 하시면 됩니다.

# fdisk -c 0 1024 2048 128 

순서는 system | userdata | cache | fat 인데 fat 값은 자동으로 나머지 최대 크기로 할당 됩니다.