-->
Page 1 of 1

wdt reset from <lmacProcessTxSuccess> @TxSuccess+0x60

PostPosted: Tue Sep 21, 2021 9:20 pm
by esp8266_abc
Hi Buddy,

I am being depressed after weeks of endeavor to fix the annoying wdt reset from the SDK, function of lmacProcessTxSuccess, traced to the assembly codes as below:

4010xxxx: fe5221 l32r a2, 4010xxxx <lmacIsIdle+0x18>
4010xxxx: fe5331 l32r a3, 4010xxxx <lmacIsIdle+0x1c>
4010xxxx: aca242 movi a4, 0x2ac
4010xxxx: eeec01 l32r a0, 40100180 # this is print
4010xxxx: 0000c0 callx0 a0
4010WXYZ: ffff06 j 4010WXYZ <lmacProcessTxSuccess+0x60>

In above portion of codes, it prints via serial something like "mac xxx" (xxx is a number indicate lines in the sdk source possibly, in this portion of codes, or this version of SDK, xxx=684, i.e. 0x2ac), and the enter a endless loop: "4010WXYZ: ffff06 j 4010WXYZ <lmacProcessTxSuccess+0x60>" which triggers the wdt reset.

We tried nearly all kinds of SDK by Espressif. Although the generated codes might have different address of layout, but we encountered the same wdt reset, always triggered from <lmacProcessTxSuccess+0x60>.

<lmacProcessTxSuccess> is called by <wDev_ProcessFiq> which seems to be the timer handler of the esp8266 system.

Who could help me out of the annoying trouble? Although it comes out in a random manner, but DOES come not less frequently.

Thanks!

Re: wdt reset from <lmacProcessTxSuccess> @TxSuccess+0x60

PostPosted: Sun Sep 26, 2021 4:34 am
by eriksl
Both symptoms really say just one thing: the SDK code isn't called frequently enough. You can't call the SDK background code yourself, it must be done by returning to it. So anything taking more than just a few milliseconds must be sliced into parts of just a few msec and then be processed, piece by piece, from a timer or a task. It can be daunting, but it can be done.

Re: wdt reset from <lmacProcessTxSuccess> @TxSuccess+0x60

PostPosted: Mon Sep 27, 2021 5:53 am
by esp8266_abc
eriksl wrote:Both symptoms really say just one thing: the SDK code isn't called frequently enough. You can't call the SDK background code yourself, it must be done by returning to it. So anything taking more than just a few milliseconds must be sliced into parts of just a few msec and then be processed, piece by piece, from a timer or a task. It can be daunting, but it can be done.



Thanks for the reply. But... Frankly speaking, FAILED to catch your point although read through again and again . Sorry.

Would please help give straightforward answer like below:

1. what does it mean when print "mac 684" or jump to <lmacProcessTxSuccess+0x60>?

2. What is the direct cause which bring about the jump to <lmacProcessTxSuccess+0x60>?

3. How to fix or avoid it in my codes?

Thanks!

Re: wdt reset from <lmacProcessTxSuccess> @TxSuccess+0x60

PostPosted: Thu Sep 30, 2021 10:18 am
by eriksl
It means the SDK framework code, the interface to the wifi subsystem, fails to send frames because you don't call them often enough. This is not an operating system where such things happen "magically" in the background. Your code needs to return to from where it was called at least every 10 ms and then the wifi code will do it's thing. If you don't, you'll get watchdog resets and this kind of errors.