- Notifications
You must be signed in to change notification settings - Fork0
The Core Flight System (cFS)
License
chillfig/cFS
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The Core Flight System (cFS) is a generic flight software architecture framework used on flagship spacecraft, human spacecraft, cubesats, and Raspberry Pi. This repository is a bundle of submodules that make up the cFS framework. Note the "lab" apps are intended as examples only, and enable this bundle to build, execute, receive commands, and send telemetry. This is not a flight distribution, which is typically made up of the cFE, OSAL, PSP, and a selection of flight apps that correspond to specific mission requirements.
This bundle has not been fully verified as an operational system, and is provided as a starting point vs an end product. Testing of this bundle consists of building, executing, sending setup commands and verifying receipt of telemetry. Unit testing is also run, but extensive analysis is not performed. All verification and validation per mission requirements is the responsibility of the mission (although attempts are made in the cFS Framework to provide a testing framework to facilitate the process).
The cFS Framework is a core subset of cFS. There are additional OSALs, PSPs, and tools as listed below available from a variety of sources.
- cFE User's Guide:https://github.com/nasa/cFS/blob/gh-pages/cfe-usersguide.pdf
- OSAL User's Guide:https://github.com/nasa/cFS/blob/gh-pages/osal-apiguide.pdf
- Combined Mission documentation:https://github.com/nasa/cFS/blob/gh-pages/mission-doc.pdf
- cFE App Developer's Guide:https://github.com/nasa/cFE/blob/main/docs/cFE%20Application%20Developers%20Guide.md
- Training documentation:https://ntrs.nasa.gov/citations/20210022378
- cFS Overview:https://cfs.gsfc.nasa.gov/cFS-OviewBGSlideDeck-ExportControl-Final.pdf
Seereleases for release history and associated artifacts related to the cFS BUNDLE.
Aquila: OFFICIAL RELEASE:
- Released under Apache 2.0
- Includes cFE 6.7.0 (cFE, PSP, framework apps, and framework tools as marked) and OSAL 5.0.0
cFS 6.6.0a Suite: OFFICIAL RELEASE:
- cFE 6.6.0a is released under Apache 2.0 license, seeLICENSE
- OSAL 4.2.1a is released under the NOSA license, seeLICENSE
- Release notes
- Version description document
- Test results
Other elements listed below are released under a variety of licenses as detailed in their respective repositories.
Historical version description documents contain references to internal repositories and sourceforge, which is no longer in use. Not all markdown documents have been updated for GitHub.
See related repositories for current open issues.
- Certification framework with automated build verification tests of framework requirements
- Executable on real/emulated/simulated/ or dockerized targets
- Add PSP coverage testing framework (nasa/PSP#184,nasa/PSP#174)
- Add PSP and cFE functional testing framework for APIs (nasa/cFE#779)
- Scrub OSAL coverage and functional tests
- Scrub cFE coverage tests
- Add cFE API functional tests
- NOTE: Command verification pending tool open source release
- Documentation (updated traceability, APIs/ICDs, general update)
- Framework for mission customization of core services
- Header customization support (nasa/cFE#726)
- Remove deprecated code
- Cmd/Tlm structure scrub for alignment/padding/consistency
- Library query and reporting and ES resource management (nasa/cFE#28,nasa/cFE#797)
- Open source automated build verification execution framework for emulated targets (likely docker based)
- Deployment quality of life improvements (configuration, transition to CMake source selection vs compiler directives)
- Update OS support (VxWorks 7, RTEMS 5)
- Time services refactor
- Symmetric multi-processing APIs
- Electronic Data Sheet integration option and improvements to packet layouts for portability/consistency
- Toolchain updates
You canstart a new discussion for discussions, questions, or ideas, in the cFS repository under the Discussions tab.
Tosubscribe to our mailing list, send an email tocfs-community-join@lists.nasa.gov with the wordsubscribe in the subject line.
The cfs-community mailing list includes cFS users and developers. The cFS Product Team also uses the mailing list to share information on current and future releases, bug findings and fixes, enhancement requests, community meetings, etc.
If you'd like to unsubscribe, send an email with the wordunsubscribe tocfs-community-leave@lists.nasa.gov. Mailing list requests are typically processed within 5 minutes.
You can email the cFS Product Team atcfs-program@lists.nasa.gov to explore partnerships and other arrangements for in-depth support.
Ensure the following software are installed: Make, CMake, GCC, and Git. To setup the cFS BUNDLE directly from the latest set of interoperable repositories:
git clone https://github.com/nasa/cFS.gitcd cFSgit submodule initgit submodule update
Copy in the default makefile and definitions:
cp cfe/cmake/Makefile.sample Makefilecp -r cfe/cmake/sample_defs sample_defs
The cFS Framework including sample applications will build and run on the pc-linux platform support package (should run on most Linux distributions), via the steps described inhttps://github.com/nasa/cFE/tree/master/cmake/README.md. Quick-start is below:
To prep, compile, and run on the host (from cFS directory above) as a normal user (best effort message queue depth and task priorities):
make SIMULATION=native prepmakemake installcd build/exe/cpu1/./core-cpu1
Should see startup messages, and CFE_ES_Main entering OPERATIONAL state. Note the code must be executed from the build/exe/cpu1 directory to find the startup script and shared objects.
Note: The steps above are for a debug, permissive mode build and includes deprecated elements. For a release build, recommendation ismake BUILDTYPE=release OMIT_DEPRECATED=true prep
. Unit tests can be added withENABLE_UNIT_TESTS=true
, run withmake test
, and coverage reported withmake lcov
.
The cFS-GroundSystem tool can be used to send commands and receive telemetry. For details on using and setting up the Ground System, see theGuide-GroundSystem. Note it depends on PyQt5 and PyZMQ:
Install PyQt5 and PyZMQ on your system. Some systems may also require installing libcanberra-gtk-module.
Compile cmdUtil and start the ground system executable
cd tools/cFS-GroundSystem/Subsystems/cmdUtilmakecd ../..python3 GroundSystem.py
Select "Start Command System"
Select "Enable Tlm"
Enter IP address of system executing cFS, 127.0.0.1 if running locally
Should see telemetry, can send noops and see command counters increment.
The following applications have been tested against this release:
- TBD
The following list is user submitted, and not CCB controlled. They are released by various organizations, under various licenses.
- Distributions
- cFS-101: Virtual machine distribution athttps://github.com/nasa/CFS-101
- OpenSatKit: Open source kit for satellite software athttps://github.com/OpenSatKit/OpenSatKit
- Other Ground station software
- cFS-EDS-GroundStation: Ground station implemented via EDS athttps://github.com/nasa/cFS-EDS-GroundStation
- Other Apps
- CS: Checksum application athttps://github.com/nasa/CS
- CF: CFDP application athttps://github.com/nasa/CF
- CI: Command Ingest application athttps://github.com/nasa/CFS_CI
- DS: Data Store application athttps://github.com/nasa/DS
- FM: File Manager application athttps://github.com/nasa/FM
- HK: Housekeeping application athttps://github.com/nasa/HK
- HS: Health and Safety application athttps://github.com/nasa/HS
- LC: Limit Checker application athttps://github.com/nasa/LC
- MD: Memory Dwell application athttps://github.com/nasa/MD
- MM: Memory Manager application athttps://github.com/nasa/MM
- SBN: Software Bus Network application athttps://github.com/nasa/SBN
- SC: Stored Commands application athttps://github.com/nasa/SC
- SCA: Stored Command Absolute application athttps://github.com/nasa/SCA
- SCH: Scheduler application athttps://github.com/nasa/SCH
- TO: Telemetry Output application athttps://github.com/nasa/CFS_TO
- Skeleton App: A bare-bones application to which you can add your business logic athttps://github.com/nasa/skeleton_app
- Other Interfaces
- SIL: Simulink Interface Layer athttps://github.com/nasa/SIL
- ECI: External Code Interface athttps://github.com/nasa/ECI
- SBN-Client: External code interface to SBN athttps://github.com/nasa/SBN-Client
- Other Libraries
- cFS_IO_LIB: IO library athttps://github.com/nasa/CFS_IO_LIB
- cFS_LIB: athttps://github.com/nasa/cfs_lib
- EdsLib: CCSDS SOIS Electronic Data Sheet Tool and Library athttps://github.com/nasa/EdsLib
- fs_lib: File services library athttps://github.com/nasa/fs_lib
- Other Tools
- CTF: cFS Test Framework athttps://github.com/nasa/CTF
- CCDD: Command and Data Dictionary Tool athttps://github.com/nasa/CCDD
- Perfutils-java: Java based performance analyzer for cFS athttps://github.com/nasa/perfutils-java
- gen_sch_tbl: Tool to generated SCH app tables athttps://github.com/nasa/gen_sch_tbl
- CryptoLib: Software-only CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) athttps://github.com/nasa/CryptoLib
- Other OSALs
- TBD
- Other PSPs
- TBD
About
The Core Flight System (cFS)
Resources
License
Code of conduct
Security policy
Stars
Watchers
Forks
Packages0
Languages
- CMake100.0%