[已解决]关于ESP8266 Download Tool烧写功能的疑问

xiaoleizii
Posts: 14
Joined: Fri Aug 12, 2016 11:30 am

[已解决]关于ESP8266 Download Tool烧写功能的疑问

Postby xiaoleizii » Thu Apr 06, 2017 4:12 pm

我最近的一款产品用到ESP8266的IC,由于在生产中需要批量使用,因此需要做一个一键烧录工具,参考论坛中提供的基于python的Download Tool的源码,最新的源码是15年9月份的,我已经完成了移植并且能顺利完成烧写Flash的功能,并且把板子上的Flash拆下来读出的数据和原Bin文件比对没有任何错误,但是烧录完成后Flash不能正常启动,换做用论坛下载的基于python的源码编译后,烧写Flash亦无法运行,分析了下载数据,发现最新的Download Tool 将WIFI的Boot部分第四个字节改为0x02,按照这样修改后烧录上点只打印一段包括SDK信息的Log就不继续运行了,请问如何解决?

另外我分析了一下新的ESP8266芯片烧写工具采用的是先推送一个RamAPP在Ram中运行,然后和App交互实现烧写,但是这个APP起始位置有两个字节是个变化值,请问如何计算这两个字节值?

我这边目前做的是生产用的工具,需要尽可能简单的实现烧写Flash功能,如何才能尽可能简单的实现呢?望指教,多谢
Last edited by xiaoleizii on Fri Apr 07, 2017 5:44 pm, edited 1 time in total.

costaud
Posts: 138
Joined: Fri Oct 24, 2014 7:40 pm

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby costaud » Fri Apr 07, 2017 10:10 am

If you are using python, you can refer to this tool:

https://github.com/espressif/esptool

run: python esptool.py -h to check the help info.

xiaoleizii
Posts: 14
Joined: Fri Aug 12, 2016 11:30 am

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby xiaoleizii » Fri Apr 07, 2017 12:23 pm

我下载了github上的esptool源码 在python中运行 用stub和no stub均可完成烧写 但是都无法启动 但是通过 Download Tool烧录的固件可以正常启动 与我之前的状况一样

打印的log为:

ets Jan 8 2013,rst cause:2, boot mode:(3,7)

load 0x40100000, len 2408, room 16
tail 8
chksum 0xe5
load 0x3ffe8000, len 776, room 0
tail 8
chksum 0x84
load 0x3ffe8310, len 632, room 0
tail 8
chksum 0xd8
csum 0xd8

2nd boot version : 1.6
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

OS SDK ver: 1.5.0-dev(950076a) compiled @ Nov 4 2016 19:29:32
?mode : sta(5c:cf:7f:08:7c:48)
add if0

Her Majesty
Posts: 283
Joined: Mon Oct 27, 2014 11:09 am

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby Her Majesty » Fri Apr 07, 2017 2:24 pm

烧录的是同一个固件吗?
OS SDK ver: 1.5.0-dev(950076a) compiled @ Nov 4 2016 19:29:32
?mode : sta(5c:cf:7f:08:7c:48)
add if0

这个 log 应该是成功跑起来了,版本信息都打印出来了。

xiaoleizii
Posts: 14
Joined: Fri Aug 12, 2016 11:30 am

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby xiaoleizii » Fri Apr 07, 2017 4:22 pm

是同一个固件 经过分析 是这样的情况,程序跑起来了 但是串口的波特率没有修改过来 我的程序在开始的时候将串口波特率初始化为115200 但是这个log是用波特率74880打印出来的 现在程序能跑起来了 但是串口波特率是错误的

xiaoleizii
Posts: 14
Joined: Fri Aug 12, 2016 11:30 am

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby xiaoleizii » Fri Apr 07, 2017 4:29 pm

根据我的分析应该是这样的情况 我用的是26MHz的晶振 但是某些时候读uart分频寄存器算出的晶振频率是40MHz 导致了系统按照40M的晶振初始化的 实际运行是26M的晶振频率

因为 26M / 40M = 0.65
74880 / 115200 = 0.65

xiaoleizii
Posts: 14
Joined: Fri Aug 12, 2016 11:30 am

Re: 关于ESP8266 Download Tool烧写功能的疑问

Postby xiaoleizii » Fri Apr 07, 2017 5:43 pm

问题已解决
问题出现在esp_init_data_setting.bin中的byte[48] crystal_26m_en 没有置为1, 所以进行RF校准时按照40MHz去完成校准的,导致校准数据出错,从而导致运行时的波特率和WIFI部分时钟错误。

Who is online

Users browsing this forum: Andreas Terstegge and 9 guests