esptool.py 流程

本文详细介绍了esptool.py用于与ESP8266固件交互的流程,包括SLIP协议、命令、响应、以及交互过程中的数据包格式和命令opcode。通过示例展示了连接、读取芯片信息、上传stub loader和刷写固件的步骤。
摘要由CSDN通过智能技术生成

esptool.py 流程

  • 预备知识
    • SLIP
    • Command
    • Response
    • Command Opcodes
  • 流程
    • 8266 stub loader 为例说明

SLIP(Serial Line IP)

串行线路网际协议,是串行线路上对 IP 数据包进行的简单封装形式。

  • IP 数据包以特殊字符 0xc0 结束,有的数据包开始处也会传一个 0xc0 以防止数据报到来之前的线路噪声当做数据报内容。
  • IP报文中某个字符为 0xc0,那么就连续传输两个字节 0xdb 和 0xdc 来取代。
  • IP报文中某个字符为 0xdb,那么就连续传输两个字节 0xdb 和 0xdd 来取代。

Command

在这里插入图片描述
详见:https://github.com/espressif/esptool/wiki/Serial-Protocol#writing-data

  • commad 为 host 端发出的 SLIP 包,所有的字段都为小端格式。

Response

在这里插入图片描述
详见:https://github.com/espressif/esptool/wiki/Serial-Protocol#writing-data

Command Opcodes

在这里插入图片描述

详见:https://github.com/espressif/esptool/wiki/Serial-Protocol#writing-data

esptool 与 stub loader 的交互流程

终端输入: python esptool.py --trace --chip esp8266 --port /dev/ttyUSB1 --baud 115200 --before defa ault_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m -- -flash_size 2MB 0x0000 bootloader.bin 0x10000 power_save.bin 0x8000 partitions_singleapp.bin


1.connect…

[Command]: c0 00 08 24 00 00000000 0707122055555 55555555555555555 5555555555555555 5555555555555555 5555555555 c0

Note: 36 bytes: 0x07 0x07 0x12 0x20, followed by 32 x 0x55

[Response]: c0 01 08 02 00 07071220 0000 c0


  1. 读取芯片类型信息

[Command]: c0 00 0a 04 00 00000000 [5c 00 f0 3f] c0

Note: 0a: READ_REG command, 通常用来读取芯片上的各种地址,以识别芯片子类型、版本等。[5c 00 f0 3f] 为 32 位地址

[Response]: c0 01 0a 02 00 ab622404 0000 c0

Note: READ_REG, Read data as 32-bit word in value field.

  • 要读取的地址 {5c00f03f, 5800f03f, 5400f03f, 5000f03f} 依次发出,如下:

{c0000a0400000000005c00f03fc0, c0000a0400000000005800f03fc0, c0000a0400000000005400f03fc0, c0000a0400000000005000f03fc0}

依次收到的 Response, 如下:

{c0010a0200ab6224040000c0, 010a020000b000be0000, 010a0200553f00020000, 010a02003000da760000}

----以上读到信息为 Chip is ESP8285

  • 要读取的地址 {5c00f03f, 5800f03f, 5400f03f, 5000f03f} 依次发出,如下:

{c0000a0400000000005c00f03fc0, c0000a0400000000005800f03fc0, c0000a0400000000005400f03fc0, c0000a040000000000500

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值