Finally found an implementation of longjmp() and setjmp() for the Xtensa LX106 cpu. I tested it with the sample code from Wikipedia and got the expected results :-)
I was able to compile µGFX after applying some small changes to the header files. However, I would like to have a better understanding of the BareMetal threading mechanism. The ESP8266 SDK is based on callbacks and no methods should run longer than a few ms at most, otherwise the connectivity may be affected and the watchdog timer will be triggered.
So running a loop like this to keep the µGFX event system running is not an option:
while(TRUE) {
gfxSleepMilliseconds(500);
}
Could be calling _gfxYield()_ every ms via a timer callback be a better approach?
Porting to ESP8266 Sming
in Development and Feedback
Posted
Finally found an implementation of longjmp() and setjmp() for the Xtensa LX106 cpu. I tested it with the sample code from Wikipedia and got the expected results :-)
I was able to compile µGFX after applying some small changes to the header files. However, I would like to have a better understanding of the BareMetal threading mechanism. The ESP8266 SDK is based on callbacks and no methods should run longer than a few ms at most, otherwise the connectivity may be affected and the watchdog timer will be triggered.
So running a loop like this to keep the µGFX event system running is not an option:
while(TRUE) { gfxSleepMilliseconds(500); }
Could be calling _gfxYield()_ every ms via a timer callback be a better approach?
static Timer* _timer; _timer = new Timer(); _timer->initializeMs(1, []() { gfxYield() ); }).start();
Or is this not required at all to use µGFXl? Thank you very much for your help!
With kind regards,
Matthias