I've been doing embedded programming for 30+ years. I learned pretty quickly that the hardware has very little to do with the software. The hardware imposes functional requirements that represent a very small portion of the software work. The other functional requirements (SW language, OS, etc) also don't represent much effort. The majority of the effort is in the non-functional requirements, aka, the applications; the solutions to the problem spaces that are independent of hardware.