레이블이 Exynos5410인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Exynos5410인 게시물을 표시합니다. 모든 게시물 표시

2014년 2월 26일 수요일

How to recovery eMMC u-boot on ODROID

eMMC에 u-boot을 잘 못 fusing하거나 망가져 부팅 할 수 없을 때 복구 방법 또는 다른 제품의 eMMC를 구매 후 사용하는 방법


eMMC의 u-boot 영역은 sd 카드와 달리 PC 상에서 접근 할 수 없습니다.
그래서 eMMC의 u-boot을 복구 하기 위해서는 SD로 부팅 하여 eMMC의 u-boot 영역을 써야 합니다.

eMMC 5.0


3. Exynos5422(ODROD-XU3/4)

http://dn.odroid.com/5422/ODROID-XU3/Android/4.4.4_Alpha_3.0_Oct-05-2015/android-4.4.4-alpha-3.0-sd_installer-odroidxu3-20151005.img.zip.md5sum


Windows 사용자는 아래 링크에서 프로그램을 받아 씁니다.

Linux 사용자들은 dd 명령으로 write합니다.
$ sudo dd if=./exynos4412_emmc_recovery_from_sd.img of=/dev/sdX

아래의 사진과 같이 sd 부팅으로 스위치를 바꾸고 전원을 넣으면 자동 복구 합니다.

ODROID-XU4

ODROID-XU3/LITE




수동으로 u-boot만 복구하려면 부팅 후 USB-UART Module Kit을 연결하고 u-boot prompt에서 pri를 입력해 봅니다.

Exynos5410 # pri
baudrate=115200
bootargs=fb_x_res=1280 fb_y_res=720 vout=hdmi led_blink=1
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          ;
bootdelay=1
bootscript=source 40008000
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;
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;
default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;bootz 40008000
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
loadbootscript_3=echo >>> Load Boot Script from mmc 1:1 <<<;fatload mmc 1:1 40008000 boot.scr
loadbootscript_4=echo >>> Load Boot Script from mmc 1:2 <<<;fatload mmc 1:2 40008000 boot.scr
rootfslen=100000
stderr=serial
stdin=serial
stdout=serial

Environment size: 1565/16380 bytes
Exynos5410 # 

eMMC를 연결하고 run copy_uboot_sd2emmc 를 입력하면 복구 됩니다.


Exynos5410 # 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 write: 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 write: OK
completed
eMMC CLOSE Success.!!
reading bootloader..device 0 Start 63, Count 656 
MMC read: dev # 0, block # 63, count 656 ... 656 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 656 
MMC write: dev # 1, block # 62, count 656 ... 656 blocks write: OK
completed
eMMC CLOSE Success.!!
reading 0 TrustZone S/W.. Start 719, Count 512 
MMC read: dev # 0, block # 719, count 512 ... 512 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 718, Count 512 
MMC write: dev # 1, block # 718, count 512 ... 512 blocks write: OK
completed
eMMC CLOSE Success.!!

MMC write: dev # 1, block # 1231, count 32 ... 32 blocks write: OK

Exynos5410 # 


2. Exynos4412(ODROD-X/X2/Q/Q2/U2/U3)

2.1 수동 복구 방법

sd로 부팅 후 u-boot prompt에서 아래와 같이 입력한다.
# movi init 1
# fastboot emmc

PC 터미날에서 android 소스를 풀면 최신 u-boot binaries들이 있습니다.
device/hardkernel/proprietary/uboot/

-rw-r--r-- 1 codewalker codewalker  15360  3월 29  2013 bl1.bin
-rw-r--r-- 1 codewalker codewalker  14592  2월 14 12:43 bl2.bin
-rwxr-xr-x 1 codewalker codewalker    567  2월  3 14:10 emmc_fastboot_fusing.sh
-rw-r--r-- 1 codewalker codewalker   7906  2월  9 14:44 README.TXT
-rwxr-xr-x 1 codewalker codewalker   1240  2월  3 14:10 sd_fusing_4412.sh
-rw-r--r-- 1 codewalker codewalker 159744  3월 29  2013 tzsw.bin
-rw-r--r-- 1 codewalker codewalker 349136  2월 14 12:43 u-boot.bin

또는 github에서 받으시면 됩니다.

아래의 스크립트를 실행하면 자동으로 4개의 bin을 fusing합니다.
$ ./emmc_fastboot_fusing.sh
$ fastboot reboot

ODROID-Q/Q2는 아래 이미지를 받아 sd에 write합니다.
http://dn.odroid.com/4412/Android/4.1.2_Feb-12-2014/ODROID-Q/d2emmc_installer.img.zip
http://dn.odroid.com/4412/Android/4.1.2_Feb-12-2014/ODROID-Q2/d2emmc_installer.img.zip

