fastboot cmd 分析
usage: fastboot ”option” “command“
commands:
update <filename> reflash device from update.zip
flashall "flash boot" + "flash system"
flash <partition> [ <filename> ] write a file to a flash partition
erase <partition> erase a flash partition
getvar <variable> display a bootloader variable
boot <kernel> [ <ramdisk> ] download and boot kernel
flash:raw boot <kernel> [ <ramdisk> ] create bootimage and flash it
devices list all connected devices
reboot reboot device normally
reboot-bootloader reboot device into bootloader
options:
-w erase userdata and cache
-s <serial number> specify device serial number
-p <product> specify product name
-c <cmdline> override kernel commandline
-i <vendor id> specify a custom USB vendor id
1 升级系统
fastboot flash aboot emmc_appsboot.mbn
fastboot flash boot boot.image
fastboot flash kernel uImage
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash ramdisk ramdisk-uboot.img
2 具体分析aboot中的代码
/* register commands and variables for fastboot */
void aboot_fastboot_register_commands(void)
{
int i;
struct fastboot_cmd_desc cmd_list[] = {
/* By default the enabled list is empty. */
{"", NULL},
/* move commands enclosed within the below ifndef to here
* if they need to be enabled in user build.
*/
#ifndef DISABLE_FASTBOOT_CMDS
/* Register the following commands only for non-user builds */
{"flash:", cmd_flash},
{"erase:", cmd_erase},
{"boot", cmd_boot},
{"continue", cmd_continue},
{"reboot", cmd_reboot},
{"reboot-bootloader", cmd_reboot_bootloader},
{"oem unlock", cmd_oem_unlock},
{"oem device-info", cmd_oem_devinfo},
{"preflash", cmd_preflash},
{"oem enable-charger-screen", cmd_oem_enable_charger_screen},
{"oem disable-charger-screen", cmd_oem_disable_charger_screen},
{"oem select-display-panel", cmd_oem_select_display_panel},
{"oem reboot recovery", cmd_reboot_recovery},
#endif
};
可以看到实际LK起来后通过按键的获取来选择不同的启动方式,了解LK按键的获取和处理请查看我的“android不同按键启动”博文,
通过定义一个”oem reboot recovery” 再写一个cmd_reboot_recovery 的实现。就可以使用一个fastboot的命令了。如:fastboot oem reboot recovery