[XU4] ADB를 이용한 Firmware Upload 방법.(system.img, zImage-dtb, etc)


Odroid-XU4 같은 경우에는 Hardware 적으로 USB-OTG 를 지원하지 않는다.

그래서 TCP를 이용하여, ADB 연결 후, Firmware를 업로드 후, UBoot 모드에서 업데이트를 하여야 한다.


여기서 본인은 아래의 사이트를 참고하였으나, 결국은 혼자서 많이 해맸다.

다른 분들은 이 글을 참고하여, 본인과 같이 해매지 않길 바라며 정리합니다.


참고 사이트 

 -> https://wiki.odroid.com/odroid-xu4/software/building_android


XU4

How to write images without fastboot on ODROID-XU4(android)

You can not use fastboot on ODROID-XU4, because It doesn't have USB otg port.

First! setup adb connection or copy image to fat partition.

Push image to ext4 partition.

$ adb push xxxx.img /sdcard/
$ adb reboot

Enter u-boot prompt with USB-UART kit connection.

U-Boot 2017.05-12209-g43745f3 (Aug 17 2017 - 09:37:39 +0900) for ODROID-XU4

CPU:   Exynos5422 @ 800 MHz
Model: Odroid XU4 based on EXYNOS5422
Board: Odroid XU4 based on EXYNOS5422
Type:  xu3
DRAM:  2 GiB
MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
MMC Device 0 (eMMC): 14.7 GiB
Info eMMC rst_n_func status = enabled
MMC Device 1 ( SD ): 7.4 GiB

*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
Press quickly 'Enter' twice to stop autoboot:  0 
Exynos5422 # 
Exynos5422 # 
Exynos5422 # ext4load mmc 0:3 40000000 media/0/system.img
379342968 bytes read in 13284 ms (27.2 MiB/s)
Exynos5422 # fastboot flash system 40000000 0


우선 참고 사이트를 참고하여, 작업을 하면, u-boot에서 위와 같이 정상적으로 파일을 못 읽어 오는 경우가 있습니다.

저 같은 경우에는 SD카드에 직접 펌웨어를 올려서 해보았습니다만, Read Fail 이 계속 발생이 되었습니다.


그럴 경우에는 u-boot 모드에 진입하셔서, 아래의 명령을 통하여, 정상적으로 파일들이 업로드가 되었는지 확인하여야 합니다.

확인 방법은 다음과 같습니다.


# fatls mmc 0:1 / 


위의 명령을 치시고, 이미지를 올리신 파일이 올라가 있는지를 확인합니다.

기본적으로는 boot.ini 파일만 존재합니다.


만약 존재 하지 않는다면, 아래의 Command를 이용하여, 재부팅 합니다.


# reset


그리고 부팅 완료 후에는 아래의 명령을 통하여, boot.ini 파일이 존재하는 폴더를 검색합니다.


# find . -name 'boot.ini'


그리고 해당 파일이 존재하는 폴더에 업데이트 하고자 하는 펌웨어 파일을 업로드 합니다.

본인은 다음의 경로였습니다.


/internal/


adb 명령을 통하여, 위의 경로에 파일을 업로드 하시고, u-boot 로 부팅 후, 참고 사이트 처럼 작업을 하시면,

정상적으로 파일이 로드 되는 것을 확인하실 수 있습니다.


위의 경로를 찾는 것이 중요한데, 해당 경로를 찾아야 하는 이유는 참고사이트의 내용 처럼, fat 파티션 이여야만 하기 때문입니다.


그리고, 커널 쪽 작업을 할 경우에는, 참고사이트 처럼 'adb push xxxx.img /sdcard/' 와 같이 하실 필요 없이 

다음과 같이 zImage-dtb 를 업로드 하시면 됩니다.

본인은 다음과 같이 하였습니다.


adb push zImage-dtb /internal/


그리고 u-boot 모드에서 원하는 펍웨어만 업데이트 할 경우엔 다음의 파일을 참고하여, 입력하면 된다.


참고 소스 파일

 : /Odroid_AOSP/xu4_installer/sd2emmc/boot.ini

   /Odroid_AOSP/xu4_installer/sd/boot.ini

   /Odroid_AOSP/xu4_installer/emmc/boot.ini


Kernel만 업데이트 할 경우. (아래의 두개의 명령어만 입력)
   fatload mmc 0:1 40008000 zImage-dtb
   movi write kernel 0 40008000


마지막으로 u-boot 모드로 진입하는 방법은 다음과 같습니다.


재부팅 시, 커널 부팅 직전에 [Enter] Key를 두들겨 주시면 됩니다.

그러면 [Exynos5422 #] 프롬프트가 발생이 됩니다.


전체적인 내용을 다시 정리하면 다음과 같습니다.

1. boot.ini 파일이 존재하는 FAT 파티션을 검색한다.

2. 1에서 찾은 경로에 원하는 펌웨어를 adb push 를 이용하여 업로드 한다.

     (참고사이트와는 동일할 필요가 없으며, Kernel 같은 경우에는 zImage-dtb 파일을 업로드하면 된다.)

3. 재부팅 후, u-boot 모드로 진입하여, 업데이트 하고자 하는 펍웨어만 업로드 후, Reset 한다.


여기까지 읽어주셔서 감사합니다.

+ Recent posts