sd를 연결하고 스위치를 사진과 같이 하시면 sd로 부팅이 됩니다. 동일하게 eMMC를 복구 하시면 됩니다.


2.2 자동으로 복구 하기

포럼에 설명이 잘되어 있습니다.
http://forum.odroid.com/viewtopic.php?f=53&t=969

복구용 sd 이미지를 다운 받습니다.
http://forum.odroid.com/download/file.php?id=1089

Windows 사용자는 아래 링크에서 프로그램을 받아 씁니다.
http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&tag=&bid=199
Linux 사용자들은 dd 명령으로 write합니다.
$ sudo dd if=./exynos4412_emmc_recovery_from_sd.img of=/dev/sdX

sd를 꼽고 eMMC를 제거한고 전원을 넣습니다.


U-Boot 2010.12-svn (Jan 12 2014 - 12:55:58) 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 : 2                                               
TrustZone Enabled BSP                                                           
BL1 version: 20121128                                                           
                                                                                
                                                                                
Checking Boot Mode ... SDMMC                                                    
MMC Device 0: 7647 MB                                                           
MMC Device 1 not found                                                          
*** Warning - using default environment                                         
                                                                                
USB3503 NINT = OUTPUT LOW!                                                      
ModeKey Check... run normal_boot                                                
No ethernet found.                                                              
Hit any key to stop autoboot:  0                                                
do_fat_cfgload : cmd = fatload mmc 0:1 0x41000000 boot.ini                      
reading boot.ini                                                                
2701 bytes read in 25 ms (105.5 KiB/s)                                          
Find boot.ini file from FAT Area!!                                              
boot.ini command = setenv flag_true                1                            
boot.ini command = setenv flag_false               0                            
boot.ini command = setenv system_memory_end        80000000                     
boot.ini command = setenv emmc_update_from_sdmmc   1                            
boot.ini command = setenv emmc_wait    'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run emmc_wait                                                
Insert eMMC Module before usb connect....

debug 터미날을 보시면 위와 같이 대기 상태로 됩니다.



전원을 넣으면 아래와 같이 전원 Red LED가 켜지고 옆에 ALIVE Blue LED가 깜빡 거립니다.


그럼 eMMC를 연결하고 USB를 연결 하시면 됩니다.
아래와 같이 eMMC를 복구하고 전원이 꺼집니다.



Trigger Detected... read boot.scr form SDMMC & boot 
boot.ini command = setenv movi_init    'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run movi_init
emmc reset...
REVISION: 2.0
Manufacturer TOSHIBA [ 15028MB ]
NAME: S5P_MSHC4
Device: S5P_MSHC4
Manufacturer ID: 11
OEM: 100
Name: 016G9 
Tran Speed: 0
Rd Block Len: 512
MMC version 4.0
High Capacity: Yes
Size: 0MB (block: 15028)
Bus Width: 8-bit DDR
Boot Partition Size: 4096 KB
boot.ini command = setenv update_device_num    1
boot.ini command = setenv load_device_num      0
boot.ini command = setenv load_partition_num   1
boot.ini command = setenv emmc_open    'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run emmc_open;
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.!
boot.ini command = fatload mmc 0:1 40008000 update/bl1.bin;
reading update/bl1.bin
15360 bytes read in 29 ms (516.6 KiB/s)
boot.ini command = setenv bl1_write    'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run bl1_write
writing FWBL1 ..device 1 Start 0, Count 30 
MMC write: dev # 1, block # 0, count 30 ... 30 blocks written: OK
completed
boot.ini command = fatload mmc 0:1 40008000 update/bl2.bin;
reading update/bl2.bin
14592 bytes read in 32 ms (445.3 KiB/s)
boot.ini command = setenv bl2_write    'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run bl2_write
writing BL2 ..device 1 Start 30, Count 32 
MMC write: dev # 1, block # 30, count 32 ... 32 blocks written: OK
completed
boot.ini command = fatload mmc 0:1 40008000 update/u-boot.bin;
reading update/u-boot.bin
348936 bytes read in 37 ms (9 MiB/s)
boot.ini command = setenv uboot_write  'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run uboot_write
writing bootloader..device 1 Start 62, Count 2048 
MMC write: dev # 1, block # 62, count 2048 ... 2048 blocks written: OK
completed
boot.ini command = fatload mmc 0:1 40008000 update/tzsw.bin;
reading update/tzsw.bin
159744 bytes read in 28 ms (5.4 MiB/s)
boot.ini command = setenv tzsw_write   'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run tzsw_write
writing 1 TrustZone S/W.. Start 2110, Count 312 
MMC write: dev # 1, block # 2110, count 312 ... 312 blocks written: OK
completed
boot.ini command = setenv emmc_close   'if itest.s ${emmc_update_from_sdmmc} -e'
boot.ini command = run emmc_close;
eMMC CLOSE Success.!!
boot.ini command = mmc write 1 0x40008000 0x977 0x20;

