Skip to content

Commit

Permalink
Fix #795, Updated README with programmatic and technical changes
Browse files Browse the repository at this point in the history
  • Loading branch information
RichLandau committed Sep 9, 2024
1 parent 680f33b commit 214bdb0
Showing 1 changed file with 134 additions and 110 deletions.
244 changes: 134 additions & 110 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,88 +7,122 @@ The Core Flight System (cFS) is a generic flight software architecture framework

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.
The cFS Framework is a core subset of cFS, with an extensive ecosystem of applications and tools available throughout the community.

## Distributions

This is the open-source version of cFS, released under an Apache 2.0 license. The open source cFS is limited to the framework and common apps, libraries, and tools, which includes and is limited to: cFE, OSAL, PSP, Command Ingest (Lab), Telemetry Output (Lab), Scheduler (Lab), Sample App, Sample Lib, Data Storage, File Manager, HouseKeeping, Health and Safety, Memory Dwell, CFDP File Transfer, CheckSum, Limit Checker, Memory Manager, Stored Command, cFS Ground System, elf2cfetbl, and tblCRCTool. Changes to the open repositories are limited to bug fixes and minor enhancements to those components.

A Government-use (Distro C) version of cFS with features for a full flight mission is available through a Software User Agreement. For more information about government version features or to explore partnerships, please [contact the cFS team](<mailto:cfs-program@lists.nasa.gov>).

## Contact

cFS/cFE is owned and maintained by NASA Goddard Space Flight Center's Flight Software Systems Branch.

The cFS team provides training, support, and subject matter expertise to cFS users across industry and the government. New features/developments can also be done by the cFS team which has significant experience in helping flight projects implement mission-ready flight SW using cFS for various classes of missions, including human-rated (class A) missions. A support agreement may be needed.

To connect with the cFS team, please send an email to [cfs-program@lists.nasa.gov](<mailto:cfs-program@lists.nasa.gov>).

