1/02/2014

Fastboot 사용 및 Linux에서 Image Control

1. Fastboot  기본설명 

처음에 Fastboot 사용법을 정확히 숙지하지 못해, 좀  당황했는데  이제 좀 알겠다.
uboot에서 fastboot 모드로 진입을 하여, 윈도우에서 연결하여 이를 사용하는 방식이다.
그래서 uboot에서 fastboot를 제공하지 않으면 이를 실행할 수가 없다.

핸드폰 일 경우, 볼륨다운+전원버튼을 기기가 켜질때까지 누르고 있으면, 화면이
바뀐다고한다. 이를 bootloader모드라고 하며 이때 window에서 역시 접근이 가능하다.



2. U-BOOT에서 FASTBOOT MODE 설정 ( bootloader 모드)

아래와 같이 uboot에서 fastboot command를 입력 후 fastboot 모드로 진입이 되며,
Window의 fastboot 연결을 기다린다.

U-Boot 2010.12-svn (Nov 28 2012 - 11:35:59) for ODROID4412


CPU: S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
APLL = 1000MHz, MPLL = 880MHz
DRAM:  2 GiB

PMIC VERSION : 0x00, CHIP REV : 2

BL1 version: N/A (TrustZone Enabled BSP)


Checking Boot Mode ... SDMMC
MMC Device 0: 7695 MB
MMC Device 1 not found
*** Warning - using default environment

ModeKey Check... run normal_boot 
Net:   No ethernet found.
Hit any key to stop autoboot:  0 
ODROID4412 # 
ODROID4412 # fastboot
[Partition table on MoviNAND]
ptn 0 name='fwbl1' start=0x0 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=0x1000000(~16384KB) (use hard-coded info. (cmd: movi))
ptn 6 name='system' start=0x43D2200 len=0x380BDE00(~918263KB) 
ptn 7 name='userdata' start=0x3C490000 len=0x400D9000(~1049444KB) 
ptn 8 name='cache' start=0x7C569000 len=0x801B200(~131180KB) 
ptn 9 name='fat' start=0x84584200 len=0x4C87BE00(~1253871KB) 
Insert a OTG cable into the connector!




Fastboot 기본사용법
https://github.com/red-root/PortingARMLinux/wiki/Fastboot-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95
http://www.jinhaesi.com/bbs/skin/ggambo7002_board/print.php?id=jaewonquestion&no=62


3. Fastboot 기본 사용법

Android Device의 Flash를 Erase,Write 및 Reboot  조절이 가능하다.
  • fastboot --help  기본사용법

fastboot 

command :

  • flash [ ] :  해당파일을 partition에 write한다.
  • erase                      : partition 을 지운다.
  • format                     : partition을 format 한다.
  • boot [ ]     : 해당 kernel와 ramdisk를 download한 후 boot한다.  
  • devices                                    :  연결된 device list를 보여준다.

options:
  •  -w :   erase userdata and cache

기본예제들
 
기본이미지 write

   fastboot flash kernel arch/arm/boot/zIamge
   fastboot flash kernel arch/arm/boot/zImage
   fastboot flash ramdisk out/target/product/odroidx2/ramdisk-uboot.img
   fastboot flash system out/target/product/odroidx2/system.img


 
Ref.  (omap에서 사용하는 fastboot )
http://omappedia.org/wiki/Android_eMMC_Booting


Ref.
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=&bid=1564


4. Linux 에서 Image Control 


dd 명령어 사용

  • if         = input file
  • of        = output file 
  • iflag     = input flag, direct 와 dsync 있다.
  • oflag    = output flag 
  • seek    =  output file 시작 위치 기준으로 block 단위로 넘어간다. 
  • skip     =  input file 시작 위치   기준으로 block 단위로 넘어간다.   
  • bs       =  한번에 처리할 bytes, 이를 block   ( ibs , obs 개별 설정도 가능)
  • count  =  이를 몇번 처리할 총 횟수    ( bs * count  용량계산 512x32 =  16k bytes)
                   
# sudo dd iflag=dsync oflag=dsync if=./u-boot-bl1.bin of=/dev/sdb seek=1  
  // u-boot-bl1.bin 파일을 /dev/sdb 에 1부터 write

# sudo dd iflag=dsync oflag=dsync if=./u-boot.bin of=/dev/sdb seek=33 
  // u-boot.bin 파일을 /dev/sdb에 33block부터 write 

# sudo dd iflag=dsync oflag=dsync if=/dev/zero of=/dev/sdb bs=512 count=32 
 //  /dev/sdb를 16k (512 x 32 ) 만큼 지운다.                

# dd iflag=dsync oflag=dsync if=./dump-img.img of=/dev/sde bs=512 count=1024
 //512kbyt 만큼 /dev/sde에 dump-img.img write

# dd iflag=dsync oflag=dsync of=./dump-img.img if=/dev/sde bs=512 count=1024 
 //512kbyt 만큼 /dev/sde에 dump-img.img read

# dd if=/dev/mtd2 of=./default_env.img 
 // 기본적인 read

http://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd

http://www.mapoo.net/entry/dd-%EC%98%88%EB%A5%BC-%ED%86%B5%ED%95%9C-%EC%98%B5%EC%85%98%EC%9D%98-%EC%9D%98%EB%AF%B8

http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidq2&kind=&bid=2482


기타 명령어

  #  eraseall /dev/mtd3
  #  hexdump -C default_env.img | more


http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip

http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroida&kind=9&bid=563

http://blog.naver.com/PostView.nhn?blogId=dong880510&logNo=140162582089
http://www.vim.org/vimscriptlinks.php