F´(F Prime)是一个组件驱动的框架,能够快速开发和部署航天和其他嵌入式软件应用程序。最初在喷气推进实验室开发的F´已经成功地部署在一些空间应用上。它是定制的,但不限于小型航天系统,如立方体卫星,小型卫星和仪器。

Paul Rosemurgy 35625ebb72 Use fully qualified namespace and name in AC component `.hpp` (#1935) 6 days ago
.github 7273cbb6fb `microsoft/sarif-multitool` usage changes (#1932) 1 week ago
Autocoders 35625ebb72 Use fully qualified namespace and name in AC component `.hpp` (#1935) 6 days ago
CFDP fbfc9ad563 Update check-spelling to v0.0.21 (#1790) 3 months ago
Drv 05f1c49cbc Update LinuxUartDriver.cpp (#1934) 1 week ago
Fpp 3b41a9cb2c remove locs.fpp, subdirs.txt, update-locs, and update-subdirs (#1699) 5 months ago
FppTest 56bddee418 Fix header path in PortTest.hpp (#1892) 1 month ago
Fw 6ae49e6e68 Correct return type in time.getContext() to fix #1230 (#1914) 2 weeks ago
Os db1bc89c89 Updates to BasicTypes.hpp (#1897) 4 weeks ago
RPI 3644086829 Fixing RPI CI By Setting Up Downloadable Toolchain (#1855) 1 month ago
Ref e596a2bcff auto-generate connect ports option. Fixes #934 (#1786) 3 months ago
STest 5dca1cd7f1 Added information on STest (#1783) 2 months ago
Svc db1bc89c89 Updates to BasicTypes.hpp (#1897) 4 weeks ago
Utils d177bb7ef9 lestarch: update for small platform support (no U64) (#1721) 3 months ago
ci 3644086829 Fixing RPI CI By Setting Up Downloadable Toolchain (#1855) 1 month ago
cmake bbf049ecbd name consistency in project and topology, install correct dictionary. Fixes #1444 (#1916) 2 weeks ago
config a7a93ee250 Removing SocketIpDriverCfg (#1895) (#1923) 2 weeks ago
docs e9c2144a77 Remove references to install command from the tutorial (#1877) (#1928) 1 week ago
.clang-format 2c981a34ff lestarch: minor fixes (#1760) 4 months ago
.clang-tidy 234bb5d176 Replace NULL with nullptr (#1049) 1 year ago
.dockerignore bcea9fee51 Fix #1215 Remove incorrect references to non-existent MagicDraw items (#1216) 1 year ago
.gitignore b7a25920a3 Add packetized telemetry option (#1776) 3 months ago
.pre-commit-config.yaml 7fa0b59f09 hpaulson: restricts black pre-commit hook to Fw/Python/ and Gds/ 2 years ago
CHANGELOG.md 65d960f11a Fix #1190 README.md cluttered with release notes (#1200) 1 year ago
CITATION.cff 0b03ce39f3 Update CITATION.cff (#1740) 4 months ago
CMakeLists.txt 7e7f0a37ad lestarch: removing leak sanitizer as it breaks on macOS 1 year ago
CONTRIBUTING.md 91c578ee37 Update CONTRIBUTING.md (#1670) 5 months ago
CONTRIBUTORS.md 001b4ce6f4 remove unused extraspace and line 1 year ago
CPPLINT.cfg d5a65b48df Add Cpplint Static Code Analysis to CI Workflow (#1794) 1 month ago
LICENSE.txt 1b80e1d50e mstarch: updating license and notice per latest standardss 2 years ago
NOTICE.txt f081e80779 Removing all BSD like text from NOTICE.txt (#1915) 3 weeks ago
README.md c06b5e890f Remove LGTM badges from README.me (#1816) 3 months ago
SECURITY.md 85d4d180f5 Create a security policy document (#1889) 1 month ago
release.clang-tidy 1698071da1 Use clang-tidy to warn on uses of recursion 1 year ago
requirements.txt 4777f43012 Update requirements.txt (#1906) 3 weeks ago
setup.py a6fed4ec6a lestarch: release v3.1.0 updated package versions (#1538) 8 months ago

README.md

F´: A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework

F´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. Originally developed at the Jet Propulsion Laboratory, F´ has been successfully deployed on several space applications. It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.

Please Visit the F´ Website: https://nasa.github.io/fprime/. This website contains project information, user guides, documentation, tutorials, and more!

F´ comprises several elements:

  • An architecture that decomposes flight software into discrete components with well-defined interfaces
  • A C++ framework that provides core capabilities such as message queues and threads
  • Modeling tools for specifying components and connections and automatically generating code
  • A growing collection of ready-to-use components
  • Testing tools for testing flight software at the unit and integration levels.

For installation instructions, including virtual environment creation and installation verification, see INSTALL.md.

Example Deployments

F´ comes with two example deployments. The deployments represent working F´ applications to help you understand F´. You can use these examples for reference, or clone them to start a new project.

The next section links to more step-by-step tutorials, but it's a good idea to build and run at least the first example deployment to ensure that F´ is installed correctly.

Example one: Ref

The standard reference application demonstrates how most of the system components should be wired together. The reference application can build on Linux or macOS, allowing you to get started immediately without the need for embedded hardware.

Example two: RPI

This Raspberry PI application shows how to run F´ in an embedded context by running on the Raspberry PI (a $35 embedded Linux computer). This application shows you how to get started on embedded projects with cross-compiling, drivers, and more. The Raspberry Pi was chosen because it is commercially available for a low price and runs Linux.

Tutorials

F´ provides several tutorials in order to help understand and develop within the framework. These tutorials cover basic component creation, system and topology design, tooling, and more. These tutorials are available at docs/Tutorials/README.md.

Getting Help with F´

As F´ becomes a community centered product line, there are more items available from the community at large.

To ask questions, discuss improvements, ask for help, please use the project's GitHub Discussions at: https://github.com/nasa/fprime/discussions.

The F´ community GitHub Organization contains third party contributions, more documentation of flight software development, and more! https://github.com/fprime-community.

You can open issues with this repository at: https://github.com/nasa/fprime/issues

F´ Features

F´ has the following key features that enable robust embedded system design.

Reusability

F´'s component-based architecture enables a high degree of modularity and software reusability.

Rapid Deployment

F´ provides a complete development ecosystem, including modeling tools, testing tools, and a ground data system. Developers use the modeling tools to write high-level specifications, automatically generate implementations in C++, and fill in the implementations with domain-specific code. The framework and the code generators provide all the boilerplate code required in an F´ deployment, including code for thread management, code for communication between components, and code for handling commands, telemetry, and parameters. The testing tools and the ground data system simplify software testing, both on workstations and on flight hardware in the lab.

Portability

F´ runs on a wide range of processors, from microcontrollers to multicore computers, and on several operating systems. Porting F´ to new operating systems is straightforward.

High Performance

F´ utilizes a point-to-point architecture. The architecture minimizes the use of computational resources and is well suited for smaller processors.

Adaptability

F´ is tailored to the level of complexity required for small missions. This makes F´ accessible and easy to use while still supporting a wide variety of missions.

Analyzability

The typed port connections provide strong compile-time guarantees of correctness.

Release Notes

The version history and artifacts associated with the project can be found at Releases and CHANGELOG.md.