this post was submitted on 06 Feb 2026
65 points (100.0% liked)

Programming

25461 readers
312 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

Hello! First of all this is my first Lemmy post, so if I did anything wrong pls tell me!

Now, I'm 19yo in 4th semester of Computer Engineering, and while I'm doing good in college I realized that they give us good background in electronics (from the basics to microcontrollers. ICs. logical design, etc) but the programming aspect is high level and web-oriented (python. java, php)! I appreciate learning those, but I'm not interested on that but rather on a kernel/firmware development! So... I've been learning C for some weeks and while I do love it (mainly been learning from K&R and Zed A. Shaw - Learn C the Hard Way) I don't really know how to practice the skills required to do the proper bridge between hardware and software.

Basically, how does one begin their first real project to learn how to write drivers/baremetal and testing them? Thanks for reading and sorry if my question is dumb, I just feel a bit lost.

you are viewing a single comment's thread
view the rest of the comments
[–] FizzyOrange@programming.dev 6 points 5 days ago* (last edited 5 days ago) (2 children)

For bare metal definitely get a microcontroller and do some fun electronics project.

Easiest to get into is Arduino, but don't stick with that because its only redeeming feature is that it's easy to get into. The IDE sucks, the build system sucks, the APIs really suck, and the code quality is very low (probably because it's easy to get into so you get a lot of inexperienced people doing stuff).

After Arduino I would recommend either going to the Nordic nRF5x series - you can do some cool Bluetooth stuff, or even make you your own radio protocol since the radio peripheral is fully documented... Or ESP32 with Rust and Embassy is probably the most modern and slick way to do microcontrollers.

It does require learning Rust but Rust is really really good so you should do that anyway.

There are some extremely good videos on YouTube about that: https://youtube.com/@therustybits

I would probably still start with Arduino though since you know C. Just don't stay there for too long.

[–] ieGod@lemmy.zip 1 points 3 days ago (1 children)

This is also my recommendation. Working with an OS on an SBC is fine but won't give you the fundamentals like this.

The PIC family of micros are also great. I also recommended trying a few assembly programs to get a feel for those induction sets.

[–] FizzyOrange@programming.dev 1 points 3 days ago

Oh that reminds me. I wouldn't recommend PIC in the 21st century but there's a really cool project called BIO that is an open source alternative to Raspberry's PIO (programmable IO). It's RV32-E with custom x16-31 registers that control the pins directly. Very neat idea.

It's by Bunnies Huang and he talks about it in this talk about Xous.

The hardware is (or will be) here: https://www.crowdsupply.com/baochip

May be a bit hardcore for a beginner though.

[–] wwaaaaa@lemmy.dbzer0.com 1 points 5 days ago

Oh that sounds interesting, also thanks for suggesting the nRF5x series, it sounds quite interesting to experiment with bluetooth. And actually I was planning on also learning Rust as I've seen it is quite modern in the memory management and safety.