<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Oh my…<br>
<br>
Can it be the first 2 MB are taboo for core 1 and the second 2 MB
for core 0?<br>
<br>
Anyway, we won't need those 2 MB for now, and hopefully this will
be fixed by Espressif soon.<br>
<br>
So I'd say yes, commit.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
Am 30.01.19 um 12:26 schrieb Mark Webb-Johnson:<br>
</div>
<blockquote type="cite"
cite="mid:2F06DE6F-A324-4137-90C7-B7450C61A0BA@webb-johnson.net">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
I tried changing CONFIG_SPIRAM_SIZE in sdkconfig directly, but it
just reset back to the default 4MB.
<div class=""><br class="">
</div>
<div class="">So changed esp-idf itself, components/esp32/Kconfig,
and added a prompt for that config option. I could then change
it in menuconfig and the change persisted.</div>
<div class=""><br class="">
</div>
<div class="">I then tested:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class="">
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (0) cpu_start: App
cpu up.</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (715) spiram: SPI
SRAM memory test OK</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (716) heap_init:
Initializing. RAM available for dynamic allocation:</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (716) heap_init: At
3FFAE6E0 len 00001920 (6 KiB): DRAM</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (723) heap_init: At
3FFBA920 len 000256E0 (149 KiB): DRAM</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (728) heap_init: At
3FFE0440 len 00003BC0 (14 KiB): D/IRAM</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (735) heap_init: At
3FFE4350 len 0001BCB0 (111 KiB): D/IRAM</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (742) heap_init: At
400953CC len 0000AC34 (43 KiB): IRAM</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (747) cpu_start: Pro
cpu start user code</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (752) spiram: Adding
pool of 2048K of external SPI memory to heap allocator</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (158) cpu_start:
Starting scheduler on PRO CPU.</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (0) cpu_start:
Starting scheduler on APP CPU.</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">This is ESP32 chip
with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 16MB
external flash</span></font></div>
</div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">…</span></font></div>
<div class="">
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (9566) test_task:
testing mode 1 loopcnt 1000</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">E (9576) test_task:
loop #1: corruption detected at pos=497 size=498</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">4348864OVMS WIFI BLE
BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">#1: size=498, data
@0x3f901ca0</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">4348864OVMS WIFI BLE
BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">E (9806) test_task:
loop #5: corruption detected at pos=497 size=498</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">4348864OVMS WIFI BLE
BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">E (10036) test_task:
loop #9: corruption detected at pos=829 size=830</span></font></div>
<div class=""><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">4348864OVMS WIFI BLE
BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23</span></font></div>
</div>
</blockquote>
<div class="">
<div><br class="">
</div>
<div>which looks like a FAIL to me?</div>
<div><br class="">
</div>
<div>So, then I tried something a little funky:</div>
<div><br class="">
</div>
<div>
<ol class="MailOutline">
<li class="">Go back to normal CONFIG_SPIRAM_SIZE 4MB<br
class="">
<br class="">
</li>
<li class="">Add this to main/test_memory_corruption.cpp
app_main():<br class="">
<br class="">
<font class="" face="Andale Mono"><span style="font-size:
14px;" class="">void* big2mb =
heap_caps_malloc(1024*1024*2, MALLOC_CAP_SPIRAM);<br
class="">
printf("Big 2MB spi memory allocation is at
%p\n",big2mb);</span></font><br class="">
<br class="">
</li>
<li class="">Rebuild and run...</li>
</ol>
</div>
</div>
<div><br class="">
</div>
<div>Here is what I get:</div>
<div><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (0) cpu_start: App
cpu up.</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1151) spiram: SPI
SRAM memory test OK</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1152) heap_init:
Initializing. RAM available for dynamic allocation:</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1152) heap_init:
At 3FFAE6E0 len 00001920 (6 KiB): DRAM</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1159) heap_init:
At 3FFBA920 len 000256E0 (149 KiB): DRAM</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1164) heap_init:
At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1171) heap_init:
At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1179) heap_init:
At 400953CC len 0000AC34 (43 KiB): IRAM</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1184) cpu_start:
Pro cpu start user code</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1188) spiram:
Adding pool of 4096K of external SPI memory to heap
allocator</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (206) cpu_start:
Starting scheduler on PRO CPU.</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (0) cpu_start:
Starting scheduler on APP CPU.</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">...</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">This is ESP32 chip
with 2 CPU cores, WiFi/BT/BLE, silicon revision 1,
16MB external flash</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">Big 2MB spi memory
allocation is at 0x3f800028</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">...</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (291) wifi
station: ESP_WIFI_MODE_APSTA</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (291) wifi: wifi
driver task: 3ffc25c4, prio:23, stack:3584, core=0</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">...</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (3281) wifi
station: retry to connect to the AP</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (3281) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (6111) wifi
station: retry to connect to the AP</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (6111) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (8461)
mem_stresser: started on core 0 mem @0x3fa01b98</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (8461)
mem_stresser: started on core 1 mem @0x3fa81bac</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (8951) wifi
station: retry to connect to the AP</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (8951) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (9461) test_task:
running on core 1</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (9561) test_task:
testing mode 1 loopcnt 1000</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">#1: size=1039, data
@0x3fb01ca4</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">4348864OVMS WIFI BLE
BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2
rev=ESP32/1WLAN-214677-52wifi103.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.2-dev-1419-g5afc1b0cb-dirty Jan 27 2019
15:08:23)4348864OVMS WIFI BLE BT cores=2 rev=ESP32/1</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (11781) wifi
station: retry to connect to the AP</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (11781) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (14621) wifi
station: retry to connect to the AP</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (14621) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
</div>
</div>
<div class="">
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (17451) wifi
station: connect to the AP fail</span></font></div>
</div>
</div>
</blockquote>
<div class="">
<div>
<div><br class="">
</div>
<div>I left it running for a few minutes, but no faults shown.
Modes 1 through 4 all clean.</div>
<div><br class="">
</div>
<div>So, to take the funkiness to the next level, I added the
same to ovms_main, right at the start (actually in the log
level setter, as that seemed to be the first thing that
initialises). Somebody else gets in for 28bytes of SPIRAM
(or maybe that is a structure header), but anyway...</div>
<div><br class="">
</div>
</div>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding:
0px;" class="">
<div class="">
<div>
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1742) spiram:
SPI SRAM memory test OK</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1743)
heap_init: Initializing. RAM available for dynamic
allocation:</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1743)
heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1750)
heap_init: At 3FFCEDE8 len 00011218 (68 KiB): DRAM</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1755)
heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1762)
heap_init: At 3FFE4350 len 0001BCB0 (111 KiB):
D/IRAM</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1768)
heap_init: At 4009F530 len 00000AD0 (2 KiB): IRAM</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1775)
cpu_start: Pro cpu start user code</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (1779) spiram:
Adding pool of 4096K of external SPI memory to heap
allocator</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (125) ovms_main:
Set default logging level for * to INFO</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (126) ovms_main:
Pre-allocated 2MB of SPIRAM at 0x3f800028
(workaround ESP32 bug)</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">...</span></font></div>
<div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (17783)
webserver: Launching Web Server</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">I (17823) ssh:
Launching SSH Server</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">OVMS# test
string 500 2</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">#1: stdlen =
1027</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">1985504OVMS WIFI
BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504OVMS WIFI BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504OVMS WIFI BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504OVMS WIFI BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504OVMS WIFI BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504OVMS WIFI BLE BT cores=2
rev=ESP32/168HIGHWAYS-29wifi163.2.001-22-g14d16854-dirty/factory/edge
(build idf v3.1-dev-2835-g151269458-dirty Jan 30
2019 19:17:20)012.61985504</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">finished</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">OVMS#</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class=""><br class="">
</span></font></div>
<div><font class="" face="Andale Mono"><span
style="font-size: 14px;" class="">OVMS# module
memory<br class="">
Free 8-bit 76160/230212, 32-bit 812/2720, SPIRAM
1886108/4194252<br class="">
--Task-- Total DRAM D/IRAM IRAM SPIRAM +/-
DRAM D/IRAM IRAM SPIRAM<br class="">
main* 8368 0 0 8456
+8368 +0 +0 +8456<br class="">
no task* 5376 0 0 0
+5376 +0 +0 +0<br class="">
esp_timer 34808 0 6442123100
+34808 +0 +644+2123100<br class="">
OVMS Events 36352 41040 0 35120
+36352 +41040 +0 +35120<br class="">
OVMS DukTape 188 0 0 34668
+188 +0 +0 +34668<br class="">
OVMS CanRx 3124 0 0 26168
+3124 +0 +0 +26168<br class="">
ipc0 7776 0 0 0
+7776 +0 +0 +0<br class="">
ipc1 12 0 0 0
+12 +0 +0 +0<br class="">
Tmr Svc 0 88 0 0
+0 +88 +0 +0<br class="">
tiT 232 468 0 664
+232 +468 +0 +664<br class="">
wifi 600 8896 0 3324
+600 +8896 +0 +3324<br class="">
OVMS Console 0 200 1180 26332
+0 +200 +1180 +26332<br class="">
mdns 0 104 0 4
+0 +104 +0 +4<br class="">
OVMS NetMan 0 216 0 84
+0 +216 +0 +84</span></font></div>
</div>
</div>
</div>
</div>
</blockquote>
<div class="">
<div><br class="">
</div>
<div>I think that wins as the most ugly kludge to date.</div>
<div><br class="">
</div>
<div>Shall I commit?</div>
<div><br class="">
</div>
<div>Regards, Mark.</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 30 Jan 2019, at 5:00 PM, Mark Webb-Johnson
<<a href="mailto:mark@webb-johnson.net" class=""
moz-do-not-send="true">mark@webb-johnson.net</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode:
space; line-break: after-white-space;" class=""><br
class="">
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">On 30 Jan 2019, at 4:41 PM, Michael
Balzer <<a href="mailto:dexter@expeedo.de"
class="" moz-do-not-send="true">dexter@expeedo.de</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" class="">
<div text="#000000" bgcolor="#FFFFFF" class="">
<div class="moz-cite-prefix">Mark,<br class="">
<br class="">
issue #2892 mentions using only the lower 2 MB
of SPI RAM as a workaround. Where are our
allocations placed by the allocator? Does it
fill from the middle or end? If not we don't
use the upper half yet.<br class="">
</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
I saw that, and had a look. I don’t see anything in
makeconfig to limit to 2MB (not 4MB).</div>
<div class=""><br class="">
</div>
<div class="">I do see a CONFIG_SPIRAM_SIZE=4194304 in
sdkconfig, but not sure how it gets there. Perhaps we
can just change there to 2MB and try?</div>
<div class=""><br class="">
</div>
<div class="">I did see this in the documentation:</div>
<div class=""><br class="">
</div>
<blockquote style="margin: 0 0 0 40px; border: none;
padding: 0px;" class="">
<div class=""><span style="caret-color: rgb(64, 64,
64); color: rgb(64, 64, 64); font-family: Lato,
proxima-nova, "Helvetica Neue", Arial,
sans-serif; font-size: 16px; background-color:
rgb(252, 252, 252);" class="">During ESP-IDF
startup, external RAM is mapped into the data
address space starting at at address 0x3F800000
(byte-accessible). The length of this region is
the same as the SPIRAM size (up to the limit of
4MiB).</span></div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">So, maybe we can look at the address our
allocations come from to see their offset from
0x3F800000? If it is coming from the top 2MB, then
perhaps we start with a big 2MB allocation that we
never use?</div>
<div class=""> <br class="">
<blockquote type="cite" class="">
<div class="">
<div text="#000000" bgcolor="#FFFFFF" class="">
<div class="moz-cite-prefix">A possible
workaround for the most apparent issues with
this (string assembly) could be to use char
buffers instead of std::string. I was thinking
about doing that at least for the websocket
stream.<br class="">
</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
<div class="">It seems strange that we are only seeing
it with std::string. Maybe that just stresses the
system more, or does a lot of reallocations?</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div text="#000000" bgcolor="#FFFFFF" class="">
<div class="moz-cite-prefix"> But if this really
is a hardware issue it can affect all objects
in SPI RAM, appending to std::string then only
triggers this more often.<br class="">
<br class="">
Another workaround could be to run everything
on core 0.<br class="">
</div>
</div>
</div>
</blockquote>
<div class=""><br class="">
</div>
Urgh.</div>
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">
<div text="#000000" bgcolor="#FFFFFF" class="">
<div class="moz-cite-prefix">Regards,<br
class="">
Michael<br class="">
<br class="">
<br class="">
Am 30.01.19 um 03:33 schrieb Mark
Webb-Johnson:<br class="">
</div>
<blockquote type="cite"
cite="mid:4737F304-A344-4BD8-9B0C-95366DB7A40F@webb-johnson.net"
class="">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" class="">
Michael,
<div class=""><br class="">
</div>
<div class="">Espressif’s response (and
linking to that other issue) sounds like
others are seeing this.</div>
<div class=""><br class="">
</div>
<div class="">Lousy timing (with Chinese New
Year next week), so don’t expect anything
quick from Espressif. I guess we’ll just
have to live with it until they can find a
workaround. It sounds like the issue is at
the hardware level and a compiler patch will
be needed.</div>
<div class=""><br class="">
</div>
<div class="">Regards, Mark.<br class="">
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">On 30 Jan 2019, at 3:07
AM, Michael Balzer <<a
href="mailto:dexter@expeedo.de"
class="" moz-do-not-send="true">dexter@expeedo.de</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"
class="">
<div text="#000000" bgcolor="#FFFFFF"
class=""> → <a
class="moz-txt-link-freetext"
href="https://github.com/espressif/esp-idf/issues/3006"
moz-do-not-send="true">https://github.com/espressif/esp-idf/issues/3006</a><br
class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am
28.01.19 um 20:46 schrieb Michael
Balzer:<br class="">
</div>
<blockquote type="cite"
cite="mid:b193b172-9a83-6df5-7b61-9e0cbfa46281@expeedo.de"
class="">
<meta http-equiv="Content-Type"
content="text/html;
charset=UTF-8" class="">
To clarify: the bug is most likely
not restricted to the case of
building a message in a buffer. It
can possibly cause corruptions in
any RAM section, so can well be
responsible for many/most of the
unidentified crashes and
stack/heap corruptions we're
experiencing.<br class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am
28.01.19 um 20:43 schrieb
Michael Balzer:<br class="">
</div>
<blockquote type="cite"
cite="mid:06d0ea65-f4d5-e2c5-9ca1-b0ad63bfa3b1@expeedo.de"
class="">
<meta http-equiv="Content-Type"
content="text/html;
charset=UTF-8" class="">
For those not following the
github discussion: I'm pretty
sure I've nailed the bug down.<br
class="">
<br class="">
I have reproduced the bug in a
simple test project and intend
to raise an issue with Espressif
on this.<br class="">
<br class="">
<a class="moz-txt-link-freetext"
href="https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/189#issuecomment-457965435"
moz-do-not-send="true">https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/189#issuecomment-457965435</a><br
class="">
<br class="">
If you'd like to test this on
your module, configure the
project to your wifi
credentials, then use "make
flash". As the test project is
small, this normally will not
erase your OVMS config
partition, but a backup is
always recommended.<br class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br class="">
<br class="">
<div class="moz-cite-prefix">Am
24.01.19 um 21:19 schrieb
Michael Balzer:<br class="">
</div>
<blockquote type="cite"
cite="mid:e4159a1c-b283-25b0-f1b5-ce570b529a1c@expeedo.de"
class="">
<meta
http-equiv="content-type"
content="text/html;
charset=UTF-8" class="">
Everyone please have a look
at…<br class="">
<br class="">
<a
class="moz-txt-link-freetext"
href="https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/189#issuecomment-457334248"
moz-do-not-send="true">https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/189#issuecomment-457334248</a><br
class="">
<br class="">
Please try to reproduce the
bug on your modules.<br
class="">
<br class="">
I'm open for explanations.<br
class="">
<br class="">
I thought this might be some
copy-on-write bug with
std::string, but the gcc 5.x
libstdc++ does no longer use
that implementation (wouldn't
be C++11 compliant as well). I
also tried moving all strings
to temporary buffers, but
modes 5 & 6 eliminated
this explanation as well.<br
class="">
<br class="">
My remaining theories:<br
class="">
<ul class="">
<li class="">A task writing
out of bounds (but only
0-bytes?)</li>
<li class="">A hardware
issue only affecting some
modules<br class="">
</li>
</ul>
A hardware issue only
affecting some percentage of
ESP32 could explain this as
well as the strange heap
corruptions that seem to
affect some modules especially
often.<br class="">
<br class="">
Regards,<br class="">
Michael<br class="">
<br>
</blockquote>
</blockquote>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="144">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
</pre>
</body>
</html>