GaloisInc / BESSPIN-Tool-Suite

The core tool of the BESSPIN Framework.
Other
5 stars 2 forks source link

Cyberphys functionality layers #1246

Closed podhrmic closed 2 years ago

podhrmic commented 3 years ago

This is how the demonstrator functionality can be layered:

Minimal / Simualtion only

Medium / Critical systems only

Full functionality

The ordering is strictly Minimal < Medium < Full, so if FreeRTOS fails (Medium), the only possible switch is to Minimal even though the debian targets are happy.

Have to think about what happens if we keep targets running/don't terminate them properly (especially wrt. the infotainment). Perhaps ensure a proper termination?

dmzimmerman commented 3 years ago

I still feel like there ought to be something we can do to reduce the Linux boot time, like streamlining the Debian image or making some sort of memory image of it to load from flash. But regardless of that, here's another idea: what if we actually have the infotainment servers run on FPGA when available? That is, if the infotainment FPGAs aren't up and running, or otherwise aren't working, we detect it (which we can already because of heartbeats) and fall back to the "simulated or no infotainment" option while we're rebooting them in the background.

dmzimmerman commented 3 years ago

More generally, once these things are implemented, I think we should be able to smoothly fall back to "simpler" ones in the presence of failures, until a power cycle occurs.

podhrmic commented 3 years ago

That sounds reasonable - you can start using the demonstrator as soon as Ignition boots up, and then simply switch the op modes as things boot. That combined with some sort of notification system sounds actually pretty cool.

podhrmic commented 3 years ago

Teensy UART output:

HH:MM:SS.SSS throttle_raw: $DECVAL
HH:MM:SS.SSS brake_raw: $DECVAL
HH:MM:SS.SSS shifter_gear: $HEXVAL

This needs to be parsed by the ignition component on SimPC

podhrmic commented 2 years ago

Implemented in #1268