150 likes | 165 Views
cFE FSW at APL & FSW Reusability. C. Monaco chris.monaco@jhuapl.edu 240-228-5387. Overview. APL use of cFE Application Template Libraries Spark discussion in the community regarding best practices for Abstracting HW & Platform Increasing the reusability of FSW Use of drivers.
E N D
cFE FSW at APL& FSW Reusability C. Monaco chris.monaco@jhuapl.edu 240-228-5387
Overview • APL use of cFE • Application Template • Libraries • Spark discussion in the community regarding best practices for • Abstracting HW & Platform • Increasing the reusability of FSW • Use of drivers
cFE at APL • Van Allen Probes • First use of cFE (cFE 5.1.0 & OSAL 2.11) • RAD750, VxWorks 6.4 • Two spacecraft • Earth orbiters • Launched 8/30/2012 • Predecessor APL missions STEREO and MESSENGER did not use cFE & OSAL middleware • Much of the APL FSW infrastructure was able to be adapted into the cFE environment cFE & OSAL +
cFE at APL • 2011 – 2012 - JHU APL / GSFC IRAD efforts • Memory Protection IRAD • cFE running in user-mode on an embedded system running VxWorks 6.7 • Multi-Core IRAD • cFE systems running in Asymmetric Multiprocessing (AMP) & Symmetric Multiprocessing (SMP) • Solar Probe Plus • One spacecraft (SC) with 3 Single Board Computers (SBCs) • 2018 Launch • Flight Software • RTEMS 4.10 • APL developed SBC with UT699E • cFE 6.4.0, OSAL 4.1 • Testbed • RedHawk 6.3.3 Linux – with real-time kernel patch • Hosts emulations of SC components that are unavailable on a particular testbed
Application Commonality • During the development of Van Allen Probes FSW it was recognized that applications that use cFE have a lot in common • Initialization with cFE • Initialization with scheduler (SCH) application • Housekeeping telemetry generation • Initialization of parameter management • Some common commands • Common features • Counters • Telltales • Message processing (message & response handler infrastructure) • Command processing (command & response handler infrastructure) • All applications need to be maintained
Application Template • A Common Application Template was developed under Van Allen Probes • Van Allen Probes: Each APL-Developed FSW application will be built upon a Common Application Template • Isolate infrastructure from application-specific functionality • Jump-start software development for new applications • Allow developers to focus on the personality of each application rather than the basic application infrastructure • Provides application uniformity & simplification of software maintenance • The Common Application Template is cloned to create new applications • Reduces code review materials • Reduces unit test effort • References to TMP within the template source are automatically converted to the mnemonic for the application • TMP_AppWakeup() becomes AUT_AppWakeup()
Application Template – reusability and maintainability • The Application Template exists in separate source files from the application-specific code • Maintaining the Application Template is similar to maintaining a middleware • The APIs have an incentive to remain the same • The implementation may be changed • The updated template can be deployed to existing applications and new applications alike • With zero or minimal disruption to existing applications
APL cFE Applications • OSAL allows the software applications to be abstracted from the OS • cFE helps abstract one application from another • Rather than making direct function calls (whose APIs could change) from one application to another, messages are sent on the software bus • Applications • Some C&DH applications are highly re-usable – have no SC / platform dependencies • Some FSW applications have some SC / platform dependencies but are otherwise largely independent of the SC / Platform • Other applications are very dependent upon the SC / Platform
APL cFE Applications • A goal was to maximize the potential for reuse of FSW applications from mission to mission • A goal was to facilitate FSW development on the ubiquitous linux platform • Free up valuable test-bed time • Therefore, a design objective of the APL Flight Software Application was to (within reason) abstract the hardware from the applications
APL Libraries for cFE Systems • Some FSW libraries exist to provide common functionality to multiple applications • Table management • Utility functions, etc. • Some FSW libraries exist to provide an abstraction to SC or HW • Enable development on pc-linux platform • Enhances reuse for subsequent missions.
APL Libraries for cFE Systems • Memory Object Handler • An example of a SC / platform independent library • Rather than using the cFE Table Services, much of the APL legacy flight software used “Memory Objects” • Custom parameter management system was subsequently ported to the cFE environment as MOH_lib • Applications “Register” with the Memory Object Handler Library: • Register “memory object type” with the library • Register “memory object IDs” • Individual memory objects or a group if the same kind of memory object • Register call-back functions to allow access, manipulation and verification of the registered objects • Provides mechanism for modifying, uplinking, downlinking the contents of selected tables or internal data structures
APL Libraries for cFE Systems • EEPROM Library • Van Allen Probes had EEPROM non-volatile memory • This library abstracted the details of EEPROM from the applications that required access: EE_Read(), EE_Write(), EE_WriteEnableDisable(), etc. • A simple port of this library was created to emulate EEPROM using a file for pc-linux • This allowed development on Van Allen Probes to proceed in the pc-linux environment • The existence of this library allowed the software that used it to be portable to other NVM technologies through a different port of the library • APL BSP Library • Interface to timers for scheduler (SCH) application interrupt and synchronization • Which NVM image was booted and is running • Collect CPU utilization metrics • Check validity of RAM addresses • A port exists for Van Allen Probes, PC Linux, and SPP
APL Libraries for cFE Systems • SSR Library • Access to SSR registers • SSR DMA • Provide housekeeping specific to the SSR hardware • Provide consistent access to SSR by FSW applications • Mutual exclusion, maintenance of applicable state information • SCIF Library • Most spacecraft specific • Opportunity for reuse across missions is minimal • Enables FSW to run on pc-linux for the particular mission • Abstraction of uplink/downlink hardware • Abstraction of Spacecraft Interface (SCIF) HW • Abstraction of the SpaceWire Router • Abstraction of other mission unique hardware
APL Libraries for cFE Systems • Source code for the libraries is either • Flat: for libraries that exist to provide common functionality across multiple applications • MOH_lib/<source>.c • Parallel: for libraries that exist to abstract SC or platform • SCIF_lib/shared/<source>.c • SCIF_lib/spp-sbc/<source>.c • SCIF_lib/pc-linux/<source>.c • Environment variables in the build (similar to those that help locate the PSP port) are used to select the library port.
Follow Up • The community could benefit from more discussion on • Best practices of use of Drivers & Libraries