1. UBOOT의 fastboot 명령
- Uboot의 fastboot 명령어
=> fastboot --help fastboot - run as a fastboot usb or udp device Usage: fastboot [-l addr] [-s size] usb <controller> | udp addr - address of buffer used during data transfers (0x98000000) size - size of buffer used during data transfers (0x19000000)
- Uboot Fastboot Mode 설정
fastboot usb 0을 설정 후 Window에서 USB Host에서 Board USB Gadget Download 생성됨
관련내용참조
https://m.blog.naver.com/PostView.nhn?blogId=searphiel9&logNo=221367977833&proxyReferer=https:%2F%2Fwww.google.com%2F
=> fastboot 0 or => fastboot usb 0
1.1 Android UBOOT CONFIG 관련설정
Android Board에서 Uboot로 Booting 후 fastboot로 Android의 각 Partition을 Wrtie를 진행하면, 제대로 동작되지 않는데, 아래와 같이 Uboot 의 config를 수정
CONFIG_FSL_FASTBOOT=y CONFIG_FASTBOOT_LOCK=y ## 이 부분제거해야 FAST_BOOT_LOCK이 되지 않는다.
UBOOT 관련내용
Android Lock 관련내용
A/B slot 문제
2. Android SDK Tools 설치 및 실행
Android SDK Tool은 아래 사이트에서 각 OS에 맞게 Download가 가능하다
Android Studio가 설치가 되어있다면, SDK Manager에서 설치가능
2.1 Window Android SDK Tools
Uboot에서 Fastboot Mode 진입하면 아래와 같이 USB를 인식하여 Fastboot로 진행이 안됨
- USB Download gadget
- Android Studio->SDK Manager->SDK Tools
- Android SDK Platform-Tools
- Google USB Driver
상위와 같이 설치 했음에도 불구하구 Window 10에서 미인식됨
하지만 이것을 Virtual Box에 Ubuntu 설치하여 이 USB Device를 Virtual Box로 넘기면, Virtual Box의 Ubuntu에서는 동작이 제대로 됨
결론적으로 Window용 USB Driver를 별도 설치를 해야하며, WinUSB를 수정해야하는 것으로 파악된다.
추후 이부분은 더 자세히 알아보도록하자.
2.2 Linux Android SDK Tools 설치 및 실행
Window에서 fastboot가 잘되지 않아 Virtual Box에 Linux 설치 후 테스트 진행했더니, 동작이 잘되어 아래와 같이 적어논다.
- adb와 fastboot 설치
$ sudo apt-get install android-tools-adb android-tools-fastboot
- 기본적인 fastboot 사용법
$ fastboot --help usage: fastboot [ <option> ] <command> commands: update <filename> Reflash device from update.zip. Sets the flashed slot as active. flashall Flash boot, system, vendor, and -- if found -- recovery. If the device supports slots, the slot that has been flashed to is set as active. Secondary images may be flashed to an inactive slot. flash <partition> [ <filename> ] Write a file to a flash partition. flashing lock Locks the device. Prevents flashing. flashing unlock Unlocks the device. Allows flashing any partition except bootloader-related partitions. flashing lock_critical Prevents flashing bootloader-related partitions. flashing unlock_critical Enables flashing bootloader-related partitions. flashing get_unlock_ability Queries bootloader to see if the device is unlocked. flashing get_unlock_bootloader_nonce Queries the bootloader to get the unlock nonce. flashing unlock_bootloader <request> Issue unlock bootloader using request. flashing lock_bootloader Locks the bootloader to prevent bootloader version rollback. erase <partition> Erase a flash partition. format[:[<fs type="">][:[<size>]] <partition> Format a flash partition. Can override the fs type and/or size the bootloader reports. getvar <variable> Display a bootloader variable. set_active <slot> Sets the active slot. If slots are not supported, this does nothing. boot <kernel> [ <ramdisk> [ <second> ] ] Download and boot kernel. flash:raw <bootable-partition> <kernel> [ <ramdisk> [ <second> ] ] Create bootimage and flash it. devices [-l] List all connected devices [with device paths]. continue Continue with autoboot. reboot [bootloader|emergency] Reboot device [into bootloader or emergency mode]. reboot-bootloader Reboot device into bootloader. oem <parameter1> ... <parametern> Executes oem specific command. stage <infile> Sends contents of <infile> to stage for the next command. Supported only on Android Things devices. get_staged <outfile> Receives data to <outfile> staged by the last command. Supported only on Android Things devices. help Show this help message. options: -w Erase userdata and cache (and format if supported by partition type). -u Do not erase partition before formatting. -s <specific device=""> Specify a device. For USB, provide either a serial number or path to device port. For ethernet, provide an address in the form <protocol>:<hostname>[:port] where <protocol> is either tcp or udp. -c <cmdline> Override kernel commandline. -i <vendor id=""> Specify a custom USB vendor id. -b, --base <base_addr> Specify a custom kernel base address (default: 0x10000000). --kernel-offset Specify a custom kernel offset. (default: 0x00008000) --ramdisk-offset Specify a custom ramdisk offset. (default: 0x01000000) --tags-offset Specify a custom tags offset. (default: 0x00000100) -n, --page-size <page size=""> Specify the nand page size (default: 2048). -S <size>[K|M|G] Automatically sparse files greater than 'size'. 0 to disable. --slot <slot> Specify slot name to be used if the device supports slots. All operations on partitions that support slots will be done on the slot specified. 'all' can be given to refer to all slots. 'other' can be given to refer to a non-current slot. If this flag is not used, slotted partitions will default to the current active slot. -a, --set-active[=<slot>] Sets the active slot. If no slot is provided, this will default to the value given by --slot. If slots are not supported, this does nothing. This will run after all non-reboot commands. --skip-secondary Will not flash secondary slots when performing a flashall or update. This will preserve data on other slots. --skip-reboot Will not reboot the device when performing commands that normally trigger a reboot. --disable-verity Set the disable-verity flag in the the vbmeta image being flashed. --disable-verification Set the disable-verification flag in the vbmeta image being flashed. --wipe-and-use-fbe On devices which support it, erase userdata and cache, and enable file-based encryption --unbuffered Do not buffer input or output. --version Display version. -h, --help show this message.
2.1 Fastboot 실행 및 확인
- fastboot 준비사항
우선 상위 Board의 Uboot에서 Fastboot Mode로 설정 후 Host에서 fastboot 명령어로 제어를 진행한다.
- fastboot device 정보 확인
$ sudo fastboot devices 051a700e828e4289 fastboot
- fastboot flash unlock 진행
나의 경우는 아래와 같이 fastboot flashing unlock 만 했더니 lock이 되었는데, 현재 각각의 차이점들은 알아가야 할 것 같다.
$ sudo fastboot oem unlock $ sudo fastboot flashing unlock $ sudo fastboot flashing unlock_critical
- fastboot로 각 Partition write 진행
각 Partition의 이름을 알아야 하면, 현재 a/b slot으로 구성되어있으므로, 각각의 Image를 write 후 reboot 진행
$ sudo fastboot flash dtbo_a dtbo-imx8qxp-mipi.img $ sudo fastboot flash boot_a boot.img $ sudo fastboot reboot
https://m.blog.naver.com/PostView.nhn?blogId=searphiel9&logNo=221367977833&proxyReferer=https:%2F%2Fwww.google.com%2F