高通为例子。不看不知道,一看原来这么多。想以前做博通方案,就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄?!。。。(博通刷机应该也是很多种,web只是比较方便的一种)

基本参考这篇:https://www.cnblogs.com/bluestorm/p/18129830

常用的应该就是OTA,FastBoot。EDL好像都很少用吧,不过今天确认用到了,还让我自己去焊接,我真无语了。。。

不过EDL模式不懂也正常,因为这个是高通独有。感觉有点类似JTAG那种刷机吧。我的理解OTA是操作系统层面的升级,FastBoot是bootloader层面的升级,EDL就是类似JTAG的层面,网上很多叫做9008升级,是因为用的COM9008。在使用EDL的时候,还要安装高通的QFIL工具,应该熟悉一下就好。

开机模式屏幕显示冷启动热启动按键退出典型命令
Android/NormalAndroid界面按Power键adb reboot手机短按,VR长按Power键
Recovery/OTA/卡刷Recovery界面按住OK键(Vol+)

再按Power键
adb reboot recovery长按Power键重启将官方 OTA 升级包放到手机存储中或使用 adb sideload update.zip
Fastboot/线刷Fastboot界面按住BACK键(Vol-)

再按Power键
adb reboot bootloader长按Power键重启fastboot flash boot boot.img
FFBM/Fast Factory/厂测/半开机显示测试列表misc分区头部为ffbm时

按Power键
misc分区头部为ffbm时,adb reboot长按Power键重启依然进入FFBM
EDL/紧急下载/9008/砖头/裸板无显示,黑屏同时按住OK键(Vol+)和BACK键(Vol-)

再按Power键
adb reboot edl

fastboot reboot emergency
长按Power键重启使用QFIL工具

========================20261105更新========================

做了2年再回来看,其实常用的刷机模式就两种。

1 Fastboot

  • 原理:利用设备引导加载程序(Bootloader)中的 Fastboot 接口,在电脑端通过 fastboot 命令行工具将镜像文件(如 boot.img, system.img, vendor.img, super.img, init_boot.img)直接写入设备的物理分区。

  • 特点:底层、高效、常用于救砖、升级官方线刷包(Fastboot 脚本)或刷入自定义 Boot/Kernel 以获取 Root 权限。

  • 前提:必须先解锁 Bootloader(BL 锁)。

使用这个有时候需要安装对应的USB驱动。此外需要知道逻辑分区名称以及所使用的 Android 架构代际。

比如以前刷 Root(如 Magisk)都是修饰 boot.img 并刷入 boot 分区。在 Android 13+ 的新设备上,Boot 校验被移到了 init_boot.img,需要修饰 init_boot.img 并运行 fastboot flash init_boot magisk_patched.img。

可以使用以下命令:

# 1. 查询设备支持的所有分区名称及其属性
fastboot getvar all

# 2. 查询设备当前的 A/B 槽位(如果是 A/B 结构)
fastboot getvar current-slot

# 3. 查询是否支持动态分区 (is-userspace)
fastboot getvar is-userspace

这里有一个fastboot刷机的示例:

#!/bin/bash

# 确保脚本在出错时直接退出
set -e

echo "=========================================="
echo "  Android Fastboot 自动刷机脚本示例"
echo "=========================================="

# 1. 检查 fastboot 工具是否存在
if ! command -v fastboot &> /dev/null; then
    echo "[错误] 未找到 fastboot 命令,请先安装 Android Platform-Tools 并将其加入环境变量。"
    exit 1
fi

# 2. 检测设备连接状态
echo "正在检测已连接的 Fastboot 设备..."
FASTBOOT_DEVICES=$(fastboot devices | awk '{print $1}')

if [ -z "$FASTBOOT_DEVICES" ]; then
    echo "[错误] 未检测到处于 Fastboot 模式的设备,请检查 USB 连接或驱动。"
    exit 1
else
    echo "成功检测到设备: $FASTBOOT_DEVICES"
fi

# 3. 询问用户是否需要清除用户数据(可选)
read -p "是否需要执行格式化并清除用户数据 (Wipe/Format userdata)? [y/N]: " WIPE_DATA

# 4. 开始刷入各项镜像
echo "------------------------------------------"
echo "开始刷入底层引导与内核分区..."

# 针对现代动态分区(Dynamic Partitions)设备的常用分区刷写
# 注:部分老设备或特定芯片可能没有 init_boot 或 vendor_boot,请根据实际镜像调整
if [ -f "boot.img" ]; then
    fastboot flash boot boot.img
fi

if [ -f "init_boot.img" ]; then
    fastboot flash init_boot init_boot.img
fi

if [ -f "vendor_boot.img" ]; then
    fastboot flash vendor_boot vendor_boot.img
fi

if [ -f "dtbo.img" ]; then
    fastboot flash dtbo dtbo.img
fi

if [ -f "vbmeta.img" ]; then
    fastboot flash vbmeta vbmeta.img
fi

echo "------------------------------------------"
echo "开始刷入系统主镜像 (super.img,这可能需要几十秒)..."
if [ -f "super.img" ]; then
    # 刷入 super 分区前有时需要擦除或调整大小,根据具体包而定
    fastboot flash super super.img
else
    echo "[错误] 核心镜像 super.img 不存在,无法完成刷机!"
    exit 1
fi

# 5. 根据用户选择决定是否清除数据
if [ "$WIPE_DATA" = "y" ] || [ "$WIPE_DATA" = "Y" ]; then
    echo "------------------------------------------"
    echo "正在格式化用户数据区 (userdata & cache)..."
    fastboot -w
else
    echo "已跳过用户数据清除(保留原有应用与配置)。"
fi

# 6. 重启设备
echo "------------------------------------------"
echo "刷机完成!正在重启设备进入系统..."
fastboot reboot

echo "所有操作已执行完毕。"

2 EDL

  • 原理:通过短接主板上的 EDL 测试点(Test Point)、使用专用 9008 刷机线(工程线)或命令强制让高通芯片进入 Emergency Download Mode (9008)。

  • 工具:使用 QPST / QFIL(Qualcomm Flash Image Loader)或 MiFlash,直接向闪存 UFS / eMMC 的最低层 Sector 写入数据。

  • 特点:不依赖 Bootloader 状态(即便 BL 被锁也能救砖),是高通设备的终极救砖手段(注:部分新芯片需要官方授权账号凭证签名)。

在实际开发中,EDL是最后手段,一般是直接短接电路板。然后使用高通的烧写工具。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