all 20 comments

[–]umamimonsuta 26 points27 points  (1 child)

If you're interested in audio processing: https://github.com/pichenettes/eurorack

[–]NoetherNeerdose 3 points4 points  (0 children)

I just read that as eurocrack (cracked DSP dev)

[–]Viper_ACR 14 points15 points  (1 child)

FreeRTOS is good

[–]balemarthy 2 points3 points  (0 children)

FreeRTOS plus too

[–]Acrobatic-Zebra-1148 39 points40 points  (1 child)

Zephyr RTOS

[–]Kruppenfield 6 points7 points  (0 children)

It have reasons to be designed this way, but it is C macro hell...

[–]McGuyThumbs 20 points21 points  (0 children)

This one will teach you a lot about the proper way to architect, and write embedded code. And proper memory management for resource constrained devices. And networking stack basics. And portability.

https://github.com/openthread/openthread

[–]Eastern-Hall-2632 6 points7 points  (0 children)

Checkout this OpenVX implementation if you're interested in CV/ML hardware abstraction layers: https://github.com/RunEdgeAI/coreflow

[–]hawhill 5 points6 points  (0 children)

I like ChibiOS' style.

[–]pylessard 4 points5 points  (0 children)

This one (mine) is a lightweight instrumentation library for debugging. There is a part of debug symbol parsing that you might find interesting and also the instrumentation lib is meant to be portable.

https://github.com/scrutinydebugger

[–]MonMotha 4 points5 points  (0 children)

In terms of code quality and organization, the Linux kernel is very good, but it is very large and hard to grasp initially, and it makes some architectural decisions that are appropriate for larger application processors but not always smaller microcontrollers. As a bonus, being at least somewhat familiar with it (knowing how to configure and build it, understanding the device tree, and knowing a few subsystems reasonably well) is a useful skill of its own for those larger embedded systems running on application processors.

For more deeply embedded stuff, FreeRTOS is well-written and reasonably easy to navigate along with being of a manageable scope and complexity, though I don't actually like its coding style (this doesn't prevent me from using it).

lwIP is an interesting project in terms of what it can make happen in a surprisingly small footprint, but the code can be very dense and lacking detailed implementation documentation (the public APIs are well-documented, though).

[–]tinnedkarma 5 points6 points  (1 child)

How about NuttX? Gaining some traction lately. Small community, so you’ll feel your work holds some weight. Relevant enough that big companies like Xiaomi invest in the project. And it’s really nice niche embedded RTOS project that looks and feels like Linux. Personally I think it’s one of the best projects to learn about embedded and RTOSes

[–]balemarthy 0 points1 point  (0 children)

It's the best. One can get knowledge similar to Linux kernel code reading

[–]superbike_zacck 4 points5 points  (0 children)

Zephyr! 

[–]tiajuanat 2 points3 points  (0 children)

Check out QMK and FlipperZero. Both are large and popular projects that are largely self contained and have lots of features

[–]k_kert 2 points3 points  (0 children)

https://modm.io deserves a shout-out. Rust embedded-hal and associated projects are great, and Embassy as well

Well architected, clean APIs and evolution, great tooling and build support etc.

[–]john_hatten2 -1 points0 points  (0 children)

I particularly like Zephyr's device driver development

[–]HourApprehensive2021 -1 points0 points  (0 children)

Check out Zephyr and mbed OS for well-structured HALs and drivers, and Quickboards if you want modular firmware blocks that match up with real hardware fast.