3 ms·
As someone who is using Nim on the ESP32 for work, I'm curious how external driver binding works. The ESP32 is great on its own, but we rely on so many external
by girvo 5y ago
As someone who is using Nim on the ESP32 for work, I'm curious how external driver binding works. The ESP32 is great on its own, but we rely on so many external peripherals, and I'm not well versed in binding those sorts of things within Rust (and within embedded Rust, specifically)
- mikepurvis 5y agoNim feels like it would be a great option for interoperability with the existing ecosystem of OSes, LwIP, USB stacks, etc. OTOH, my experience of those libraries has been decidedly mixed, with it being relatively easy to get things apparently-working only to later sink dozens of hours into debugging that occasional weird crash.
- girvo 5y agoOh for sure, and there are still some impedance mismatches that absolutely exist while using Nim to target a fair few of those libraries. It's part of why we still use a decent chunk of C. That said, a lot of those weird crashes we run in to even in pure C itself. ESP-IDF has some... quirks. Don't get me started on heap corruption. The joys of embedded, I suppose. If anyone has got PPPoS working with LwIP, I'd love an email haha.
- elcritch 5y agoZephyr has PPPoS, in theory at least [1]. I've wanted to try it but haven't had a reason. Zephyr's heap is better too. Though the esp32 support isn't as complete. https://docs.zephyrproject.org/latest/reference/networking/ppp.html https://docs.zephyrproject.org/latest/reference/networking/p...
- girvo 5y agoYeah we tried to go the zephyr route! I reckon we’ll revisit it in about six to twelve months when we move to ARM instead of ESP32