d-a-v on master
emulation on host: avoid closin… (compare)
Hoping for some knowledge from the brains trust here. I have been battling with a problem with the Arduino IDE for several weeks where I cannot upload to a Wemos D1 mini via the usb port, on all three computers, all running Ubuntu 20.04, Arduino 1.8.13, and esp core 3.0.2 but also tried 3.0.0 and 2.7.4 from GitHub.
I have been playing with the Wemos D1 mini's for a few years now and are usually having no trouble uploading via USB. I can upload to AVR boards via USB without problem. It seems specific to the esp8266 based boards.
The fault I get in Arduino is as follows:
Arduino: 1.8.13 (Linux), Board: "LOLIN(WEMOS) D1 R2 & mini, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:1MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
Executable segment sizes:
ICACHE : 32768 - flash instruction cache
IROM : 355044 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 29385 / 32768 - code in IRAM (IRAM_ATTR, ISRs...)
DATA : 1524 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 2736 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 28368 ) - zeroed variables (global, static) in RAM/HEAP
Sketch uses 388689 bytes (37%) of program storage space. Maximum is 1044464 bytes.
Global variables use 32628 bytes (39%) of dynamic memory, leaving 49292 bytes for local variables. Maximum is 81920 bytes.
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting........_____....._____....._____....._____....._____....._____....._____
Traceback (most recent call last):
File "/home/chris/arduino-1.8.13/hardware/esp8266com/esp8266/tools/upload.py", line 66, in <module>
esptool.main(cmdline)
File "/home/chris/arduino-1.8.13/hardware/esp8266com/esp8266/tools/esptool/esptool.py", line 3552, in main
esp.connect(args.before, args.connect_attempts)
File "/home/chris/arduino-1.8.13/hardware/esp8266com/esp8266/tools/esptool/esptool.py", line 529, in connect
raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
It looks like a Python fault, but thats ...errrr.... above my pay grade. ;-)
This is what's weird. If I run a VM Win7 from within the same Ubuntu 20.04, I can upload via USB no problem from the windoze Arduino ide which is running in the VM on the Ubuntu host.
No doubt someone is looking at this and slapping their forehead while muttering "why doesn't he just do ??this", but the solution is not obvious to me. Any help would be appreciated.
0x4021f788 in __esp_delay at /home/no/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/core_esp8266_main.cpp:152
0x4021f7e1 in esp_try_delay(unsigned int, unsigned int, unsigned int) at /home/no/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/core_esp8266_main.cpp:171
0x40214cac in esp_delay<ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, uint32_t)::<lambda()> > at /home/no/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/coredecls.h:66
(inlined by) ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, unsigned int) at /home/no/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp:628
pinMode(A0, INPUT)
, when using the analogRead(A0)
function?
rf_mode
?WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED. (GPIO16 needs to be tied to RST to wake from deepSleep.)
The chip can sleep for at most ESP.deepSleepMax() microseconds.
If you implement deep sleep with WAKE_RF_DISABLED and require WiFi functionality on wake up,
you will need to implement an additional WAKE_RF_DEFAULT before WiFi functionality is available.
RF_MODE
is there a possibility to check it after boot?
Hi, could someone help me understand this crash please?
Exception (29):
epc1=0x402117af epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000010 depc=0x00000000
StoreProhibited: A store referenced a page mapped with an attribute that does not permit stores
epc1=0x402117af in Stream::sendGeneric(Print*, int, int, unsigned int) at ??:?
We log memory usage immediately before:[TRACE] TRACER: Free Stack 2372, Free DRAM 31368, Biggest DRAM Block 27632, Free IRAM 20328, Connection 1
It happens when I call HttpClient::getString()
[HTTP-Client][begin] host: iop-monitor-server.tk port: 4001 url: /v1/user/login
[HTTP-Client][end] tcp is closed
[String] Reallocating large String(143 -> 155 bytes) 'Content-Ty ... K: '
[String] Reallocating large String(155 -> 175 bytes) 'Content-Ty ... C: '
[String] Reallocating large String(175 -> 219 bytes) 'Content-Ty ... NG: '
[String] Reallocating large String(219 -> 236 bytes) 'Content-Ty ... .tk:4001'
[HTTP-Client][sendRequest] type: 'POST' redirCount: 0
[HTTP-Client] connect: HTTPClient::begin was not called or returned error
[HTTP-Client][returnError] error(-1): connection failed
[DEBUG] _client.get() is nullptr
Fatal exception 29(StoreProhibitedCause):
epc1=0x4021bcb2, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000010, depc=0x00000000
ESP8266WiFiGenericClass::hostByName
from WiFiClientSecureCtx::connect("iop-monitor-server.tk", 4001)
[INFO] NETWORK: Free Stack 724, Free DRAM 36672, Biggest DRAM Block 35784, Free IRAM 36672, Connection 1
[hostByName] request IP for: iop-monitor-server.tk
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
>>>stack>>>
ctx: sys
sp: 3ffff0d0 end: 3fffffb0 offset: 01a0
...
0x4022126c in __esp_delay at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/core_esp8266_main.cpp:152
0x402212c5 in esp_try_delay(unsigned int, unsigned int, unsigned int) at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/core_esp8266_main.cpp:171
0x40214288 in esp_delay<ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, uint32_t)::<lambda()> > at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/coredecls.h:66
(inlined by) ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&, unsigned int) at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp:626
0x40204f76 in iop::logMemory(iop::Log const&) at src/core/log.cpp:253
0x40101354 in check_poison_block at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/umm_malloc/umm_poison.c:96
0x40214308 in ESP8266WiFiGenericClass::hostByName(char const*, IPAddress&) at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp:598
0x40217df0 in BearSSL::WiFiClientSecureCtx::connect(char const*, unsigned short) at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.cpp:222
0x401010d0 in put_poison at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/umm_malloc/umm_poison.c:37
0x40224ff8 in std::_Function_base::~_Function_base() at ??:?
0x4029a130 in system_get_sdk_version at ??:?
0x402095ed in driver::HTTPClient::begin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) at src/driver/client.cpp:161
0x40100b30 in heap_pvPortMalloc at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/heap.cpp:278
0x40220034 in String::init() at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/WString.h:283
(inlined by) String::String() at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/WString.h:55
(inlined by) operator+(String&&, String&&) at /home/no/.platformio/packages/framework-arduinoespressif8266@src-9e6d7244c46d325024685829a1341b58/cores/esp8266/WString.cpp:453
0x4022dfbf in std::__cxx11::basic_string<char, std::char_traits<char>
Hi Max Prokhorov, you mean something like this?
template <typename T>
inline void esp_delay(const uint32_t timeout_ms, T&& blocked, const uint32_t intvl_ms) {
const auto start_ms = millis();
while (!esp_try_delay(start_ms, timeout_ms, intvl_ms) && blocked()) {
std::cout << timeout_ms << " " << start_ms << " " << intvl_ms << " " << blocked() << "\n";
}
}
bool esp_try_delay(const uint32_t start_ms, const uint32_t timeout_ms, const uint32_t intvl_ms) {
uint32_t expired = millis() - start_ms;
std::cout << expired << std::endl;
if (expired >= timeout_ms) {
return true;
}
esp_delay(std::min((timeout_ms - expired), intvl_ms));
return false;
}
Logs:
10000 5330 1 1
2729
... // Dozens more that are very similar
10000 5330 1 1
2731
10000 5330 1 1
2733
10000 5330 1 1
2735
10000 5330 1 1
2736
10000 5330 1 1
2738
10000 5330 1 1
27
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Soft WDT reset
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v000dd7e0
~ld
why is .c set to have -fno-inline-functions?
I think it is historical and probably meant to save space back then.
.c
files were converted to .cpp
files quite a time ago.