3 ms·
> (And if you think ESP-IDF is a handful, good lord, pray that you never have to deal with Zephyr.) Well, that's stings. Can you elaborate on your trouble wit
by ajross 4y ago
> (And if you think ESP-IDF is a handful, good lord, pray that you never have to deal with Zephyr.)
Well, that's stings. Can you elaborate on your trouble with getting Zephyr working on ESP32? My memory is it's actually one of our simpler platforms, though it's true Zephyr isn't itself an IDE. It's an RTOS with a C API; you're expected to build at the command line with a wrapper tool (west), and to have downloaded and unpack an SDK tarball. But really there's not much more to it than that.
- bborud 4y agoI don't use Zephyr on ESP32. I try to use it on the nRF91. And there is a lot more to it if you actually want to build a device that has a few sensors, does a bit of mobile networking AND you need to develop this over time and upgrade the SDK from time to time.
- AlotOfReading 4y agoNot OP, but from a professional perspective I wouldn't say it's pain free. Your first issue is going to be figuring out whether your needs are even supported by the stack by going to [0]. I appreciate the difficulty of supporting hardware, but that much red would definitely have hurt it during RTOS selection for me. Second, what if the hardware people want to use the S3 because of availability concerns? There's no table I've ever found, you just have to troll through code and GitHub issues to figure it out. One other frustration is how obtuse the error messages can be. If west encounters a situation it doesn't like, it will often dump stack traces rather than print an error message. If you have something in the wrong directory or a typo etc, the magic in the build system often just fails and prints a generic error message or nothing at all. Maybe you screwed up the DT, maybe you named something incorrectly, maybe it's in the wrong directory, or maybe you typo'd. All of these can produce the same error messages at build time, which gets annoying. With that said, the zephyr experience is remarkably pain-free and Linux-like compared to some vendor toolchains and generally good enough that I advocate for it internally. [0] https://www.espressif.com/en/news/Zephyr_updates https://www.espressif.com/en/news/Zephyr_updates
- ajross 4y agoSome of that seems a little unfair. The desire in the first paragraph is for a fully-integrated, vendor-supplied SDK for a single board where everything works. The bit in the second is about doing configuration and integration work on new hardware. I think both criticisms are reasonable but they aren't from the same perspective. In this case, yes, Espressif (who I'm not affiliated with and don't want to speak for, though I have worked on the ESP32 -- it was actually Zephyr's launch hardware for SMP, as it happens) doesn't quite have everything wired up yet. And that's unfortunate, but not so much a ding at Zephyr as with this particular integration (other chip vendors, Nordic especially, tend to be farther along). And as for doing devicetree work... yeah, I don't like it either and try to stick to the kernel. But it's a ton cleaner than the kind of cut/paste you see with other solutions (and especially with whole-board IDE/SDKs!). In Zephyr, if you have a part that has an instance of some existing hardware integrated on another platform (a Synopsys DMA controller, some third-party I2C accelerometer, whatever), the configuration is usually/hopefully as simple as a three-line block of DTS with the addresses and interrupts filled in. For platform integrators, it's probably our single most attractive feature.
- jtwaleson 4y agoFor a hobby project I’ve used Zephyr via the segger embedded studio for the nrf52. Coming from full stack web development and having dabbled with Arduino IDE, the learning curve was a lot steeper. But I totally understand why, the problem space of supporting all of the different chips and all of the different libraries is huge. It didn’t help that nordics was transitioning from their old stack to the zephyr based one and all the forums and documentation was incredibly confusing because of that. After learning the options menu where you select which parts of the stack to include in your binary things started making a bit of sense, but I still have no idea whether the softdevice is still a thing or not . If you ever want more user feedback feel free to reach out. There are definitely amazing features in the ecosystem. E.g. the fact that you can run a live debugger on this tiny chip is mind blowing.