|
As someone who works professionally on embedded software devices that update over the internet, car companies are stuck not because they can't get software talent, but because they have no ability to actually build the electronics alongside the software, which is ultimately what constrains embedded software.
Without the right hardware, the constraints are just insurmountable, you can not do X feature because board A doesn't have the API to your MCU, or it runs some dogshit speed communication system that means you have 500ms lag. The feature is just unworkable, and if the PMs push it anyways you get what happens for the legacy car makers, terrible underpowered infotainment systems with no central design philosophy, stuck in an awkward, bad, middle between a full software stack and all buttons for everything. Their model of integrating 3rd party vendor computers just doesn't really work for this kind of thing; Tesla, Rivian, and the Chinese EV makers all manufacture all their own electronics, which lets them achieve the outcome. But you can not just roll all your own electronics in a year. |
When you have dozens of communication lines required between different parts of the system it becomes just as complicated as your average micro-service cloud. Really, a car is a distributed system with dozens of "services". An analogy is that each microcontroller-microcontroller communication use their own custom binary-encoding API that runs on multiple different, incompatible versions of HTTP.
We actually spent considerable amount of time just developing our own custom protocol for communication that could run on all sorts of different physical interfaces (CAN, ethernet, modbus, etc) as well as a series of proxies between devices (so component A can talk to component C through a proxy in component B). And if we had to use a custom protocol from an external manufacturer we had to wrap it into our own custom protocol.
That protocol was actually used for our cloud data reporting as well, so eventually all our data communication would use a single unified protocol from micro-controller to IoT Linux to cloud data-ingestion pipeline to database.