Banner Image: Ingenuity Mars Helicopter, Credit: NASA/JPL-Caltech

Elements of the F Prime Architecture

  • Component: A FSW behavior, like a C++ class
  • Port: An interface between components
  • Topology: A set of component instances and connections
  • Deployment: FSW binary described as a topology
    • No link-time dependences between components
    • It’s easy to reconnect components into new topologies
    • Ingenuity Mars Helicopter development used 11 topologies
Diagram showing elements of a component Diagram showing elements of a component

Components

  • Components are software classes where project implementation resides
  • Three execution models:
    • Passive – no thread, executes on calling thread
    • Queued – message queue, but no thread
    • Active – message queue and thread
  • Code generation creates base class with virtual functions, user fills in derived function handlers.
  • Where ground interface code is implemented (commands/telemetry/events/parameters)
  • No dependencies on other components
    • Invocations via ports (see next slide)
  • Ground interfaces
    • Commands – sent to a component to execute a behavior (“power X”)
    • Telemetry – periodic sampled values (“temperature = X degrees”)
    • Events – Asynchronous notifications of activity in the component (“X deployed”)
    • Parameters – Non-volatile values to modify software behavior (“temperature limit = X”)

Ports

  • Interconnection point between components
  • Strongly typed interfaces
  • Types shared between components
  • Three port attributes:
    • Synchronous – no thread, handler executes on calling thread
    • Guarded – no thread, handler executes on calling thread, but all guarded calls share a mutex
    • Asynchronous – invocation places a message on the component queue, dequeued on component thread
  • All generated code – user does not implement
Diagram showing location of ports in a component Diagram showing location of ports in a component
Diagram showing the elements of a topology Diagram showing the elements of a topology

Topology

  • A topology is a given interconnection of a set of components via ports
  • Interconnections allow components to invoke each other
  • Typically builds to a single binary
  • Defines the ground system dictionary as a collection of individual component-defined ground items

Deployment

  • F Prime allows components to be reconfigured in different configurations for testing. Ingenuity had 11 different deployments that converged on a flight deployment that shared components
  • Allowed decoupled testing and support of different venues
  • Simulation versions can substitute driver/bus components for sim versions
Deployment example from Ingenuity Mars Helicopter