The robust way is to abstract control logic from the UI logic entirely. So a dedicated processor(s) running bare metal code or an RTOS with a link to a fancier HMI. The HMI can have all the ugly crash happy UI code heaped on top to display data or send changes. If the HMI crashes the controller won't notice or care. There should never be a dependency on the HMI.
Comments
The robust way is to abstract control logic from the UI logic entirely. So a dedicated processor(s) running bare metal code or an RTOS with a link to a fancier HMI. The HMI can have all the ugly crash happy UI code heaped on top to display data or send changes. If the HMI crashes the controller won't notice or care. There should never be a dependency on the HMI.