cal wrote:just a short node. Since the newer SDK already installs a new vecbase you should be able to modify the nmi vector
without installing a new vecbase.
Guys, thank you for your hints, I appreciate that very much. This is the way I'll try, since I'm planning a project that will (hopefully) last some time, and moving back to an "old" SDK to solve that problem seems too dangerous.
Unfortunately I'm not that familiar with the xtensa architecture - but I'm willing to invest time and effort to get this running, and I'll report back to you.
To help me get started, maybe you could provide me with some information (if you have some at hand) for the following topics? Anything will do, maybe just a short statement, some link to some piece of sourcecode (even in other projects like linux-xtensa or something) where I can learn from:
- is installing a new vecbase as easy as setting a list of pointers somewhere in memory, and installing it with "wsr.vecbase"?
- what is the format/layout of that vector table? I've read the Xtensa ISA document on that topic, however it is very generic, do you know what alignment and size the table has in the case we have here (ESP8266/lx106)? At which position would the NMI vector be within the table?
- Cal, did I understand your hint correctly, if I check the current vecbase and find it already in RAM, I could just save the NMI pointer within the table, redirect it to my code, and write back the old pointer after my stuff?
- I suppose it would be beneficial to not completely skip the NMI but just "execute it later". Does anyone know if I there is some sort of "interrupt pending" bit that could be set from my code and would immediately trigger the NMI?
Thanks again for your support.
-Roland