ESP32: leaving love notes and entering demoscene territory (2022)
theor.xyz
theor.xyz
Investigating this lead me to an interesting polish company called semihalf who were recently acquired by google.
https://www.youtube.com/watch?v=qLh1FOcGysY
Apparently they added some Xtensa support to clang. I guess that means xtensa is very important in the android context.
Here's the ISA summary for Xtensa LX as used by the ESP32: https://www.cadence.com/content/dam/cadence-www/global/en_US...
The S2 & S3 are more powerful and capable than the currently available Espressif RISC-V microcontrollers. Perhaps it's best to think of them marking the summit or climax of Espressif's Xtensa parts. But the future clearly lies with RISC-V.
The Xtensa support in LLVM/Clang appears to have resulted (at least in part) from Espressif's active support for Rust on their microcontrollers. The recent Rust 1.81 release merged support for the ESP32, ESP32-S2 and ESP32-S3 into upstream rustc. It's great to see a microcontroller vendor directly support the use of Rust on its parts, and not just its "new" parts.
Edit: To be clear, the ESP-IDF framework is a huge C project, so Espressif working on LLVM support for Xtensa is clearly _not just_ for Rust. And "easy mode" Rust-on-Espressif (std support!) relies on the ESP-IDF so merging their patches into LLVM is beneficial all-round.
When instantiating an xtensa core you can choose how many registers you want, whether you want to have register windows or not, and many other options.
If you want a compiler that targets a given instance of that architecture you have to tailor it to those parameters.
I had to reverse engineer a lot of details (number of registers, Layout of the stack frame in various kinds of interrupts and traps etc) because xtensa didn't publish the actual parameters of their xtensa instantiation
The one I highlighted is a work-in-progress GL based editor that isn't windows-specific [1], and is indeed the one they were criticizing for the small font/not dpi aware, my mistake. They didn't link it in the article, which is why I felt compelled to link it.
No need to be a twat about it. I have commits in emoon's GL editor and GNU Rocket, these aren't some uninformed b.s. drive-by comments.
If that piques your interest—-even if, like me, you feel a bit intimidated by hardware—-I tried to write down as much of the journey and learning as I could: https://github.com/zellyn/weblight