Circuitpython: large data burst hangs UART on nrf52840

Created on 17 Dec 2018  路  17Comments  路  Source: adafruit/circuitpython

While testing the use of the ESP8266 AT firmware when connected to an nrf52840 board via the UART on board.RX//TX I found that the UART RX would "hang" (stio receiving) if I RESET the ESP8266 -- The RESET sends out a failrly large burst of data.
A RESET can be triggered by a hard reset or by issuing the AT+RST command if the ATFirmware is installed on the ESP8266

The condition may be cleared by uart.deinit() the recreating the uart. (or by resetting the nrf52840)

It also occurs with an ESP32 connected to the nrf52840 when a hard RESET is executed, but not with the AT+RST command to reset the AT Firmware.

However, it does not occur on the particle ARGON when connected to the onboard esp32 via the ESP_TX/RX pins

All 17 comments

somehow, I couldn't upload atcommand lib using ampy

ampy -d 1.5 --port /dev/ttyUSB0 put adafruit_espatcontrol.mpy
Traceback (most recent call last):
  File "/home/hathach/.local/bin/ampy", line 11, in <module>
    sys.exit(cli())
  File "/home/hathach/.local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/hathach/.local/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/hathach/.local/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/hathach/.local/lib/python3.6/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/hathach/.local/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/hathach/.local/lib/python3.6/site-packages/ampy/cli.py", line 263, in put
    board_files.put(remote, infile.read())
  File "/home/hathach/.local/lib/python3.6/site-packages/ampy/files.py", line 209, in put
    self._pyboard.exec_("f = open('{0}', 'wb')".format(filename))
  File "/home/hathach/.local/lib/python3.6/site-packages/ampy/pyboard.py", line 267, in exec_
    raise PyboardError('exception', ret, ret_err)
ampy.pyboard.PyboardError: ('exception', b'', b'Traceback (most recent call last):\r\r\n  File "<stdin>", line 1, in <module>\r\r\nOSError: [Errno 1] Permission denied\r\n')

@hathach the adafruit_espatcontrol.py does not run on the esp8266 -- It runs on the board using it as the coprocessor. Which board do you have? ESP8266 needs to be flashed with a new "AT Firmware load" as in this guide https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32/firmware-upload If you are using an ESP32 - If you have an ESP32 I have a newer Firmware file -- let me know if you need it.

@hathach I can reproduce the issue by connecting an ESP8266 (with with either the AT Firmware or the latest CP build) to a nrf52840 (I am using a Particle xenon) -- Connect VUSB,GND, TX<->RX, RX <->TX

Then I use this test script on the nrf52840 to comminacate
For tha AT Firmware enetr AT then return and you should see a response
For CP on the ESp8266 just enter return and you should see the REPL prompt ">>>"

