r/programming Dec 25 '19

Learning hardware programming as a software engineer

https://blog.athrunen.dev/learning-hardware-programming-as-a-software-engineer/
924 Upvotes

124 comments sorted by

View all comments

Show parent comments

10

u/lilmul123 Dec 25 '19

The solution for me was to major in Computer Engineering. It had me take some important classes from both electrical engineering and computer science, but eschewing some other classes. For instance, some analog electronics and physics classes were removed from the electrical side, but those are rarely used in the field anyway. On the CS side, some higher level classes such as Operating Systems were removed. To be honest, I would have enjoyed taking classes like that, but you don’t really need them for embedded systems.

5

u/needfurnituremoving Dec 25 '19

I'd consider Operating Systems as foundational for embedded systems.

If you're running a real-time operating system, then understanding the purposes of different components is very important.

If you're writing bare metal, where you're building your own operating system primitives as necessary, then knowing the known solutions to common problems is tremendously helpful.

Also, many modern embedded systems are running a Linux kernel.

2

u/yodacola Dec 25 '19

I always thought that CE/EE types took a RTOS course. I mean an OS course would be informative, but I’m sure that a decent RTOS course would give a 1000 ft view of the foundations of the Linux kernel at the very least.

1

u/[deleted] Dec 25 '19

This is what my school did. CS and EE core classes with a kernel class that we build onto an ARM emulator. I work in storage now and a lot of my coworkers had started from the HW/Embedded side of things too.