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.


Get one of those learning kits that come with most of MCUs, which have a lot of random stuff (like LEDs, motors etc.) that you can hook up to the pins and write C programs to control them. Learn the different protocols that are used to talk to other devices, like i2c, uart, spi etc. and then buy some hardware that you can talk to via this protocol. Like a sensor, a gps module or an IMU or EEPROM.
It’s conceptually pretty similar to how computers and device drivers do it. There is some communication protocol and you can write or read some values over it to use any device. It’s just way easier to start small and build up experience from there.