概述 硬件准备 硬件设置 硬件连接 下载流程 传输协议 数据头 数据体 固件格式 附录 – 编程示例 校验和 擦除 flash 参考资料 www.espressif.com ESP8266 应⽤笔记 固件下载协议 版本 1.2 乐鑫信息科技 版权所有 © 2018 关于本⼿册 本⽂档介绍了 ESP8266 的固件下载协议。 发布说明 ⽂档变更通知 ⽤户可通过乐鑫官⽹订阅⻚⾯ https://www.espressif.com/zh-hans/subscribe 订阅技术⽂档变更的 电⼦邮件通知。 证书下载 ⽤户可通过乐鑫官⽹证书下载⻚⾯ https://www.espressif.com/zh-hans/certificates 下载产品证书。 ⽇期 版本 发布说明 2016.05 V1.0 ⾸次发布。 2017.06 V1.1 在表 2-2 中增加操作代码 09、0a、0b。 2018.11 V1.2 • 更新 A.3. 参考资料 • 更新⽂档格式 ⽬录 1. 概述.........................................................................................................................................1 1.1. 硬件准备! ".....................................................................................................................................1 1.1.1. 硬件设置! "........................................................................................................................1 1.1.2. 硬件连接! "........................................................................................................................1 1.2. 下载流程! ".....................................................................................................................................2 2. 传输协议 .................................................................................................................................3 2.1. 数据头! "........................................................................................................................................3 2.2. 数据体! "........................................................................................................................................4 3. 固件格式 .................................................................................................................................5 A. 附录 – 编程示例.......................................................................................................................6 A.1. 校验和! "........................................................................................................................................6 A.2. 擦除 flash! "...................................................................................................................................6 A.3. 参考资料!.....................................................................................................................................7 1. 概述! 1. 概述 1.1. 硬件准备 ESP8266 处于 UART 下载模式时,可以通过外部 MCU 将固件下载到 ESP8266。 1.1.1. 硬件设置 硬件设置如表 1-1 所示。 1.1.2. 硬件连接 硬件连接如图 1-1 所示。 图 1-1. 硬件连接 表 1-1. 硬件设置 设置项 设置 UART 下载模式 GPIO0 和 GPIO15:低电平 GPIO2:⾼电平 波特率 ⾃适应 数据位 8 停⽌位 1 校验位 ⽆ 流控 关闭 MCU ESP8266 RXD TXD GND Espressif /81 2018.11 1. 概述! 1.2. 下载流程 图 1-2. 下载流程 • 同步:发送同步帧同步波特率。 • 擦除数据:根据要下载的固件⼤⼩和下载地址擦除 flash 相应的块区域。 • 发送数据:将固件封装成多帧发送给 ESP8266。 • 发送结束帧:发送下载结束帧给 ESP8266。 () () Espressif /82 2018.11 2. 传输协议! 2. 传输协议 传输协议采⽤串联线路⽹际⽹络协议 (SLIP) 的封装格式。 • 每个数据包都以 !"#! 开始和结束。 • 如果 !"#! 出现在数据包内部,就将 !"#! 替换成两个字节 !"$%&!"$#;如果 !"$% 出 现在数据包内部,则替换为 !"$%&!"$。 • 在数据帧⾥,数据包由数据头和⻓度不定的数据体组成,如图 2-1 所示。 • 所有多字节字段的存储模式均为⼩端模式。 图 2-1. 数据包格式 2.1. 数据头 数据头的格式如表 2-1 所示。 byte 0 1 2 3 4 5 6 7 8 9 A B C D E F 0h Header 1h Body ... 表 2-1. 数据头格式 字节 数据类型 请求 应答 0 Type 始终为 !"!!。 始终为 !"!'。 1 Command 操作代码详细信息请参考表 2-2。 2~3 Data size 数据体的⼤⼩。 说明:Data size 统计的是 !"#! 和 !"$% 被替换前的数据体的⻓度。 4~7 Checksum/Response payload(数据体中 16 字节之后的 固件数据)的异或校验。 Checksum 计算⽅法请参考“附录 - 编程示例”。 响应数据。 8~n Body 取决于操作。 8 Status - 状态标志,成功 (0) 或失败 (1)。 9 Error - 成功 (null) 或失败(错误码)。 Espressif /83 2018.11 2. 传输协议! 2.2. 数据体 数据体格式如图 2-2 所示。 图 2-2. 数据体格式 数据体的前 16 个字节 (Word0 ~ Word3) 是描述数据体的,不同的数据指令,其描述也不 同。 表 2-2. 操作代码 代码 名称 说明 02 Flash Download Start 擦除 flash 中的数据。 • Word0:擦除扇区的数量,每扇区 4096 个字节。 • Word1:发送数据包的数量。 • Word2:发送数据包的⼤⼩,如 !"(!!。 • Word3:偏移地址。 说明:关于擦除数据的代码示例请参考“附录 - 编程示 例”。 03 File Packet Send 发送数据。 • Word0:发送数据包的⼤⼩(填 !"(!!)。 • Word1:发送数据包的序列号。 • Word2:!"! • Word3:!"! 04 Flash DownLoad Stop 停⽌发送数据。 08 Sync Frame Send )*+,-./0123456&7&8&!"!9:&!"!9:&!"';:&!";!:< !"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:< !"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:< !"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:< !"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==:&!"==&>? 09 Write register 四个字 (word):地址、值、掩码和延迟(毫秒级)。 0a Read register 以字为单位读取数据。 0b Configure SPI params 24 个字节未知的 SPI 参数。 0 1 2 3 4 5 6 7 8 9 a b c d e f Word0 Word1 Word2 Word3 g…n Data Espressif /84 2018.11 3. 固件格式! 3. 固件格式 固件包含⽂件头和数量可变的数据块(数据块的⼤⼩可能不同),如图 3-1 所示。所有多 字节字段的存储模式均为⼩端模式。 图 3-1. 固件格式 ⽂件头格式如表 3-1 所示。 Byte 0 1 2 3 4 5 6 7 8 9 A B C D E F 0h File Header 1h Data blocks ... 表 3-1. 固件格式说明 字节 数据类型 说明 0 Magic Code 值始终为 !@AB。 1 Block Number 数据块的数量。 2 SPI Mode SPI 的⼯作模式。 • !"!!:QIO 模式 • !"!':QOut 模式 • !"!;:DIO 模式 • !"!4:DOut 模式 3 SPI Flash Info SPI flash 的⼤⼩和频率。 • ⾼ 4 位:!"! = 512 kB;!"' = 256 kB;!"; = 1 MB;!"4 = 2 MB;!"( = 4 MB • 低 4 位:!"! = 40 MHz;!"' = 26 MHz;!"; = 20 MHz;!@C = 80 MHz 4~7 Entry Address CPU ⼊⼝地址。 Espressif /85 2018.11 附录 A A. 附录 – 编程示例 A.1. 校验和 DE+F4;-F&2)G,H11-,0I,-,J2,K)D1LD+)EM+2N&,J0/&ON0F0:&DE+F'5-F&N0F0-)EP2Q< 8< &&&&DE+F'5-F&,+F?< &&&&DE+F4;-F&/2)DIF?< &&&&/2)DIF&7&!"AC?< &&&&.H/L,+F&7&!?&,+F&R&N0F0-)EP2?&,+FSSQ< &&&&8< &&&&&&&&/2)DIF&T7&N0F03,+F6?< &&&&>< &&&&/2FD/+&/2)DIF?< >< A.2. 擦除 flash UN2.E+2&&%VW#XYZ[A-CV\Y]&&!"(!!< UN2.E+2&&CV\Y]-$W^_VW\$-%A`Z_&&!"!;< DE+F4;&.I0)J-G0,K2F36?< aaDE+F4;-F&)EP2b.E/1c0/2&/20I&)EP2:& &DE+F4;-F&0NN/2))b&NHc+IH0N&H..)2F&0NN/2))< E+F&2/0)2-.I0)JLDE+F4;-F&)EP2:&DE+F4;-F&0NN/2))Q&< 8< ,H+)F&E+F&)2,FH/-)EP2&7&(!B5?< ,H+)F&E+F&)2,FH/)-G2/-dIH,K&&7&'5?< ,H+)F&E+F&.E/)F-)2,FH/-E+N2"&7&0NN/2))&a&)2,FH/-)EP2?< ,H+)F&E+F&FHF0I-)2,FH/-,HD+F&7&LL)EP2&e&)2,FH/-)EP2Q&77&!Q&f< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&L)EP2&a&)2,FH/-)EP2Q&b&L)EP2&a&)2,FH/-)EP2&S&'Q?< ,H+)F&E+F&10"-J20N-)2,FH/-,HD+F&&7&)2,FH/)-G2/-dIH,K&g&L.E/)F-)2,FH/-E+N2"&e& )2,FH/)-G2/-dIH,KQ?< ,H+)F&E+F&J20N-)2,FH/-,HD+F&7&L10"-J20N-)2,FH/-,HD+F&h&FHF0I-)2,FH/-,HD+FQ&f< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FHF0I-)2,FH/-,HD+F&b&10"-J20N-)2,FH/-,HD+F? aa&YiZA/0)2\/20&.D+,FEH+&E+&FJ2&2)Gj;55&kWl&J0)&0&dDM&cJE,J&,0D)2)&2"F/0&0/20&FH&d2&2/0)2Nm aa&Z.&FJ2&0NN/2))&/0+M2&FH&d2&2/0)2N&,/H))2)&FJ2&dIH,K&dHD+N0/*:< aa&FJ2+&2"F/0&J20N-)2,FH/-,HD+F&)2,FH/)&0/2&2/0)2Nm< Espressif /6 8 2018.11 附录 A aa&Z.&FJ2&0NN/2))&/0+M2&NH2)+nF&,/H))&FJ2&dIH,K&dHD+N0/*:< aa&FJ2+&2"F/0&FHF0I-)2,FH/-,HD+F&)2,FH/)&0/2&2/0)2Nm< ,H+)F&E+F&0NoD)F2N-)2,FH/-,HD+F&7&LFHF0I-)2,FH/-,HD+F&h&;&O&J20N-)2,FH/-,HD+FQ&f< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&LFHF0I-)2,FH/-,HD+F&g&J20N-)2,FH/-,HD+FQb< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&LFHF0I-)2,FH/-,HD+F&S&'Q&a&;?< 2/0)2-)EP2&7&0NoD)F2N-)2,FH/-,HD+F&O&)2,FH/-)EP2?< .I0)J-G0,K2F3!6&7&2/0)2-)EP2?< .I0)J-G0,K2F3'6&7&L)EP2&S&%VW#XYZ[A-CV\Y]&g&'Q&a&%VW#XYZ[A-CV\Y]?< .I0)J-G0,K2F3;6&7&%VW#XYZ[A-CV\Y]?< .I0)J-G0,K2F346&7&0NN/2))?< 2)G,H11-)2+N-,H110+NLCV\Y]-$W^_VW\$-%A`Z_:&LD+)EM+2N&,J0/OQ&p.I0)J-G0,K2F:&'5Q?< >< A.3. 参考资料 espressif/esptool: https://github.com/espressif/esptool Espressif /7 8 2018.11 免责申明和版权公告 本⽂中的信息,包括供参考的 URL 地址,如有变更,恕不另⾏通知。 ⽂档“按现状”提供,不负任何担保责任,包括对适销性、适⽤于特定⽤途或⾮侵 权性的任何担保,和任何提案、规格或样品在他处提到的任何担保。本⽂档不 负任何责任,包括使⽤本⽂档内信息产⽣的侵犯任何专利权⾏为的责任。本⽂ 档在此未以禁⽌反⾔或其他⽅式授予任何知识产权使⽤许可,不管是明示许可 还是暗示许可。 Wi-Fi 联盟成员标志归 Wi-Fi 联盟所有。蓝⽛标志是 Bluetooth SIG 的注册商 标。 ⽂中提到的所有商标名称、商标和注册商标均属其各⾃所有者的财产,特此声 明。 版权归 © 2018 乐鑫所有。保留所有权利。 乐鑫 IoT 团队" www.espressif.com