MMC write: dev # 1, block # 2423, count 32 ... 32 blocks written: OK

boot.ini command = fastboot poweroff

이후 최신 버전 emmc_self_installer.img를 받아 쓰시면 됩니다.
http://dn.odroid.com/4412/Android/

ODROID-Q/Q2는 최신 버전의 sd2emmc_installer.img로 sd 부팅 하시면 자동으로 eMMC를 복구 합니다.


3. Exynos4412(ODROD-XU)

4.1 복구 방법

아래 링크의 최신 sd 이미지를 받습니다.


위에 설명한 동일한 방법으로 sd에 씁니다.

아래의 사진과 같이 sd 부팅으로 스위치를 바꾸고 전원을 넣으면 자동 복구 합니다.





sd로 부팅 후 u-boot prompt에서 pri를 입력해 봅니다.

Exynos5410 # pri
baudrate=115200
bootargs=fb_x_res=1280 fb_y_res=720 vout=hdmi led_blink=1
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          ;
bootdelay=1
bootscript=source 40008000
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;
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;
default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;bootz 40008000
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
loadbootscript_3=echo >>> Load Boot Script from mmc 1:1 <<<;fatload mmc 1:1 40008000 boot.scr
loadbootscript_4=echo >>> Load Boot Script from mmc 1:2 <<<;fatload mmc 1:2 40008000 boot.scr
rootfslen=100000
stderr=serial
stdin=serial
stdout=serial

Environment size: 1565/16380 bytes

Exynos5410 # 

eMMC를 연결하고 run copy_uboot_sd2emmc 를 입력하면 복구 됩니다.



Exynos5410 # 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 write: 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 write: OK
completed
eMMC CLOSE Success.!!
reading bootloader..device 0 Start 63, Count 656 
MMC read: dev # 0, block # 63, count 656 ... 656 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 656 
MMC write: dev # 1, block # 62, count 656 ... 656 blocks write: OK
completed
eMMC CLOSE Success.!!
reading 0 TrustZone S/W.. Start 719, Count 512 
MMC read: dev # 0, block # 719, count 512 ... 512 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 718, Count 512 
MMC write: dev # 1, block # 718, count 512 ... 512 blocks write: OK
completed
eMMC CLOSE Success.!!

MMC write: dev # 1, block # 1231, count 32 ... 32 blocks write: OK


Exynos5410 # 


스위치를 eMMC 부팅으로 바꾸고 부팅 하시면 됩니다.

3.2 자동 복구 방법

http://dn.odroid.com/ODROID-XU/Recovery_0.5/emmc_installer.zip

위에 이미지를 받아 sd에 write하고 sd와 eMMC를 연결 후 sd 부팅하면 자동으로  eMMC의 u-boot이 복구 됩니다.

2013년 9월 15일 일요일

Portrait screen for ODROID-XU

edit /system/build.pro
add this line.

persist.demo.hdmirotation=portrait



edit /sdcard/boot.ini

ODROIDXU-UBOOT-CONFIG

setenv fb_x_res     "1080"
setenv fb_y_res     "1920"

setenv vout         "hdmi"

setenv left     "56"
setenv right    "24"
setenv upper    "3"
setenv lower    "3"
setenv hsync    "14"
setenv vsync    "3"

setenv hdmi_phy_res "1080"

setenv led_blink    "1"


2013년 9월 3일 화요일

ODROID-XU Update.zip included GMS(Gapps)01-Dec-2013

Last recovery firmware
http://dn.odroid.com/ODROID-XU/Firmware/01-10-2014/

last update firmware
http://dn.odroid.com/ODROID-XU/Firmware/02-13-2014/

and GApps Installer
http://codewalkerster.blogspot.kr/2013/11/universal-1-click-gapps-installer-for.html


https://drive.google.com/folderview?id=0B5aZmgmqP9rORjhTbVhqYVgySlE&usp=sharing

https://www.dropbox.com/s/amgthsz8tjfsd8b/update.zip

https://www.dropbox.com/s/amgthsz8tjfsd8b/update.zip

https://www.dropbox.com/s/szu2yax7ew08p6q/update.zip.md5sum

