尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
刷写协议(TODO)
1 刷写协议定义最近发现很多时候固件开发都是要破解刷写协议然后写一些自己的固件进去。所以了解一下这些协议还是很有必要所以今天也是写一下这个。根据应用场景的不同常用的刷写协议主要可以分为汽车电子领域和通用消费电子/芯片级开发两大阵营。刷写协议主要是由Bootloader提供一般来说有两个阶段。1.1 1阶段升级第一阶段/硬件级ROM Bootloader / Primary Bootloader。这部分的升级固化在芯片内部的 ROM 中Mask ROM出厂后任何人都无法修改。协议一般是厂商特有协议如 USB DFU、高通的 EDL 模式/紧急下载模式、STM32 的串口 ISP 协议。EDL就是说的高通的9008升级。当后面的所有固件全部损坏时通过物理引脚或特定的寄存器状态强行进入这一层可以用最底层的协议把引导程序重新救回来“救砖”。1.2 2阶段升级第二阶段/软件级Flash Bootloader / Second Bootloader。这部分的升级存放在 Flash 的特定受保护区域如 /bootloader 分区汽车 ECU 的 FBL。它是可以被升级的但平时绝对不允许擦除。协议一般是工业标准或业务级刷写协议如汽车里的 UDS 协议 / DoIP 协议手机/嵌入式里的 Fastboot 协议。一般日常研发调试、售后线刷、或者 OTA 升级时真正负责接收大数据、擦除 Flash 分区、校验签名并写入 Flash 的就是这一层 Bootloader。2 刷写协议的流程车载这块我确实不熟悉了所以还是以IOT设备来写吧。阶段传统线刷流旧后台无感流新1. 触发发送指令立刻重启发送指令后台开工2. 传输在 Bootloader 阶段挂机传输手机变砖在 App 正常运行阶段后台下载用户无感3. 握手与校验开头握手对齐波特率/解锁安全域结尾握手验明正身写入引导标志位4. 重启升级完后重启进入新系统重启不传数据仅做引导切换直接开机目前最新的其实是无感升级但是考虑到项目的实际需要所以还是写老的。2.1 升级指令这是升级的起点。当手机、汽车 ECU 或 MCU 还在正常运行日常业务App 状态时上位机或 OTA 服务器会发送一个特定的诊断命令或通信包。比如说adb reboot bootloader 或 adb reboot edl。此时强行打断App的正常运行告诉系统暂停现在的业务了准备重启去升级。 正式固件收到这个指令后写好标志位然后重启。此时会往特定的内存/寄存器里写一个标志位Flag然后执行软件复位Reset。2.2 握手系统重启后正式进入 Bootloader 状态。这时候Bootloader 和上位机之间必须进行握手Handshake。此时握手的主要意义是1 Bootloader必须确保物理链路USB、CAN、串口的另一头是一个合规的刷写软件而不是一堆杂讯或者普通的通信。2 波特率/速率同步尤其是串口UART或 CAN 总线双方需要通过握手来对齐传输速率。3 安全和版本校验防止发错固件或者被恶意刷机。这里的握手协议非常多不同的协议握手的方式也是林林总总。举两个例子。STM32Bootloader刚启动时会在几十毫秒内死等一个固定字节。上位机疯狂发送 0x7F。Bootloader 收到 0x7F 后回复一个 0x79ACK。这就是握手成功。 接下来上位机才能发擦除、写入指令。高通的EDL手机黑屏连电脑会枚举出一个高通 9008 端口。上位机会通过底层协议向 Bootloader 发送一段特殊的配置包包含芯片 IDBootloader回应握手成功后上位机才能加载Firehose刷机引导算法。此外还有很多厂商专用自研协议如恩智浦NXP的blhost/mfgtools乐鑫Espressif的 esptool通过UART进行握手、同步、分段下载和校验。2.3 升级这里就是正式传输数据下载、擦除、写入 Flash可能涉及到AB分区暂时就不多写了。3 破解刷写协议1 查找升级命令很多设备的升级命令不是单发的而是一个“组合”。例如可能需要你先发一条“请求进入测试模式” 0x01收到确认后再发一条“解锁闪存” 0x02最后发“重启至引导” 0x03。2 查找握手协议设备重启进入 Bootloader 后你直接发数据它是不会收的必须完成握手。这一步是防错、防呆、甚至防黑客的关键。模拟上位机发握手直到黑盒设备能给你返回 ACK表示它承认你这个上位机了。3 传输数据包时候的包头和校验字$$\text{Packet} \text{Frame Header} \text{Length} \text{Cmd ID} \text{Address/Index} \text{Payload (Firmware Chunk)} \text{Checksum}$$包头Frame Header通常是固定的 1~2 个字节如0xAA 0x550x02STX等用来让设备捕获一个完整帧的开始。指令字Cmd ID紧跟在包头或长度后面。比如0x11代表擦除0x12代表写入0x13代表传输结束。索引/地址Index / Address大固件会被拆成几百个包。数据包里一定会带一个参数要么是当前包的序号Packet ID: 1, 2, 3...要么是这批数据要写入 Flash 的绝对物理地址如0x08004000。校验字Checksum这是最容易卡壳的地方。如果你改了固件内容但没有更新包尾的校验字设备会直接拒绝。它可能是简单的累加和Checksum、CRC16-Modbus、CRC32或者是厂商自己对数据做异或XOR。在黑盒状态下可以把数据段抠出来扔进在线 CRC 计算器里把各种标准的 CRC 模型都试一遍看看能不能对上抓包里的尾部字节。
RELATED

