Embedded systems like this is normally coded (on top of an RTOS) as individual services each running on one thread exchanging messages with other services. Pretty much like microservices (just not over http)
So like a small version of erlang? Once you've started programming in erlang you start to look at concurrency and reliability in a certain way. Especially after you've done some server which took too many hours to stop hanging and crashing on interthread issues.
(Take a look at e.g. http://flightsoftware.jhuapl.edu/files/2012/FSW12_McComas.pd... which is NASAs approach to reusing the typical architecture for flight software)