https://www.dropbox.com/s/szu2yax7ew08p6q/update.zip.md5sum

01 Dec 2013
support USB Gps attached by serial modem(like ttyACM or ttyUSB)

26 Nov 2013
fix 720P usb camera problem(UVC).

13 Nov 2013
support HSDPA USB dongle Modem(huawei e173)
test version.



http://www.alibaba.com/product-gs/1009044157/TJ_W803_Similar_specs_Same_Quality.html?s=p

07 Nov 2013

Asix Ethernet Adapter bug Fix.
The lock that would cause the usb3 to gigabit lan adapter is now fixed and merged.
http://git.odroid.in/odroid/linux/commit/85f0fa36e8117bd831ee9737d899f3fe5890eaac
reverse portrait screen.
ODROID-XU issue where 48kHz audio couldn't be played via alsa is now fixed.


02 Nov 2013
support UHS class for microSD.

25 Oct 2013
fix this issue.
http://forum.odroid.com/viewtopic.php?f=63&t=2111

19 Oct 2013
Update for Expansion board.
Exansion board example app.
https://www.dropbox.com/s/tbffdto7nulafuk/ExpansionBoardExample.apk



10 Oct 2013
for Kinect.
add feature CONFIG_USB_DEVICEFS.
add node for Kinect in uevnet.odroidxu.rc
add feature CONFIG_HID_APPLE.

04 Oct 2013
fix screen color problem.
http://forum.odroid.com/viewtopic.php?f=73&t=2363#p18874

01 Oct 2013
Enable ethernet on automatically.

25 Sep 2013
If ax88179(gigabit) Ethernet via USB 3.0 and smsc95xx(10/100) Ethernet via USB 2.0 is connected at the same time, then control ax88179 modules first.
It is enabled to set static IP setting for gigabit Ethernet.

23 Sep 2013
add ethernet setting for static IP


16 Sep 2013
1. fix OdroidUpdate app.
After validate update.zip, Extract update.zip automatically.
2. remove EDID function, just set HDMI phy from boot.ini.
Must update boot.ini
Example, here
http://dn.odroid.com/ODROID-XU/boot.ini/09-16-2013/




9 Sep 2013
Download update.zip and update.zip.md5sum





Move update.zip and update.zip.md5sum file from Download folder to root.




Unzip update.zip


There is update folder.


Run ODROID-XU updater app.


Click "Validate file" button.


Checking option.



and start update.

booting...


2013년 8월 5일 월요일

ODROID-XU와 big.LITTLE

오드로이드 포럼에 Exynos5410의 big.LITTLE의 문제에 대해서 글이 하나 있습니다.
http://forum.odroid.com/viewtopic.php?f=65&t=1884

Exynos5410의 CCI-400 버그로 big.LITTLE의 클러스트 마이그레이션밖에 동작하지 않습니다. 그래서 이번에 수정되어 나온 Exynos5420과 비교하며 많은 개발자들이 아쉬워하고 있습니다.

IKS(In-Kernel Switcher)가 동작하는 CPU 마이그레이션과 클러스터 마이그레이션은 차이는 DVFS에 의해 특정 clock으로 올라가면 전체가 A15로 동작하지만 Core별로 A7과 A15를 선택적으로 동작 시킬 수 있다는 것입니다. 따라서 클러스커 마이그레이션과 달리 4개의 core가 다 A15로 동작할 필요가 없기 때문에 전력 효율이 높다는 장점이 있습니다. 하지만 big.LITTLE 설명한 것 처럼 저전력과 관련된 설계이고 오드로이드와 같이 A/C 전원이 항상들어가는 시스템에서는 아무런 의미가 없습니다.
Exynos5250은 A15 dual-core이고 Exynos5410은 A15 quad-core라 생각하시면 간단 할 것 같습니다.

물론 Exynos5420이 더 높은 clock과 GPU 성능이 높습니다. 하지막 아직 상용 제품에 출시 되지 않았습니다. 개발 보드로 나오기 위해서는 더 많은 시간이 필요할 것입니다.




big.LITTLE의 최후 목표인 MP모드는 커널의 scheduler의 재설계의 문제 이기 때문에 CCI의 버그와는 무관한 것으로 이해하고 있습니다. 아직 MP모드로의 실제 동작은 먼 얘기로 알고 있습니다.

Apple에서도 다음 CPU에 big.LITTLE을 사용하다고 합니다. Apple이야 자체 커널이 있으니 잘 해결하겠죠??? Apple의 big.LITTLE의 행보가 기대 됩니다.

참고한 사이트 입니다.
http://gamma0burst.tistory.com/m/613