mirror of
https://github.com/nasa/fpp.git
synced 2025-12-11 11:16:42 -06:00
50 lines
2.2 KiB
Plaintext
50 lines
2.2 KiB
Plaintext
== Introduction
|
|
|
|
This document describes **F Prime Prime**, also known as FPP or F Double Prime.
|
|
FPP is a modeling language for the
|
|
https://fprime.jpl.nasa.gov[F Prime flight software framework].
|
|
For more detailed information about F Prime, see the
|
|
https://fprime.jpl.nasa.gov/latest/docs/user-manual/[F Prime User Manual].
|
|
|
|
The goals of FPP are as follows:
|
|
|
|
* To provide a modeling language for F Prime that is simple, easy to use, and
|
|
well-tailored to its purpose.
|
|
|
|
* To provide semantic checking and error reporting for F Prime models.
|
|
|
|
* To generate code in the various languages that F Prime uses, e.g.,
|
|
{cpp}, JSON, and XML.
|
|
In this document, we will call these languages the *target languages*.
|
|
|
|
Developers may combine code generated from FPP with code written by hand to
|
|
create, e.g., deployable flight software (FSW) programs and ground data environments.
|
|
|
|
The name "`F Double Prime`" (or F″) deliberately suggests the idea of a
|
|
"`derivative`"
|
|
of F Prime (or F′).
|
|
By "`integrating`" an FPP model (i.e., running the tools) you get a partial
|
|
FSW implementation in the F Prime framework; and then by "`integrating`" again
|
|
(i.e., providing
|
|
the project-specific {cpp} implementation) you get a FSW application.
|
|
|
|
*Purpose:* The purpose of this document is to describe FPP in a way that is accessible
|
|
to users, including beginning users.
|
|
A more detailed and precise description is available in
|
|
https://nasa.github.io/fpp/fpp-spec.html[_The FPP Language Specification_].
|
|
We recommend that you read this document before consulting that one.
|
|
|
|
*Overview:* The rest of this document proceeds as follows.
|
|
Section 2 explains how to get up and running with FPP.
|
|
Sections 3 through 12 describe the elements of an FPP
|
|
model, starting with the simplest elements (constants
|
|
and types) and working towards the most complex (components
|
|
and topologies).
|
|
Section 13 explains how to specify a model as a collection
|
|
of files: for example, it covers the management of dependencies
|
|
between files.
|
|
Section 14 explains how to analyze FPP models and how
|
|
to translate FPP models to and from XML, to {cpp}, and to JSON.
|
|
Section 15 explains how to write a {cpp} implementation
|
|
against the code generated from an FPP model.
|