4 ms·
I've been using Zephyr with Nordic chips for all of my personal projects lately, and it's been fantastic. (Zephyr's the upstream for the mentioned "equally exce
by jmgao 6y ago
I've been using Zephyr with Nordic chips for all of my personal projects lately, and it's been fantastic. (Zephyr's the upstream for the mentioned "equally excellent nRF-Connect-SDK")
Unlike most of the other options, Zephyr's run as an actual open source project and not just as a closed box you can peer into every once in a while, and Nordic seem to have gone all in on it.
- sunsetSamurai 6y agoHi, what type of personal projects are you working on? I started learning c recently and I want to learn embedded development, but I don't know where to start or how.
- jmgao 6y agoMy main one right now is a low latency game controller firmware: https://github.com/passinglink/passinglink https://github.com/passinglink/passinglink I think the most important thing to do figure out what you actually want to make. Any microcontroller SDKs are going to be at least usable for most things.
- ls65536 6y agoNot OP, but one thing I found useful when starting out with embedded development was to just get a simple "hello world" sort of program running on bare metal and printing over serial, and to try to understand what was happening in various places that made my program work (code execution on the microcontroller, sending of data over the serial lines, and so on). Even a straightforward Arduino-based environment [0] is usually enough to get started and begin poking around to see what else is possible! For myself, after getting something simple like the above working, it was a gateway to much more experimentation of further possibilities, and ultimately I ended up making an interactive shell [1][2] with some built-in utilities and text games I also wrote that runs on a variety of AVR microcontrollers (those very same Arduino boards I had when starting out). [0] https://www.arduino.cc/ https://www.arduino.cc/ [1] https://community.atmel.com/projects/avrsysh-systemshell-some-built-utilities-and-some-games https://community.atmel.com/projects/avrsysh-systemshell-som... [2] https://github.com/ls4096/avrsysh https://github.com/ls4096/avrsysh
- vaxman 6y ago> I started learning c recently and I want to learn embedded development, but I don't know where to start or how. After 38 years of programming in C, I'd instead recommend exploring CircuitPython.org from Limor ("Lady Ada") Fried based on the work of Damien George. Also recommend starting out using one of her kits https://www.adafruit.com/category/116 https://www.adafruit.com/category/116 and avoiding rechargeable batteries (unless they're NiCads) while keeping your USB power adapter on an easy-to-reach power strip for a while. Even back in the day, I would have recommended new embedded systems developers start with FORTH or BASIC (PEEK and POKE yoh) ..or if it was a serial/UART-controllable device, Phillippe's insanely great Turbo Pascal --that is unless you had already written a lot of applications in C and maybe a few operating system hacks or device driver mods too.
- vaxman 6y agoZephyr = winning! (except for the dumbass name, but could be worse, like Deb-Ian)
- bsder 6y agoUntil you have to go hunt a bug in Zephyr. Or you need a particular subsystem to have immediate priority NOW. It's quite irritating that everybody wants to complicate something which is basically "1) call this init function" "2) call that function every n ms on a timer". The problem in programming (and this is true even for desktop stuff) is that everybody wants to own the event loop. No. No no no no no no no. Bad programmer. No biscuit. Two systems that want to own the event loop can't compose. Maybe I'm running a CANOpen and a BLE stack. Both want to own everything. Well, sometimes that CAN system emits an event that I MUST not ignore (human proximity alert on a robot--for example). And I have to spend a not insignificant amount of time getting the bloody BLE stack out of the way so that I can focus solely on the CAN system for the moment.
- eqvinox 6y ago+1, been using Zephyr on STM32L4 and I've never been as happy. Also checks a lot of the checkboxes on integration with debug & tooling and source control.
- rleigh 6y agoIt does tick a lot of boxes, but I can't say I'm happy with the absurd overcomplexity of the configuration and build system (west + kconfig + cmake). It is extremely opinionated, and while I can see why they did things this way, I'm not personally comfortable with it, particularly when you have to do extensive validation of the build. Simplicity is a virtue.
- pantalaimon 6y agoThen maybe try out RIOT-OS. It tries to achieve the same a Zephyr but tends to be a lot simpler. All you need to do to flash an application is make BOARD=your_board flash it has pretty good networking support (6LoWPAN) and is mostly used for sensor network applications
- ducktective 6y agoAre you using the actual upstream or NCS?
- jmgao 6y agoI'm using upstream directly. I started using Zephyr with STM32, but even if I hadn't, I'd probably have started with upstream just to make it easier to send patches back upstream.
- ducktective 6y agoIt seems like Nordic recommends their fork (NCS) which is ahead of upstream and contains more examples and support. I feel weird managing multiple zephyr and west instances...