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.

  • CocoaBird@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    5
    ·
    13 hours ago

    I’m going to give a slightly different suggestion.

    You may find it interesting to develop an program without using libc.

    Use raw syscalls and make a completely freestanding binary.

    This is not as low level as bare-metal but might give you a better understanding of how operating systems work.

    You could try writing some core utils replacements

    This will only really work on Linux though. Any systems programming language with inline assembly will work fine.

    • wwaaaaa@lemmy.dbzer0.comOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      13 hours ago

      Now that you mention it I was actually messing around with that before commenthing this, I’m on Linux (Arch) already so the idea of writing utils replacement was already there haha, thanks for the suggestion, I’m doing that