<p></p>
<p>Maybe <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/users/gschorcht/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gschorcht">@gschorcht</a> has some info.</p>
<h4>Debugging</h4>
<p>I enabled <code>ENABLE_DEBUG</code> in <code>cpu/esp_common/periph/flash.c</code> and I can see that the device hangs in the erase function. Adding a few printf I see that it always hangs inside <code>spi_flash_erase_sector</code>.</p>
<p>My guess is that this is related to a WiFi-related ISR triggering while we are waiting for the flash to erase a block. Erasing a block happens in the ROM function <code>SPI_sector_erase</code>, which is inside a block of <code>Cache_Read_Disable_2</code> and <code>Cache_Read_Enable_2</code> when called from <code>spi_flash_erase_sector</code>.</p>
<p>I listed the ISR handlers in the <code>_xt_interrupt_table</code> and handlers 8 (ETS_WDT_INUM, registered to <code>esp_task_wdt_isr</code>) and 10 (registered to ets_timer_handler_dsr) are the only ones in 0x402xxxxx address range (IROM - flash), while others are in IRAM. I don't know if this makes a difference.</p>
<p>I replaced ISR 10 with a wrapper in IRAM that raises a GPIO, then calls the original handler and then lowers the GPIO after returning from the handler. I can see ISR 10 firing every 100ms in the esp_wifi case. This doesn't occur at all when esp_wifi module is not compiled (the ISR 10 is also not registered to anything).</p>
<p>My guess would be that the CPU is trying to execute something from flash (IROM) but the flash is disabled / not mapped or something like that which causes the CPU to stall, and my guess would be that this code is the ISR 10; however I don't see the GPIO high when the CPU hangs which would indicate that's not inside the ISR 10.</p>
<p>Any other idea of where could it be hanging? I couldn't get the JTAG debugger to work so I don't know what's the CPU doing before WDT triggers. I'll try to debug a bit more but I'm out of ideas.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/issues/16281#issuecomment-813683109">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYHRQ2XJFU5S44XTFV3THIZSXANCNFSM42NM2QIA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/ABE7WYATUCJ7UU32HXLP7NTTHIZSXA5CNFSM42NM2QIKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGB75DJI.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/issues/16281#issuecomment-813683109",
"url": "https://github.com/RIOT-OS/RIOT/issues/16281#issuecomment-813683109",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>