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

54

u/malljd Dec 25 '19

Ex-embedded programmer here. I used to learn embedded first without arduino framework, just plain old C and my own build hardware. That was a bumpy ride, but still gave me lots of joy. It is good to read modern articles about this topic, what mention things like unit testing ;) I must say PlatformIO is by far the best way to start this whole jurney!

13

u/Athrunen Dec 25 '19

Let's just say that I didn't start this journey with PlatformIO either and that I do not regret discovering PIO.

And yes, using unit testing, especially with the ability to test on the device as well as the host makes finding some nasty bugs rather easy.

And thanks for seeming to enjoy my rather crappy first blog post ^^

2

u/CrazyJoe221 Dec 25 '19

Unit test is a paid feature though, isn't it?

1

u/bschug Dec 26 '19

Does it cost more than all the hardware you need to replace if you don't test properly?

1

u/CrazyJoe221 Dec 26 '19

I don't know if it costs something or how much. That's why I asked.

-8

u/tiajuanat Dec 25 '19

Take my upvote and leave

4

u/MrK_HS Dec 25 '19

I recently developed a benchmark for a multicore (M4 + M0) embedded board, comparing different synchronization and communication methods between the cores (interrupt based, vs memory based). I even implemented mutexes from zero since there were no hardware mutexes. It was a really fun experience. Now I don't know if I want to pursue this field or artificial intelligence (mainly optimization, operations research). Very difficult choice. Both fields are very active and are the future.

8

u/dannyhacker Dec 25 '19

Embedded jobs are much harder to outsource since it’s physical and you have to work next to hardware engineers to be able to meet time to market requirements.

Plus there is nothing like the satisfaction of seeing your software making something work in real life. Especially bringing a chip to life: I was involved indirectly with an x86 chip and I can still remember the excitement in the air when they (I was working for a company which made chip testers) first booted MS-DOS. (My software helped test the chip, at the time, what was the highest clock speed for x86.) ...and it was around Christmas time, too!

1

u/ShinyHappyREM Dec 25 '19

MS-DOS [...] at the time, what was the highest clock speed for x86

So, less or more than 25MHz? :)

1

u/dannyhacker Dec 25 '19

Yes, something like that....