The Core Flight Executive (cFE) is an application development and run-time environment. The cFE provides a set of core services including Software Bus (messaging), Time, Event (Alerts), Executive (startup and runtime), and Table services. The cFE defines an application programming interface (API) for each service which serves as the basis for application development. The cFE Software Bus service provides a publish and subscribe messaging system that allows applications to easily plug and play into the system. Applications subscribe to cFE services at runtime, making system modifications easy. Facilitating rapid prototyping, new applications can be compiled, linked, loaded, and started without requiring the entire system to be rebuilt. Each service comes complete with a built in application that allows users to interface with each service. To support reuse and project independence, the cFE contains a configurable set of requirements and code. The configurable parameters allow the cFE to be tailored for each environment including desk-top and closed loop simulation environments. This provides the ability to run and test software applications on a developer's desktop and then deploy that same software without changes to the embedded system. In addition the cFE includes the following software development tools:
- Unit Test Framework (UTF) for unit testing applications developed via the cFE
- Software Timing Analyzer that provides visibility into the real-time performance of embedded systems software
- Table Builder
- Command and Telemetry utilities
The cFE is one of the components of the Core Flight System (CFS), a platform and project independent reusable software framework and set of reusable software applications. There are three key aspects to the CFS architecture: a dynamic run-time environment, layered software, and a component based design. The combination of these key aspects along with an implementation targeted to the embedded software domain makes it suitable for reuse on any number of NASA flight projects and/or embedded software systems.
The pivotal design feature, abstracting the software architecture from the hardware and forming the basis of reuse, is component layering. Each layer of the architecture “hides” its implementation and technology details from the other layers by defining and using standard Application Programming Interfaces (APIs). The internals of a layer can be changed without affecting other layers’ internals and components.
The layers include an OS Abstraction Layer (OSAL), Platform Support Package (PSP) layer, core Flight Executive (cFE) layer, and an Application layer. The cFE layer runs on top of the PSP and OSAL layers. The cFE comes complete with a build environment, deployment guide, API reference guide, and provides a sample PSP. The OSAL is available open source and once integrated into the cFE build environment, developers will be ready to build and run the system and start developing their mission/project specific applications that easily plug and play into the system.
Core Flight Executive (cFE) Goals
The main goal of the cFE is to form the basis for a platform and project independent reusable software framework. The cFE with the OSAL allow the development of portable embedded system software that is independent of a particular Real Time Operating System and hardware platform. A secondary goal is to create a standardize, product-line approach for development of embedded aerospace flight software.
The cFE allows embedded system software to be developed and tested on desktop workstations and ported to the target platform without changing a single line of code, providing a shorter development and debug time. The cFE is an enabler of software collaboration amongst all users promoting the growth of the application and library layers where new applications, libraries, tools, and lessons learned can be contributed and shared.
Future expansions to the cFE include:
- Adding a simple Graphical User Interface (GUI) to allow commanding and receipt of telemetry
- Development of a minimal cFE flight software framework (micro cFE) to facilitate flight software reuse in the highly constrained resource and processing environments such as instruments, Cube Sat’s and small payloads.
- Advances in distributed system communication and coordination.
- Development of a real-time, reliable file system that can be used by Core Flight System applications.
- Incorporating an easy to use Integrated Development Environment (IDE)
- Adding the capability for the cFE to run on multicore platforms
- Adding an integrated test environment
- Adding a memory protected model
The cFE currently does not include a user interface. There are still usability goals in terms of the Application Program Interface (API) and included build tree/makefile system. The cFE comes complete with a build environment, deployment guide, API reference guide, and provides a sample PSP. The deployment guide provides step-by-step instructions on how to setup the build environment in order to build and run the cFE. The API reference guide allows programmers to quickly start writing mission/project specific applications that can plug and play into their cFE system.