More information is available on the [cFS Website](<https://cfs.gsfc.nasa.gov>).

## Table of Contents

- [References](#references-documentation)
- [Release Notes](#release-notes)
- [Open Source Roadmap](#open-source-roadmap)
- [Upcoming Release](#upcoming-release)
- [Getting Help](#getting-help)
- [Setup](#setup)
- [Build and Run](#build-and-run)
- [Related Capability](#related-capability)

## References Documentation
- 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

- [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>)

## Release Notes

See [releases](https://github.com/nasa/cFS/releases) for release history and associated artifacts related to the cFS BUNDLE.
See [releases](<https://github.com/nasa/cFS/releases>) 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, see [LICENSE](https://github.com/nasa/cFE/blob/v6.6.0a/LICENSE-18128-Apache-2_0.pdf)
- OSAL 4.2.1a is released under the NOSA license, see [LICENSE](https://github.com/nasa/osal/blob/osal-4.2.1a/LICENSE)
- [Release notes](https://github.com/nasa/cFE/blob/v6.6.0a/docs/cFE_release_notes.md)
- [Version description document](https://github.com/nasa/cFE/blob/v6.6.0a/docs/cFE_6_6_0_version_description.md)
- [Test results](https://github.com/nasa/cFE/tree/v6.6.0a/test-and-ground/test-review-packages/Results)

Other elements listed below are released under a variety of licenses as detailed in their respective repositories.

## Known issues
- Released under Apache 2.0
- Includes cFE 6.7.0 (cFE, PSP, framework apps, and framework tools as marked) and OSAL 5.0.0
- [Version description document, including release notes](<https://github.com/nasa/cFS/blob/v6.7.0a/VDD-Aquila.md>)
- [Release artifacts](<https://github.com/nasa/cFS/releases/tag/v6.7.0a>)

Other elements listed in [Related Capability](#related-capability) are released under a variety of licenses as detailed in their respective repositories.

## Open-Source Roadmap

The following is a list of features and updates planned for cFS (in no particular order). Have other ideas? Want to partner with us? Please let us know at [cfs-program@lists.nasa.gov](<mailto:cfs-program@lists.nasa.gov>).

- "Bundler" tool to create custom bundles from known capability developed across the community (essentially an interactive catalog of apps that have been verified against a particular version of cFS)
- VxWorks 7 support, including running applications as real-time processes (RTPs)
- RTEMS 6 support
- Automated build verification execution framework for emulated targets
- Time services refactor/simplication
- Symmetric multi-processing (SMP) APIs
- Electronic Data Sheet (EDS) integration option and improvements to packet layouts for portability/consistency

## Upcoming Release

Note: Official releases will be created through the NASA software release process. The cFS team plans to return to a more regular official release cadence in the near future.

### Next major release development features

- 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)
- Type safety enhancements
- Added abstract configuration registry
- RTEMS 5/6 support updates
- Added support for fractional seconds in epoch
- Bug fixes

### Known Issues

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.

## Major future work

### Caelum (aka 7.0) Major release development plans (Targeting end of 2020 for release candidate)

- 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)

### Other (may not make 7.0)
- 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

## Getting Help

### Discussions
### Discussions

You can [start a new discussion](https://github.com/nasa/cFS/discussions/new) for discussions, questions, or ideas, in the cFS repository under the Discussions tab.
You can [start a new discussion](<https://github.com/nasa/cFS/discussions/new>) for discussions, questions, or ideas, in the cFS repository under the Discussions tab.

### Join the mailing list

To **subscribe to our mailing list,** send an email to cfs-community-join@lists.nasa.gov with the word *subscribe* in the subject line.
To **subscribe to our mailing list,** send an email to [cfs-community-join@lists.nasa.gov](<mailto:cfs-community-join@lists.nasa.gov>) with the word *subscribe* 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 word *unsubscribe* to cfs-community-leave@lists.nasa.gov. Mailing list requests are typically processed within 5 minutes.
If you'd like to unsubscribe, send an email with the word *unsubscribe* to [cfs-community-leave@lists.nasa.gov](<mailto:cfs-community-leave@lists.nasa.gov>). Mailing list requests are typically processed within 5 minutes.

### Contact the cFS Product Team

You can email the cFS Product Team at cfs-program@lists.nasa.gov to explore partnerships and other arrangements for in-depth support.
You can email the cFS Product Team at [cfs-program@lists.nasa.gov](<mailto:cfs-program@lists.nasa.gov>) to explore partnerships and other arrangements for in-depth support.

## Setup

Ensure the following software are installed: Make, CMake, GCC, and Git. To setup the cFS BUNDLE directly from the latest set of interoperable repositories:
Ensure the following software are installed: Make, CMake, GCC, and Git. To setup the cFS BUNDLE directly from the latest set of interoperable repositories (with your working directory set to where you want to put cFS):

git clone https://github.com/nasa/cFS.git
cd cFS
Expand All @@ -102,10 +136,11 @@ Copy in the default makefile and definitions:

## Build and Run

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 in https://github.com/nasa/cFE/tree/master/cmake/README.md. Quick-start is below:
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 in [the cFE cmake readme](<https://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 distclean
(For a clean build on subsequent runs)
make SIMULATION=native prep
make
make install
Expand All @@ -114,9 +149,9 @@ To prep, compile, and run on the host (from cFS directory above) as a normal use

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 is `make BUILDTYPE=release OMIT_DEPRECATED=true prep`. Unit tests can be added with `ENABLE_UNIT_TESTS=true`, run with `make test`, and coverage reported with `make lcov`.
Note: The steps above are for a debug, permissive mode build and includes deprecated elements. For a release build, recommendation is `make BUILDTYPE=release OMIT_DEPRECATED=true prep`. Unit tests can be added with `ENABLE_UNIT_TESTS=true` during the prep step, run with `make test`, and coverage reported with `make lcov`. Functional tests can be run by including `ENABLE_UNIT_TESTS=true` during prep and including the cfe_testcase app in the runtime app configuration (.scr file).

## Send commands, receive telemetry
### Send commands, receive telemetry

The cFS-GroundSystem tool can be used to send commands and receive telemetry. For details on using and setting up the Ground System, see the [Guide-GroundSystem](https://github.com/nasa/cFS-GroundSystem/blob/main/Guide-GroundSystem.md). Note it depends on PyQt5 and PyZMQ:

Expand All @@ -129,60 +164,49 @@ The cFS-GroundSystem tool can be used to send commands and receive telemetry. F
cd ../..
python3 GroundSystem.py

3. Select "Start Command System"
3. Select "Start Command System" from main window
4. Select "Enable Tlm"
5. Enter IP address of system executing cFS, 127.0.0.1 if running locally
6. Select "Start Telemetry System" from main window

Should see telemetry, can send noops and see command counters increment.

## Compatible list of cFS apps

The following applications have been tested against this release:
- TBD

## Other cFS related elements/tools/apps/distributions

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 at https://github.com/nasa/CFS-101
- OpenSatKit: Open source kit for satellite software at https://github.com/OpenSatKit/OpenSatKit
- Other Ground station software
- cFS-EDS-GroundStation: Ground station implemented via EDS at https://github.com/nasa/cFS-EDS-GroundStation
- Other Apps
- CS: Checksum application at https://github.com/nasa/CS
- CF: CFDP application at https://github.com/nasa/CF
- CI: Command Ingest application at https://github.com/nasa/CFS_CI
- DS: Data Store application at https://github.com/nasa/DS
- FM: File Manager application at https://github.com/nasa/FM
- HK: Housekeeping application at https://github.com/nasa/HK
- HS: Health and Safety application at https://github.com/nasa/HS
- LC: Limit Checker application at https://github.com/nasa/LC
- MD: Memory Dwell application at https://github.com/nasa/MD
- MM: Memory Manager application at https://github.com/nasa/MM
- SBN: Software Bus Network application at https://github.com/nasa/SBN
- SC: Stored Commands application at https://github.com/nasa/SC
- SCA: Stored Command Absolute application at https://github.com/nasa/SCA
- SCH: Scheduler application at https://github.com/nasa/SCH
- TO: Telemetry Output application at https://github.com/nasa/CFS_TO
- Skeleton App: A bare-bones application to which you can add your business logic at https://github.com/nasa/skeleton_app
- Other Interfaces
- SIL: Simulink Interface Layer at https://github.com/nasa/SIL
- ECI: External Code Interface at https://github.com/nasa/ECI
- SBN-Client: External code interface to SBN at https://github.com/nasa/SBN-Client
- Other Libraries
- cFS_IO_LIB: IO library at https://github.com/nasa/CFS_IO_LIB
- cFS_LIB: at https://github.com/nasa/cfs_lib
- EdsLib: CCSDS SOIS Electronic Data Sheet Tool and Library at https://github.com/nasa/EdsLib
- fs_lib: File services library at https://github.com/nasa/fs_lib
- Other Tools
- CTF: cFS Test Framework at https://github.com/nasa/CTF
- CCDD: Command and Data Dictionary Tool at https://github.com/nasa/CCDD
- Perfutils-java: Java based performance analyzer for cFS at https://github.com/nasa/perfutils-java
- gen_sch_tbl: Tool to generated SCH app tables at https://github.com/nasa/gen_sch_tbl
- CryptoLib: Software-only CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) at https://github.com/nasa/CryptoLib
- Other OSALs
- TBD
- Other PSPs
- TBD

### Adding Custom Apps

See the [cFE Application Developer's Guide](https://github.com/nasa/cFE/blob/main/docs/cFE%20Application%20Developers%20Guide.md) for information about creating new apps. It is encouraged to use sample_app or skeleton_app as a starting point. Once the application has been created, it must be added to targets.cmake to be compiled and to the .scr file to be dynamically loaded at runtime (in a dynamically loaded environment).

## Related Capability

- Distributions
- cFS-101: Virtual machine distribution at <https://github.com/nasa/CFS-101>
- Other Ground station software
- cFS-EDS-GroundStation: Ground station implemented via EDS at <https://github.com/nasa/cFS-EDS-GroundStation>
- Other Apps
- CS: Checksum application at <https://github.com/nasa/CS>
- CF: CFDP application at <https://github.com/nasa/CF>
- DS: Data Store application at <https://github.com/nasa/DS>
- FM: File Manager application at <https://github.com/nasa/FM>
- HK: Housekeeping application at <https://github.com/nasa/HK>
- HS: Health and Safety application at <https://github.com/nasa/HS>
- LC: Limit Checker application at <https://github.com/nasa/LC>
- MD: Memory Dwell application at <https://github.com/nasa/MD>
- MM: Memory Manager application at <https://github.com/nasa/MM>
- SBN: Software Bus Network application at <https://github.com/nasa/SBN>
- SC: Stored Commands application at <https://github.com/nasa/SC>
- SCA: Stored Command Absolute application at <https://github.com/nasa/SCA>
- Skeleton App: A bare-bones application to which you can add your business logic at <https://github.com/nasa/skeleton_app>
- Other Interfaces
- SIL: Simulink Interface Layer at <https://github.com/nasa/SIL>
- ECI: External Code Interface at <https://github.com/nasa/ECI>
- SBN-Client: External code interface to SBN at <https://github.com/nasa/SBN-Client>
- Other Libraries
- cFS_IO_LIB: IO library at <https://github.com/nasa/CFS_IO_LIB>
- cFS_LIB: at <https://github.com/nasa/cfs_lib>
- EdsLib: CCSDS SOIS Electronic Data Sheet Tool and Library at <https://github.com/nasa/EdsLib>
- fs_lib: File services library at <https://github.com/nasa/fs_lib>
- Other Tools
- CTF: cFS Test Framework at <https://github.com/nasa/CTF>
- CCDD: Command and Data Dictionary Tool at <https://github.com/nasa/CCDD>
- Perfutils-java: Java based performance analyzer for cFS at <https://github.com/nasa/perfutils-java>
- gen_sch_tbl: Tool to generated SCH app tables at <https://github.com/nasa/gen_sch_tbl>
- CryptoLib: Software-only CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) at <https://github.com/nasa/CryptoLib>

0 comments on commit 214bdb0

Please sign in to comment.