then press the RESET button on the ESP8266 and no more responses will be received.
(note: the "reset" command in the test program was used to send a control-C/control-D to the CP REPL across the UART -- It's not needed for this test. I used this code for quick UART testing)
A hard reset of the ESP8266 is what causes the issue.

import board
import busio
import time

RX = board.RX
TX = board.TX

with  busio.UART(TX, RX, baudrate=115200, timeout=3) as uart:
    while True:
        data=input()
        if "reset" in data:
            uart.write(bytes("\x03",'utf-8'))
            uart.write(bytes("\x04",'utf-8'))
        else:
            uart.write(bytes(data+"\n"+"\r",'utf-8'))
        getresponse = True
        while getresponse:
            response=uart.readline()
            print(response)
            if(response==b'' or response == None):
                getresponse=False

example using AT Firmware

Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-alpha.5-29-gbce6d124a on 2018-12-21; Particle Xenon with nRF52840
>>>
>>> import esp8266comm
AT
b'AT\r\n'
b'\r\n'
b'OK\r\n'
b''
AT+GMR
b'AT+GMR\r\n'
b'AT version:1.6.2.0(Apr 13 2018 11:10:59)\r\n'
b'SDK version:2.2.1(6ab97e9)\r\n'
b'compile time:Jun  7 2018 19:34:26\r\n'
b'Bin version(Wroom 02):1.6.2\r\n'
b'OK\r\n'
b''

PRESSED RESET

AT
b''

example using CP on ESP8266
```Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-alpha.5-29-gbce6d124a on 2018-12-21; Particle Xenon with nRF52840

import esp8266comm

b'\r\n'
b'>>> '
b''

b'\r\n'
b'>>> '
b''

b'\r\n'
b'>>> '
b''

b'\r\n'
b'>>> '
b''

PRESSED RESET

b''

b''
```

The issues can be cleared on the nrf52840 by a control-D reset.

thanks @jerryneedell , I have the huzzah esp8266 breakout, I am new to this, and didn't know that. Just able to get it up and running as co-processor. Thanks for above details description, it is very helpful since I am totally noob to this :D

@jerryneedell I just erase_flash and write the AT firmware bin, now esp8266 blink blue led very fast and output a lot to terminal, but it is non-readable, I have tried to connect with FTDI cable with both 115200 and 9600. Bin download seems to be OK

$ esptool.py -c esp8266 -p /dev/ttyUSB0 write_flash 0x0 AT_firmware_1.6.2.0.bin 
esptool.py v2.5.1
Serial port /dev/ttyUSB0
Connecting........_____.....___
Chip is ESP8266EX
Features: WiFi
MAC: dc:4f:22:20:f7:b0
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 712704 bytes to 406315...
Wrote 712704 bytes (406315 compressed) at 0x00000000 in 36.0 seconds (effective 158.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

@hathach
That happened to me once as well. Try reflashing...

I have tried erase_flash, and wrte_flash several times. I did try flash circuitpython on it previously. Hopefully this doesn't break anything. I am trying to solder the 2nd breakout now to see if it works.

Flashing CP should not cause a problem. Try flashing at a different lower baud rate.
-b 115200
Or
-b 460800

Also, if you have an M4 board, you can try the miniesptool option in the guide to program it via the m4.
It won鈥檛 work via the nRF52840 since the reset issue causes a problem.

uploading with 115200 still has the same fast blue led blinking on the 2nd breakout.
uploading with 9600 is timed out :(

s$ esptool.py -c esp8266 -p /dev/ttyUSB0 -b 9600 write_flash 0x0 AT_firmware_1.6.2.0.bin 
esptool.py v2.5.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP8266EX
Features: WiFi
MAC: dc:4f:22:21:5f:4d
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 712704 bytes to 406315...
Writing at 0x00000000... (4 %)Traceback (most recent call last):
  File "/home/hathach/.local/bin/esptool.py", line 2853, in <module>
    _main()
  File "/home/hathach/.local/bin/esptool.py", line 2846, in _main
    main()
  File "/home/hathach/.local/bin/esptool.py", line 2598, in main
    operation_func(esp, args)
  File "/home/hathach/.local/bin/esptool.py", line 2078, in write_flash
    esp.flash_defl_block(block, seq, timeout=DEFAULT_TIMEOUT * ratio)
  File "/home/hathach/.local/bin/esptool.py", line 95, in inner
    return func(*args, **kwargs)
  File "/home/hathach/.local/bin/esptool.py", line 618, in flash_defl_block
    self.ESP_FLASH_DEFL_DATA, struct.pack('<IIII', len(data), seq, 0, 0) + data, self.checksum(data), timeout=timeout)
  File "/home/hathach/.local/bin/esptool.py", line 340, in check_command
    val, data = self.command(op, data, chk, timeout=timeout)
  File "/home/hathach/.local/bin/esptool.py", line 308, in command
    self.write(pkt)
  File "/home/hathach/.local/bin/esptool.py", line 271, in write
    self._port.write(buf)
  File "/home/hathach/.local/lib/python3.6/site-packages/serial/serialposix.py", line 552, in write
    raise writeTimeoutError
serial.serialutil.SerialTimeoutException: Write timeout

If you can, try programming it via an M4. That has worked well for me. https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32/firmware-upload
Note I just upload the .bin file and miniesptool_esp8266program.py to the m4 then at the REPL
import miniesptool_esp8266program

Rather than naming it code.py
It should work either way.

have tried to write the AT firmware with M4, but still the esp8266 keep fast blink blue LED. @jerryneedell can you send me the AT firmware binary that you have on your local machine !!

Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
ESP8266 mini prog
Resetting
Synced
ESP8266EX
MAC ADDR:  ['0xdc', '0x4f', '0x22', '0x20', '0xf7', '0xb0']

Writing AT_firmware_1.6.2.0.bin w/filesize: 712704
Erase size 647168, num_blocks 696, size 1024, offset 0x0000
Took 1.67s to erase 696 flash blocks
Writing at 0x00000000... (0 %)Writing at 0x00000400... (0 %)Writing at 0x00000800... (0 %)Writing at 0x00000c00... (0 %)Writing at 0x00001000... (0 %)Writing at 0x00001400... (0 %)Writing at 0x00001800... (1 %)Writing at 0x00001c00... (1 %)Writing at 0x00002000... (1 %)Writing at 0x00002400... (1 %)Writing at 0x00002800... (1 %)Writing at 0x00002c00... (1 %)Writing at 0x00003000... (1 %)Writing at 0x00003400... (2 %)Writing at 0x00003800... (2 %)Writing at 0x00003c00... (2 %)Writing at 0x00004000... (2 %)Writing at 0x00004400... (2 %)Writing at 0x00004800... (2 %)Writing at 0x00004c00... (2 %)Writing at 0x00005000... (3 %)Writing at 0x00005400... (3 %)Writing at 0x00005800... (3 %)Writing at 0x00005c00... (3 %)Writing at 0x00006000... (3 %)Writing at 0x00006400... (3 %)Writing at 0x00006800... (3 %)Writing at 0x00006c00... (4 %)Writing at 0x00007000... (4 %)Writing at 0x00007400... (4 %)Writing at 0x00007800... (4 %)Writing at 0x00007c00... (4 %)Writing at 0x00008000... (4 %)Writing at 0x00008400... (4 %)Writing at 0x00008800... (5 %)Writing at 0x00008c00... (5 %)Writing at 0x00009000... (5 %)Writing at 0x00009400... (5 %)Writing at 0x00009800... (5 %)Writing at 0x00009c00... (5 %)Writing at 0x0000a000... (5 %)Writing at 0x0000a400... (6 %)Writing at 0x0000a800... (6 %)Writing at 0x0000ac00... (6 %)Writing at 0x0000b000... (6 %)Writing at 0x0000b400... (6 %)Writing at 0x0000b800... (6 %)Writing at 0x0000bc00... (6 %)Writing at 0x0000c000... (7 %)Writing at 0x0000c400... (7 %)Writing at 0x0000c800... (7 %)Writing at 0x0000cc00... (7 %)Writing at 0x0000d000... (7 %)Writing at 0x0000d400... (7 %)Writing at 0x0000d800... (7 %)Writing at 0x0000dc00... (8 %)Writing at 0x0000e000... (8 %)Writing at 0x0000e400... (8 %)Writing at 0x0000e800... (8 %)Writing at 0x0000ec00... (8 %)Writing at 0x0000f000... (8 %)Writing at 0x0000f400... (8 %)Writing at 0x0000f800... (9 %)Writing at 0x0000fc00... (9 %)Writing at 0x00010000... (9 %)Writing at 0x00010400... (9 %)Writing at 0x00010800... (9 %)Writing at 0x00010c00... (9 %)Writing at 0x00011000... (9 %)Writing at 0x00011400... (10 %)Writing at 0x00011800... (10 %)Writing at 0x00011c00... (10 %)Writing at 0x00012000... (10 %)Writing at 0x00012400... (10 %)Writing at 0x00012800... (10 %)Writing at 0x00012c00... (10 %)Writing at 0x00013000... (11 %)Writing at 0x00013400... (11 %)Writing at 0x00013800... (11 %)Writing at 0x00013c00... (11 %)Writing at 0x00014000... (11 %)Writing at 0x00014400... (11 %)Writing at 0x00014800... (11 %)Writing at 0x00014c00... (12 %)Writing at 0x00015000... (12 %)Writing at 0x00015400... (12 %)Writing at 0x00015800... (12 %)Writing at 0x00015c00... (12 %)Writing at 0x00016000... (12 %)Writing at 0x00016400... (12 %)Writing at 0x00016800... (13 %)Writing at 0x00016c00... (13 %)Writing at 0x00017000... (13 %)Writing at 0x00017400... (13 %)Writing at 0x00017800... (13 %)Writing at 0x00017c00... (13 %)Writing at 0x00018000... (13 %)Writing at 0x00018400... (14 %)Writing at 0x00018800... (14 %)Writing at 0x00018c00... (14 %)Writing at 0x00019000... (14 %)Writing at 0x00019400... (14 %)Writing at 0x00019800... (14 %)Writing at 0x00019c00... (14 %)Writing at 0x0001a000... (15 %)Writing at 0x0001a400... (15 %)Writing at 0x0001a800... (15 %)Writing at 0x0001ac00... (15 %)Writing at 0x0001b000... (15 %)Writing at 0x0001b400... (15 %)Writing at 0x0001b800... (15 %)Writing at 0x0001bc00... (16 %)Writing at 0x0001c000... (16 %)Writing at 0x0001c400... (16 %)Writing at 0x0001c800... (16 %)Writing at 0x0001cc00... (16 %)Writing at 0x0001d000... (16 %)Writing at 0x0001d400... (16 %)Writing at 0x0001d800... (17 %)Writing at 0x0001dc00... (17 %)Writing at 0x0001e000... (17 %)Writing at 0x0001e400... (17 %)Writing at 0x0001e800... (17 %)Writing at 0x0001ec00... (17 %)Writing at 0x0001f000... (17 %)Writing at 0x0001f400... (18 %)Writing at 0x0001f800... (18 %)Writing at 0x0001fc00... (18 %)Writing at 0x00020000... (18 %)Writing at 0x00020400... (18 %)Writing at 0x00020800... (18 %)Writing at 0x00020c00... (18 %)Writing at 0x00021000... (19 %)Writing at 0x00021400... (19 %)Writing at 0x00021800... (19 %)Writing at 0x00021c00... (19 %)Writing at 0x00022000... (19 %)Writing at 0x00022400... (19 %)Writing at 0x00022800... (19 %)Writing at 0x00022c00... (20 %)Writing at 0x00023000... (20 %)Writing at 0x00023400... (20 %)Writing at 0x00023800... (20 %)Writing at 0x00023c00... (20 %)Writing at 0x00024000... (20 %)Writing at 0x00024400... (20 %)Writing at 0x00024800... (21 %)Writing at 0x00024c00... (21 %)Writing at 0x00025000... (21 %)Writing at 0x00025400... (21 %)Writing at 0x00025800... (21 %)Writing at 0x00025c00... (21 %)Writing at 0x00026000... (21 %)Writing at 0x00026400... (22 %)Writing at 0x00026800... (22 %)Writing at 0x00026c00... (22 %)Writing at 0x00027000... (22 %)Writing at 0x00027400... (22 %)Writing at 0x00027800... (22 %)Writing at 0x00027c00... (22 %)Writing at 0x00028000... (23 %)Writing at 0x00028400... (23 %)Writing at 0x00028800... (23 %)Writing at 0x00028c00... (23 %)Writing at 0x00029000... (23 %)Writing at 0x00029400... (23 %)Writing at 0x00029800... (23 %)Writing at 0x00029c00... (24 %)Writing at 0x0002a000... (24 %)Writing at 0x0002a400... (24 %)Writing at 0x0002a800... (24 %)Writing at 0x0002ac00... (24 %)Writing at 0x0002b000... (24 %)Writing at 0x0002b400... (25 %)Writing at 0x0002b800... (25 %)Writing at 0x0002bc00... (25 %)Writing at 0x0002c000... (25 %)Writing at 0x0002c400... (25 %)Writing at 0x0002c800... (25 %)Writing at 0x0002cc00... (25 %)Writing at 0x0002d000... (26 %)Writing at 0x0002d400... (26 %)Writing at 0x0002d800... (26 %)Writing at 0x0002dc00... (26 %)Writing at 0x0002e000... (26 %)Writing at 0x0002e400... (26 %)Writing at 0x0002e800... (26 %)Writing at 0x0002ec00... (27 %)Writing at 0x0002f000... (27 %)Writing at 0x0002f400... (27 %)Writing at 0x0002f800... (27 %)Writing at 0x0002fc00... (27 %)Writing at 0x00030000... (27 %)Writing at 0x00030400... (27 %)Writing at 0x00030800... (28 %)Writing at 0x00030c00... (28 %)Writing at 0x00031000... (28 %)Writing at 0x00031400... (28 %)Writing at 0x00031800... (28 %)Writing at 0x00031c00... (28 %)Writing at 0x00032000... (28 %)Writing at 0x00032400... (29 %)Writing at 0x00032800... (29 %)Writing at 0x00032c00... (29 %)Writing at 0x00033000... (29 %)Writing at 0x00033400... (29 %)Writing at 0x00033800... (29 %)Writing at 0x00033c00... (29 %)Writing at 0x00034000... (30 %)Writing at 0x00034400... (30 %)Writing at 0x00034800... (30 %)Writing at 0x00034c00... (30 %)Writing at 0x00035000... (30 %)Writing at 0x00035400... (30 %)Writing at 0x00035800... (30 %)Writing at 0x00035c00... (31 %)Writing at 0x00036000... (31 %)Writing at 0x00036400... (31 %)Writing at 0x00036800... (31 %)Writing at 0x00036c00... (31 %)Writing at 0x00037000... (31 %)Writing at 0x00037400... (31 %)Writing at 0x00037800... (32 %)Writing at 0x00037c00... (32 %)Writing at 0x00038000... (32 %)Writing at 0x00038400... (32 %)Writing at 0x00038800... (32 %)Writing at 0x00038c00... (32 %)Writing at 0x00039000... (32 %)Writing at 0x00039400... (33 %)Writing at 0x00039800... (33 %)Writing at 0x00039c00... (33 %)Writing at 0x0003a000... (33 %)Writing at 0x0003a400... (33 %)Writing at 0x0003a800... (33 %)Writing at 0x0003ac00... (33 %)Writing at 0x0003b000... (34 %)Writing at 0x0003b400... (34 %)Writing at 0x0003b800... (34 %)Writing at 0x0003bc00... (34 %)Writing at 0x0003c000... (34 %)Writing at 0x0003c400... (34 %)Writing at 0x0003c800... (34 %)Writing at 0x0003cc00... (35 %)Writing at 0x0003d000... (35 %)Writing at 0x0003d400... (35 %)Writing at 0x0003d800... (35 %)Writing at 0x0003dc00... (35 %)Writing at 0x0003e000... (35 %)Writing at 0x0003e400... (35 %)Writing at 0x0003e800... (36 %)Writing at 0x0003ec00... (36 %)Writing at 0x0003f000... (36 %)Writing at 0x0003f400... (36 %)Writing at 0x0003f800... (36 %)Writing at 0x0003fc00... (36 %)Writing at 0x00040000... (36 %)Writing at 0x00040400... (37 %)Writing at 0x00040800... (37 %)Writing at 0x00040c00... (37 %)Writing at 0x00041000... (37 %)Writing at 0x00041400... (37 %)Writing at 0x00041800... (37 %)Writing at 0x00041c00... (37 %)Writing at 0x00042000... (38 %)Writing at 0x00042400... (38 %)Writing at 0x00042800... (38 %)Writing at 0x00042c00... (38 %)Writing at 0x00043000... (38 %)Writing at 0x00043400... (38 %)Writing at 0x00043800... (38 %)Writing at 0x00043c00... (39 %)Writing at 0x00044000... (39 %)Writing at 0x00044400... (39 %)Writing at 0x00044800... (39 %)Writing at 0x00044c00... (39 %)Writing at 0x00045000... (39 %)Writing at 0x00045400... (39 %)Writing at 0x00045800... (40 %)Writing at 0x00045c00... (40 %)Writing at 0x00046000... (40 %)Writing at 0x00046400... (40 %)Writing at 0x00046800... (40 %)Writing at 0x00046c00... (40 %)Writing at 0x00047000... (40 %)Writing at 0x00047400... (41 %)Writing at 0x00047800... (41 %)Writing at 0x00047c00... (41 %)Writing at 0x00048000... (41 %)Writing at 0x00048400... (41 %)Writing at 0x00048800... (41 %)Writing at 0x00048c00... (41 %)Writing at 0x00049000... (42 %)Writing at 0x00049400... (42 %)Writing at 0x00049800... (42 %)Writing at 0x00049c00... (42 %)Writing at 0x0004a000... (42 %)Writing at 0x0004a400... (42 %)Writing at 0x0004a800... (42 %)Writing at 0x0004ac00... (43 %)Writing at 0x0004b000... (43 %)Writing at 0x0004b400... (43 %)Writing at 0x0004b800... (43 %)Writing at 0x0004bc00... (43 %)Writing at 0x0004c000... (43 %)Writing at 0x0004c400... (43 %)Writing at 0x0004c800... (44 %)Writing at 0x0004cc00... (44 %)Writing at 0x0004d000... (44 %)Writing at 0x0004d400... (44 %)Writing at 0x0004d800... (44 %)Writing at 0x0004dc00... (44 %)Writing at 0x0004e000... (44 %)Writing at 0x0004e400... (45 %)Writing at 0x0004e800... (45 %)Writing at 0x0004ec00... (45 %)Writing at 0x0004f000... (45 %)Writing at 0x0004f400... (45 %)Writing at 0x0004f800... (45 %)Writing at 0x0004fc00... (45 %)Writing at 0x00050000... (46 %)Writing at 0x00050400... (46 %)Writing at 0x00050800... (46 %)Writing at 0x00050c00... (46 %)Writing at 0x00051000... (46 %)Writing at 0x00051400... (46 %)Writing at 0x00051800... (46 %)Writing at 0x00051c00... (47 %)Writing at 0x00052000... (47 %)Writing at 0x00052400... (47 %)Writing at 0x00052800... (47 %)Writing at 0x00052c00... (47 %)Writing at 0x00053000... (47 %)Writing at 0x00053400... (47 %)Writing at 0x00053800... (48 %)Writing at 0x00053c00... (48 %)Writing at 0x00054000... (48 %)Writing at 0x00054400... (48 %)Writing at 0x00054800... (48 %)Writing at 0x00054c00... (48 %)Writing at 0x00055000... (48 %)Writing at 0x00055400... (49 %)Writing at 0x00055800... (49 %)Writing at 0x00055c00... (49 %)Writing at 0x00056000... (49 %)Writing at 0x00056400... (49 %)Writing at 0x00056800... (49 %)Writing at 0x00056c00... (50 %)Writing at 0x00057000... (50 %)Writing at 0x00057400... (50 %)Writing at 0x00057800... (50 %)Writing at 0x00057c00... (50 %)Writing at 0x00058000... (50 %)Writing at 0x00058400... (50 %)Writing at 0x00058800... (51 %)Writing at 0x00058c00... (51 %)Writing at 0x00059000... (51 %)Writing at 0x00059400... (51 %)Writing at 0x00059800... (51 %)Writing at 0x00059c00... (51 %)Writing at 0x0005a000... (51 %)Writing at 0x0005a400... (52 %)Writing at 0x0005a800... (52 %)Writing at 0x0005ac00... (52 %)Writing at 0x0005b000... (52 %)Writing at 0x0005b400... (52 %)Writing at 0x0005b800... (52 %)Writing at 0x0005bc00... (52 %)Writing at 0x0005c000... (53 %)Writing at 0x0005c400... (53 %)Writing at 0x0005c800... (53 %)Writing at 0x0005cc00... (53 %)Writing at 0x0005d000... (53 %)Writing at 0x0005d400... (53 %)Writing at 0x0005d800... (53 %)Writing at 0x0005dc00... (54 %)Writing at 0x0005e000... (54 %)Writing at 0x0005e400... (54 %)Writing at 0x0005e800... (54 %)Writing at 0x0005ec00... (54 %)Writing at 0x0005f000... (54 %)Writing at 0x0005f400... (54 %)Writing at 0x0005f800... (55 %)Writing at 0x0005fc00... (55 %)Writing at 0x00060000... (55 %)Writing at 0x00060400... (55 %)Writing at 0x00060800... (55 %)Writing at 0x00060c00... (55 %)Writing at 0x00061000... (55 %)Writing at 0x00061400... (56 %)Writing at 0x00061800... (56 %)Writing at 0x00061c00... (56 %)Writing at 0x00062000... (56 %)Writing at 0x00062400... (56 %)Writing at 0x00062800... (56 %)Writing at 0x00062c00... (56 %)Writing at 0x00063000... (57 %)Writing at 0x00063400... (57 %)Writing at 0x00063800... (57 %)Writing at 0x00063c00... (57 %)Writing at 0x00064000... (57 %)Writing at 0x00064400... (57 %)Writing at 0x00064800... (57 %)Writing at 0x00064c00... (58 %)Writing at 0x00065000... (58 %)Writing at 0x00065400... (58 %)Writing at 0x00065800... (58 %)Writing at 0x00065c00... (58 %)Writing at 0x00066000... (58 %)Writing at 0x00066400... (58 %)Writing at 0x00066800... (59 %)Writing at 0x00066c00... (59 %)Writing at 0x00067000... (59 %)Writing at 0x00067400... (59 %)Writing at 0x00067800... (59 %)Writing at 0x00067c00... (59 %)Writing at 0x00068000... (59 %)Writing at 0x00068400... (60 %)Writing at 0x00068800... (60 %)Writing at 0x00068c00... (60 %)Writing at 0x00069000... (60 %)Writing at 0x00069400... (60 %)Writing at 0x00069800... (60 %)Writing at 0x00069c00... (60 %)Writing at 0x0006a000... (61 %)Writing at 0x0006a400... (61 %)Writing at 0x0006a800... (61 %)Writing at 0x0006ac00... (61 %)Writing at 0x0006b000... (61 %)Writing at 0x0006b400... (61 %)Writing at 0x0006b800... (61 %)Writing at 0x0006bc00... (62 %)Writing at 0x0006c000... (62 %)Writing at 0x0006c400... (62 %)Writing at 0x0006c800... (62 %)Writing at 0x0006cc00... (62 %)Writing at 0x0006d000... (62 %)Writing at 0x0006d400... (62 %)Writing at 0x0006d800... (63 %)Writing at 0x0006dc00... (63 %)Writing at 0x0006e000... (63 %)Writing at 0x0006e400... (63 %)Writing at 0x0006e800... (63 %)Writing at 0x0006ec00... (63 %)Writing at 0x0006f000... (63 %)Writing at 0x0006f400... (64 %)Writing at 0x0006f800... (64 %)Writing at 0x0006fc00... (64 %)Writing at 0x00070000... (64 %)Writing at 0x00070400... (64 %)Writing at 0x00070800... (64 %)Writing at 0x00070c00... (64 %)Writing at 0x00071000... (65 %)Writing at 0x00071400... (65 %)Writing at 0x00071800... (65 %)Writing at 0x00071c00... (65 %)Writing at 0x00072000... (65 %)Writing at 0x00072400... (65 %)Writing at 0x00072800... (65 %)Writing at 0x00072c00... (66 %)Writing at 0x00073000... (66 %)Writing at 0x00073400... (66 %)Writing at 0x00073800... (66 %)Writing at 0x00073c00... (66 %)Writing at 0x00074000... (66 %)Writing at 0x00074400... (66 %)Writing at 0x00074800... (67 %)Writing at 0x00074c00... (67 %)Writing at 0x00075000... (67 %)Writing at 0x00075400... (67 %)Writing at 0x00075800... (67 %)Writing at 0x00075c00... (67 %)Writing at 0x00076000... (67 %)Writing at 0x00076400... (68 %)Writing at 0x00076800... (68 %)Writing at 0x00076c00... (68 %)Writing at 0x00077000... (68 %)Writing at 0x00077400... (68 %)Writing at 0x00077800... (68 %)Writing at 0x00077c00... (68 %)Writing at 0x00078000... (69 %)Writing at 0x00078400... (69 %)Writing at 0x00078800... (69 %)Writing at 0x00078c00... (69 %)Writing at 0x00079000... (69 %)Writing at 0x00079400... (69 %)Writing at 0x00079800... (69 %)Writing at 0x00079c00... (70 %)Writing at 0x0007a000... (70 %)Writing at 0x0007a400... (70 %)Writing at 0x0007a800... (70 %)Writing at 0x0007ac00... (70 %)Writing at 0x0007b000... (70 %)Writing at 0x0007b400... (70 %)Writing at 0x0007b800... (71 %)Writing at 0x0007bc00... (71 %)Writing at 0x0007c000... (71 %)Writing at 0x0007c400... (71 %)Writing at 0x0007c800... (71 %)Writing at 0x0007cc00... (71 %)Writing at 0x0007d000... (71 %)Writing at 0x0007d400... (72 %)Writing at 0x0007d800... (72 %)Writing at 0x0007dc00... (72 %)Writing at 0x0007e000... (72 %)Writing at 0x0007e400... (72 %)Writing at 0x0007e800... (72 %)Writing at 0x0007ec00... (72 %)Writing at 0x0007f000... (73 %)Writing at 0x0007f400... (73 %)Writing at 0x0007f800... (73 %)Writing at 0x0007fc00... (73 %)Writing at 0x00080000... (73 %)Writing at 0x00080400... (73 %)Writing at 0x00080800... (73 %)Writing at 0x00080c00... (74 %)Writing at 0x00081000... (74 %)Writing at 0x00081400... (74 %)Writing at 0x00081800... (74 %)Writing at 0x00081c00... (74 %)Writing at 0x00082000... (74 %)Writing at 0x00082400... (75 %)Writing at 0x00082800... (75 %)Writing at 0x00082c00... (75 %)Writing at 0x00083000... (75 %)Writing at 0x00083400... (75 %)Writing at 0x00083800... (75 %)Writing at 0x00083c00... (75 %)Writing at 0x00084000... (76 %)Writing at 0x00084400... (76 %)Writing at 0x00084800... (76 %)Writing at 0x00084c00... (76 %)Writing at 0x00085000... (76 %)Writing at 0x00085400... (76 %)Writing at 0x00085800... (76 %)Writing at 0x00085c00... (77 %)Writing at 0x00086000... (77 %)Writing at 0x00086400... (77 %)Writing at 0x00086800... (77 %)Writing at 0x00086c00... (77 %)Writing at 0x00087000... (77 %)Writing at 0x00087400... (77 %)Writing at 0x00087800... (78 %)Writing at 0x00087c00... (78 %)Writing at 0x00088000... (78 %)Writing at 0x00088400... (78 %)Writing at 0x00088800... (78 %)Writing at 0x00088c00... (78 %)Writing at 0x00089000... (78 %)Writing at 0x00089400... (79 %)Writing at 0x00089800... (79 %)Writing at 0x00089c00... (79 %)Writing at 0x0008a000... (79 %)Writing at 0x0008a400... (79 %)Writing at 0x0008a800... (79 %)Writing at 0x0008ac00... (79 %)Writing at 0x0008b000... (80 %)Writing at 0x0008b400... (80 %)Writing at 0x0008b800... (80 %)Writing at 0x0008bc00... (80 %)Writing at 0x0008c000... (80 %)Writing at 0x0008c400... (80 %)Writing at 0x0008c800... (80 %)Writing at 0x0008cc00... (81 %)Writing at 0x0008d000... (81 %)Writing at 0x0008d400... (81 %)Writing at 0x0008d800... (81 %)Writing at 0x0008dc00... (81 %)Writing at 0x0008e000... (81 %)Writing at 0x0008e400... (81 %)Writing at 0x0008e800... (82 %)Writing at 0x0008ec00... (82 %)Writing at 0x0008f000... (82 %)Writing at 0x0008f400... (82 %)Writing at 0x0008f800... (82 %)Writing at 0x0008fc00... (82 %)Writing at 0x00090000... (82 %)Writing at 0x00090400... (83 %)Writing at 0x00090800... (83 %)Writing at 0x00090c00... (83 %)Writing at 0x00091000... (83 %)Writing at 0x00091400... (83 %)Writing at 0x00091800... (83 %)Writing at 0x00091c00... (83 %)Writing at 0x00092000... (84 %)Writing at 0x00092400... (84 %)Writing at 0x00092800... (84 %)Writing at 0x00092c00... (84 %)Writing at 0x00093000... (84 %)Writing at 0x00093400... (84 %)Writing at 0x00093800... (84 %)Writing at 0x00093c00... (85 %)Writing at 0x00094000... (85 %)Writing at 0x00094400... (85 %)Writing at 0x00094800... (85 %)Writing at 0x00094c00... (85 %)Writing at 0x00095000... (85 %)Writing at 0x00095400... (85 %)Writing at 0x00095800... (86 %)Writing at 0x00095c00... (86 %)Writing at 0x00096000... (86 %)Writing at 0x00096400... (86 %)Writing at 0x00096800... (86 %)Writing at 0x00096c00... (86 %)Writing at 0x00097000... (86 %)Writing at 0x00097400... (87 %)Writing at 0x00097800... (87 %)Writing at 0x00097c00... (87 %)Writing at 0x00098000... (87 %)Writing at 0x00098400... (87 %)Writing at 0x00098800... (87 %)Writing at 0x00098c00... (87 %)Writing at 0x00099000... (88 %)Writing at 0x00099400... (88 %)Writing at 0x00099800... (88 %)Writing at 0x00099c00... (88 %)Writing at 0x0009a000... (88 %)Writing at 0x0009a400... (88 %)Writing at 0x0009a800... (88 %)Writing at 0x0009ac00... (89 %)Writing at 0x0009b000... (89 %)Writing at 0x0009b400... (89 %)Writing at 0x0009b800... (89 %)Writing at 0x0009bc00... (89 %)Writing at 0x0009c000... (89 %)Writing at 0x0009c400... (89 %)Writing at 0x0009c800... (90 %)Writing at 0x0009cc00... (90 %)Writing at 0x0009d000... (90 %)Writing at 0x0009d400... (90 %)Writing at 0x0009d800... (90 %)Writing at 0x0009dc00... (90 %)Writing at 0x0009e000... (90 %)Writing at 0x0009e400... (91 %)Writing at 0x0009e800... (91 %)Writing at 0x0009ec00... (91 %)Writing at 0x0009f000... (91 %)Writing at 0x0009f400... (91 %)Writing at 0x0009f800... (91 %)Writing at 0x0009fc00... (91 %)Writing at 0x000a0000... (92 %)Writing at 0x000a0400... (92 %)Writing at 0x000a0800... (92 %)Writing at 0x000a0c00... (92 %)Writing at 0x000a1000... (92 %)Writing at 0x000a1400... (92 %)Writing at 0x000a1800... (92 %)Writing at 0x000a1c00... (93 %)Writing at 0x000a2000... (93 %)Writing at 0x000a2400... (93 %)Writing at 0x000a2800... (93 %)Writing at 0x000a2c00... (93 %)Writing at 0x000a3000... (93 %)Writing at 0x000a3400... (93 %)Writing at 0x000a3800... (94 %)Writing at 0x000a3c00... (94 %)Writing at 0x000a4000... (94 %)Writing at 0x000a4400... (94 %)Writing at 0x000a4800... (94 %)Writing at 0x000a4c00... (94 %)Writing at 0x000a5000... (94 %)Writing at 0x000a5400... (95 %)Writing at 0x000a5800... (95 %)Writing at 0x000a5c00... (95 %)Writing at 0x000a6000... (95 %)Writing at 0x000a6400... (95 %)Writing at 0x000a6800... (95 %)Writing at 0x000a6c00... (95 %)Writing at 0x000a7000... (96 %)Writing at 0x000a7400... (96 %)Writing at 0x000a7800... (96 %)Writing at 0x000a7c00... (96 %)Writing at 0x000a8000... (96 %)Writing at 0x000a8400... (96 %)Writing at 0x000a8800... (96 %)Writing at 0x000a8c00... (97 %)Writing at 0x000a9000... (97 %)Writing at 0x000a9400... (97 %)Writing at 0x000a9800... (97 %)Writing at 0x000a9c00... (97 %)Writing at 0x000aa000... (97 %)Writing at 0x000aa400... (97 %)Writing at 0x000aa800... (98 %)Writing at 0x000aac00... (98 %)Writing at 0x000ab000... (98 %)Writing at 0x000ab400... (98 %)Writing at 0x000ab800... (98 %)Writing at 0x000abc00... (98 %)Writing at 0x000ac000... (98 %)Writing at 0x000ac400... (99 %)Writing at 0x000ac800... (99 %)Writing at 0x000acc00... (99 %)Writing at 0x000ad000... (99 %)Writing at 0x000ad400... (99 %)Writing at 0x000ad800... (99 %)Writing at 0x000adc00... (100 %)Took 136.76s to write 712704 bytes
Resetting

@hathach I was able to reproduce and workaround this issue.
I found that when using the FTDI cable to flash the ESP8266, it failed if I erased the ESP8266 first!
I then flashed CP to the ESP8266 and then retried flashing the AT_Firmware without erasing and it worked.
I also found that if I was in the failed state, just reflashing the AT_firmware did not work. I had to load CP in between (possible something other than CP could be used but I did not try)
So -- basically -- don't erase the ESP8266 before flashing the AT Firmware file!

I also tried erasing the ESP8266 using y FTDI calble then loading the ATFirmware via miniesptool and a feather m4 and the load failed as before ( flashing blue light)
I then used minesptool to flash a CP image to the ESP8266 - after flashing the ESP8266 still showed the rapidly blinking blue light.
I then repeated the load of the AT Firmware via miniesptool and this load was successful
Interesting.... but there does appear to be a reliable workaround.

Note: it is very reproducible to cause the failed load of the AT Firmware by "pre-erasing" the ESP8266 vi an FTDI cable.

@ladyada - just a thought - is it possible that the AT_Firmware_1.6.2.0.bin file is missing a necessary component that is loaded when CP is flashed first but is not there if the chip is erased? I'm still a bit fuzzy about what has to go into the flash build for the At firmware combined file

that did the trick, I need to do it twice to get it running :)

root cause is the frame error, stop bit is not valid (not data overflow as suspected), data is literally garbage. Reading datasheet for nice way to recover :D

Was this page helpful?
0 / 5 - 0 ratings