相关推荐

38、<简单>编程输入10个正整数,然后自动按从大到小的顺序输出

38、<简单>编程输入10个正整数,然后自动按从大到小的顺序输出

法1&#xff1a;#include <iostream> #include <algorithm> // 使用sort排序函数必须引入此头文件 using namespace std;int main() {cout << "【输入规则】一行输入10个正整数&#xff0c;数字空格分隔" << endl;cout << "【输…

📅 2026/9/4 14:30:24
7天AI大事速览:一篇看完,比别人少刷50篇碎片信息

7天AI大事速览:一篇看完,比别人少刷50篇碎片信息

事情正在起变化&#xff1a;Anthropic冲击IPO、模型被锁又解禁、Google表格AI杀手锏——过去7天AI圈发生了什么 如果你觉得AI行业的发展速度已经够快了&#xff0c;那这一周会让你重新认识什么叫"目不暇接"。 从Anthropic递交IPO招股书、估值一度飙到近万亿美金&…

📅 2026/9/4 7:13:45
数据结构——图:存储结构、DFS、BFS、最小生成树

数据结构——图:存储结构、DFS、BFS、最小生成树

图是数据结构中最后一类重要的非线性结构。前面的链表是一对一&#xff0c;树是一对多&#xff0c;图是多对多。图的遍历&#xff08;DFS/BFS&#xff09;和最小生成树是 408 考研的重点。 一、图的基本概念 1. 定义 图由**顶点&#xff08;Vertex&#xff09;和边&#xff08;…

📅 2026/9/4 7:10:53
MORE NEWS

更多资讯

📰

OpenCore Legacy Patcher 完整指南:2007 年的 Mac 也能装上 macOS Sequoia

OpenCore Legacy Patcher 完整指南&#xff1a;2007 年的 Mac 也能装上 macOS Sequoia 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你的 Mac 在"…

📰

OpenClaw Tokenjuice 插件详解:为 exec/bash 工具结果自动压缩降噪

OpenClaw Tokenjuice 插件详解&#xff1a;为 exec/bash 工具结果自动压缩降噪 【免费下载链接】openclaw The AI that really does things. Any OS. Any Platform. The lobster way. &#x1f99e; 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw Tokenj…

📰

camofox-browser:基于Firefox的反指纹浏览器定制方案解析

最近翻 GitHub 的时候&#xff0c;看到了一个叫 camofox-browser 的项目。名字很有意思&#xff1a;camo&#xff08;迷彩&#xff09; fox&#xff08;Firefox&#xff09;&#xff0c;摆明了就是一个给 Firefox 穿上“迷彩服”的浏览器。这类基于开源浏览器做隐私强化的项目…

📰

CANN/ge图属性设置API

EsSetStringAttrForGraph 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、T…

📰

Czkawka:免费开源的相似图片查重工具,一条命令清理 3000 张照片的相册

Czkawka&#xff1a;免费开源的相似图片查重工具&#xff0c;一条命令清理 3000 张照片的相册 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 相册…

📰

【报错】程序包com.xx.xx不存在

目录一、 报错内容二、 报错场景解决办法一解决方法二解决方法三三、 报错解决一、 报错内容 程序包com.xx.xx不存在找不到符号 二、 报错场景 项目结构如下&#xff1a; – parent      //父项目 ------ children1    //同级子项目 ------ children2    //同级子项…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