title | tags | abstract |
---|---|---|
Core Flight Software Version Description Document |
cFE |
![cFS Logo](./media/image1.png){width="2.75625in" height="2.0243in"}
\begin{center}
\LARGE
core Flight Executive (cFE)
Version 6.6.0
\normalsize
\end{center}
\newpage
|
\newpage
\par\vspace{0.25in}
\par\vspace{0.25in}
| ___________________________________ | Susanne Strege/GSFC-5820 | cFS Flight Software Development Lead
\par\vspace{0.25in}
| ___________________________________ | Joseph Hickey/GRC-LSS0 | cFS Configuration Control Board
\par\vspace{0.25in}
| ___________________________________ | Christopher Knight/ARC-TI | cFS Configuration Control Board
\par\vspace{0.25in}
| ___________________________________ | Steve Duran/JSC-ER611 | cFS Configuration Control Board
\par\vspace{0.25in}
| ___________________________________ | Chris Thames/LARC-D207 | cFS Configuration Control Board
\par\vspace{0.25in}
| ___________________________________ | Scott Tashakkor/MSFC-ES52 | cFS Configuration Control Board
\par\vspace{0.25in}
| ___________________________________ | Chris Monaco/JHU-APL | cFS Configuration Control Board
\pagebreak
The purpose of this build is to continue to refine the cFE FSW product. This build provides various bug fixes, as well as, new features and enhancements including:
-
Symmetric Multi-Processor (SMP) updates to ensure multi-thread saftey when writing to the system log and performing internal time updates and time services
-
New platform configuration to expand the Consultative Committee for Spacecraft Data Systems (CCSDS) APID name space beyond 2^11. Using the CCSDS Version 2 Spacecraft Onboard Interface Services Area (SOIS) standard, this new configuration uses the extensions to the CCSDS Space Packet secondary header containing APID qualifier and subsystem ID information. The CCSDS Primary Header APID continues to be used as a unique system-wide message identifier. Configurable macros are then utilized to generate a unique mission wide message identifier from the APID qualifier, command/telemetry bit, subsystem ID, and APID information with the CCSDS headers. This new configuration addresses several issues including:
- Difficulties allocating and managing the limited number of APIDs during development
- Insufficient number of APIDs for large systems
- APID allocations for formation flying, distributed systems, multi-core, and partitioned systems
- Loss of spacecraft and subsystem identifying information as packets traverse the network stacks
-
ES Memory Pool updates to guarantee buffers allocated from a pool meet the target CPU architecture requirements for the largest C99 data types (long long int, long double, and void*). Additionally, this introduces a new platform configuration option to increase the alignment to greater value, as this can yield performance improvements on some architectures.
-
CCSDS Electronic Data Sheets (EDS) support. An EDS is a formal machine readable (XML) specification of interfaces for both hardware and software components. The primary use cases are to warrent Exchange of unambiguous interface definitions in a standard format between organizations (As CCSDS is an international standards body, organizations includes other international agencies, and industry partners); Automatic generation of interface code, system models, system tests, and mission operational databases; and Run-time support for Plug-and-Play systems. EDS updates in this release include:
-
SOIS EDS XML files for each of the core applications (ES, EVS, SB, FS, TBL, and TIME)
-
Adoption and implementation of a consistent naming convention for all identifiers. This serves as a prerequisite to using any sort of generated header files or source code from the EDS XML files.
-
Ensuring library loads are not duplicates. The lack of a runtime ID becomes important/relevant if a loadable library contains an EDS that needs to be registered in the local EDS table for other apps to use.
-
Message dispatch consistency across the core applications. Every interface message defined in the external interface (be it EDS or otherwise) now has a separate dedicated handler function. This includes no-op and send housekeeping commands. The message handler functions all have a similar prototype:
int32 MessageHandler(const MessageType_t *data);
-
-
Actual short format event message
-
Removal of compile time upper bound checks on platform configuration parameters
-
Adoption and implementation of a consistent naming convention for all mission and platform configuration parameters
-
New platform configuration to define the length of time (in milliseconds) ES will delay when sending shell command packets over the software bus
-
Moving Performance ID definitions from private to public header files
-
Adding missing command length verification for SB and TIME applications
-
Adding new Software Bus API to control whether the app publishing a message receives the message in its own pipe.
There were no changes to existing APIs made in this build however, there were two changes that result in expected compiler warnings building with the latest release of the OSAL, Version 4.2.1:
-
cfe/fsw/cfe-core/src/es/cfe_es_shell.c: In function ‘CFE_ES_ShellOutputCommand’: line 98: warning: passing argument 1 of ‘OS_ShellOutputToFile’ discards qualifiers from pointer target type. osal/src/os/inc/osapi-os-filesys.h:439: note: expected ‘char *’ but argument is of type ‘const char *’
-
cfe/fsw/cfe-core/src/tbl/cfe_tbl_task_cmds.c: In function ‘CFE_TBL_DumpToFile’: line 784: warning: passing argument 2 of ‘OS_write’ discards qualifiers from pointer target type. osal/src/os/inc/osapi-os-filesys.h:280: note: expected ‘void *’ but argument is of type ‘const void *’
These warnings will be resolved in a future release of the OSAL.
In addition, backward compatibility is not supported with versions of the OSAL library older than 4.2.0 and versions of the PSP library older than 1.3.0. Additional release notes may be found at:
https://babelfish.arc.nasa.gov/trac/cfs_cfe/wiki/ReleaseNotes
These release notes are also include in the /docs directory where this VDD is located.
Unit testing has been completed and baselined on cFE build 6.6.0 using the updated cFE test suite. Results are included in the release package in the “Results” directories included under:
/fsw/cfe-core/unit-test/
Regression testing was performed on cFE 6.6.0 on a PPC/mcp750 running VxWorks 6.9. Results are included in the release package under:
/test-and-ground/test-review-packages/Results
Functional testing was performed on a variety of platforms. See section [Tested Platforms] for a listing of the platforms on which functional testing was performed.
There are some outstanding issues being investigated. Resolutions to these issues may require a new release. The project CCB and community inputs will determine which Trac Tickets to include in the next release.
Table 1.2-1 identifies new FSW functionality that has been implemented and is integrated into this FSW version and the Trac tickets associated with these changes.
Trac Component Summary Commits
#167 es Additional CFE start up state for 465a958
: Add additional sync state for apps
application sync b227d57
: Remove stale comment in
CFE_ES_ExitApp
#175 common CCSDS APID Name Space Expansion b68417f
: Changes to implement extended APID
name space. Also other assorted minor cleanup
a6e3d70
: Minor cleanup action items
d3d39e2
: Fixes for MsgKey/MsgId/RouteIdx
3521508
: Cleanup APID qualifier header
#176 common CCSDS Electronic Data Sheet (EDS) 8ae2f8d
: Naming convention updates
integration fc652ab
: Add EDS files for CFE core apps
d124688
: Make CFE_TIME_Copy macro public
b54a2b7
: prefer sizeof(instance) rather than
type
69edaa0
: Implement Generic status codes
4737d6a
: Update ES message dispatch pattern
3244d92
: Update EVS message dispatch pattern
b91baff
: Update TBL message dispatch pattern
478ffdb
: Update TIME message dispatch
pattern
0f46da2
: Update SB message dispatch pattern
27cc676
: Correlate TLM struct names between
code and EDS
d547d5c
: Fix issue with EVS mode/format
command
#190 sb option to not receive messages I send? a47335c
: Added CFE_SB_{Set|Get}PipeOpts()
API, with one field currently defined to
control whether the app publishing a message
receives the message in its own pipe.
Addresses .
#203 build CMake script cleanup 8ba8be4
: CMake script file cleanup
6ea63f8
: Build PSP earlier in the build
process
#204 other CFE SB and TIME components missing length bd40a2d
: Add command length checks for SB
verification on incoming messages and TIME
Trac Component Summary Commits
#12 other External CFE message definitions should not 81c64e0
: Separate PLATFORM, OS, and API
depend on values from cfe_platform_cfg.h or limits
osconfig.h 5099bc5
: Cleanup msgid inclusion in public
header
#30 other Review use of CFE_PSP_MemCpy/CFE_PSP_MemSet 57485cf
: Replace CFE_PSP_MemCpy/MemSet
#39 other Enforce Strict ASCII 8474136
: Scrub all non-ASCII characters in
source files
#43 time SMP: CFE TIME uses OSAL IntLock/IntUnlock ebbb081
: Fix TIME use of OS_IntLock for SMP
for mutual exclusion 2a42f5f
: 2017-10-20 CCB - Volatile shared
memory values
#44 es SMP: CFE_ES_WriteToSyslog() is not 05fdcb0
: Make CFE_ES_WriteToSysLog() thread
multi-thread safe safe
baa53e5
: Fixup from 2017-10-10 review
#64 other Suspicious implementation of SHORT_FORMAT d49d4ef
: Alternate MsgID Solution
mode in EVS_SendPacket()
#83 other Default Configuration Setting for cee20c9
: Changed default from 30 to 1
CFE_ES_STARTUP_SCRIPT_TIMEOUT_MSEC is Too
Big
#86 sb Correction of an infinite loop in 59640e0
: Replaced continue with if/else statement
cfe_sb_task.c
#100 common Update CFE_ES_SYSTEM_LOG_SIZE Verify to 03ea234
: Removed unnecessary ES verify.h checks
Allow Larger Sys Log Files Updated the comments in the platform configuration
file accordingly.
5a8f876
: Updated upper bound verification on RAM
disk parameters, CDS size, user reserved memory size,
and reset area size to use UINT_MAX macro. Updated
platform configuration comments in accordance.
aab911a
: Corrected/removed upper bound checks on
RAM_DISK_SECTOR_SIZE and RAM_DISK_NUM_SECTORS
configuration parameters. Updated the comments in
the platform configuration file accordingly. Updated
sample_defs cpu1 platform_cfg.h to match comment
changes made to the /fsw/platform_inc/cpu1 copy.
e24fdfd
: Removed unneeded upper bound verifications
from EVS, SB, TBL, and TIME verify.h files. Updated
configuration file documentation accordingly. Added
missing STACK_SIZE verifications. Added "disclaimer"
to top of configuration files.
fd32572
: Updated
CFE_PLATFORM_ES_START_TASK_STACK_SIZE default value to
CFE_PLATFORM_ES_DEFAULT_STACK_SIZE in the
platform_cfg.h files. Updated ES and SB verify.h files
to use UINT32_MAX macro vs. the UINT_MAX macro.
#107 sb SB - Duplicate Pipe Creation Causes Failure 2ef96fd
: In the initializer for
to Delete Pipe OriginalPipeIdParfamValue, the value assigned when the
PipeIdPtr is NULL needs to be of the same type as the
variable being initialized. We all missed the fact
that NULL (in C) explicitly includes a cast that
forces it to be a pointer, but the data type needed is
an integer. This fix modifies the code:
if PipeIdPtr is NULL, then set the original PipeID to
zero, not NULL. This value is not subsequently used:
all subsequent uses of this variable are beyond an
early exit taken if PipeIdPtr is NULL.
#111 other Naming convention for macros in 35a2d07
: Proposed macro naming conventions
cfe_mission_cfg and cfe_platform_cfg
#115 other Standardize Version Numbering (in CFE) 987cd80
: Added cFS version standards info from wiki
to both the main.dox and cfe_version.h files
#117 es CFE_ES_GetAppName() undefined output when 42025d1
: CFE_ES_GetAppName() empty string on
failure occurs error
d0d0554
: Doxygen update associated with
proposed fix
#133 es CFE_ES_AppCreate does not unload an object file if the entry point is not found
#135 sb SB: "cfe_sb.h" should not depend on b6d65a3
: Remove SB implicit plafform_cfg
cfe_platform_cfg.h include
#137 es Possible buffer overrun in format strings 28244a6
: Avoid using scanf in startup script
used for scanf 7e450fc
: CCB 2017-10-20: Warn about
permissive parsing
#140 es EDS: The ES "LoadLibrary()" call - avoid b65114f
: Refactor CFE_ES_LoadLibrary
duplicates and pass ID
#143 es ES does not check target file existence 624aae7
: Added check (OS_stat call) to ensure file
before attempting to reload an application file exists before updating the variables to notify
ES to restart application.
3f6d729
: Added doxygen documentation for the
CFE_ES_ReloadApp function prototype comments
describing recovery sequence in the event an
application cannot be restarted due to
existing/corrupt file.
#144 time SMP: Thread safety issues in CFE_TIME ae8eedd
: Thread safety of timer sync
around the Sync Callbacks callbacks
#156 time Incorrect leap seconds in docs 51e721f
: Replaced hardcoded "current" leap seconds
with a link to the official source for determining
leap seconds.
#164 es cFE cES1702.3 and cES1703.3 Requirement 2089d9b
: Updated the doxygen documentation for the
Failures CFE_PLATFORM_ES_EXCEPTION_FUNTION parameter to provide
user guidance on where this callback function is
invoked.
887e11f
: Updated doxygen comments for
CFE_PLATFORM_ES_EXCEPTION_FUNCTION platform config
parameter with 10/10/17 CCB approved example.
#165 sb Misleading cFE Doxygen: CFE_SB_DeletePipe 1190340
: CFE_SB_DeletePipe documentation was claiming
that applications were responsible for deleting pipes
in their normal shutdown process; in reality, this is
done by CFE_SB_CleanUpApp, which is called by
CFE_ES_CleanUpApp, as part of the framework support
for application shutdown.
#169 other cFE Cmake Does Not Build Out-of-the-Box 86ce044
: In order to enable the out-of-box experience
for CMake users of CFE 6.5 this imports the correct
sample_defs which coorespond to the remainder of the
release.
#170 common Doxygen generator code had gotten stale 0075b72
: Fix cmake doxygen documentation builds. The
existing "mission-doc" target will build the detailed
documentation, which includes all functions. This
target had been broken since it referenced a
nonexistent Doxyfile and this fixes it. This also adds
another target called "cfe-usersguide" which generates
the CFE users guide package, which should match the
output of the classic build. This is only CFE focused
and does not include the apps. NOTE: this commit takes
a slightly different approach than the previous
attempts at this. This does not change any existing
files that were used by the classic build EXCEPT for
correcting some non-UTF8 characters. Therefore this
will not break the classic build.
#177 common Remove all MKS $log comments in file header b748523
: Removed MKS $log information from comment
prologs blocks
#180 other 'printf': Mismatch between the type 5567bb4
: Added missing type casts to all
expected by the conversion specifier %x and EVS_SendEvent calls
the type of the argument.
#183 es ES Shell Command Telemetry Timing is ae5473b
: Added new CFE_PLATFORM_ES_SHELL_OS_DELAY
Hardcoded platform configuation parameter. Replaced hardcoded
task delay in CFE_ES_ShellOutputCommand with new
configuration parameter.
c00fde0
: Updated name of new platform configuration
parameter from CFE_PLATFORM_ES_SHELL_OS_DELAY to
CFE_PLATFORM_ES_SHELL_OS_DELAY_MILLISEC. Minor fix to
comment for this configuation parameter.
#184 other cFE Performance IDs are Private Definitions 142a9ef
: Moved performance id definitions to
platform configuration, changing the name of the file
to be consistent with cFS.
21e5683
: Moved performance IDs to mission include.
Renamed the performance ID macros to follow mission
configuration naming standard. Updated macros
accordingly in source code files.
#193 sb CFE_SB_CreatePipe should avoid nesting 54a1ad
: Removed nested locks
locks
#194 other Add "Maximum EID" Comment to the Top of 37342e3
: Added max EID comments to ES, EVS, TBL, and
ALL cFE events.h Files TIME events.h files as was done for SB under ticket
#190.
#197 es ES - Incorrect Use of 06a9a6a
: Removed all calls to
CFE_SB_MessageStringGet Function in CFE_SB_MessageStringGet from the
CFE_ES_ShellOutputCommand CFE_ES_ShellOutputCommand function. Removed unneeded
local buffers. Corrected usage of strncmp to strcmp.
99e3d2a
: Corrected undefined behavior when checking
Filname for NULL and assigning default.
1a9d3a1
: removed type cast in call to
OS_ShellOutputToFile in CFE_ES_ShellOutputCommand
function.
#198 sb Build failure when using std=c99 7b27925
: Fix build failure with strict flags
#199 es CFE_ES mempool returns buffers that are not fd4d9da
: Patch for mempool alignment issues
aligned 5c53b99
: Updates per CCB discussion
#202 other Clean up build warnings for CFE 6.6 5344db9
: Fix warnings in the current build
18c3d0a
: in CFE_ES_SetupResetVariables
function, removed "status =" from all calls to
CFE_ES_WriteToERLog
c099fc6
: in CFE_ES_GetAppID function,
removed "Result" variable initialization
769e198
: in CFE_ES_AppCreate function, added
return code check after call to
OS_remove(RamDiskPath), if error then
WriteToSysLog
8157f47
: cfe_es_apps.c:890 - in
CFE_ES_LoadLibrary function, added return code
check after call to OS_remove(RamDiskPath), if
error then WriteToSysLog
08add53
: In CFE_ES_ExitApp function, add
explicit ReturnCode check and return after
call to CFE_ES_ResetCFE
252ed2a
: CFE_ES_ProcessCoreException
function, removed “Status =” from call to
CFE_ES_RestartApp. In CFE_ES_RestartApp
function, else case where “App ID is not
valid” added WriteToSysLog
#213 other Update cFE Version Number for 6.6.0 Release 657b40c
: Updated version number to 6.6.0 for 6.6.0
testing and release
#215 tbl Table services sometimes copies buffers to 8a7faa5
: Avoid memcpy overlap in TBL services
itself
#216 other Table Services Task Pipe Function 25d7de3
: Fix TBL service message truncation
Incorrectly Handling Commands
#217 other Fix EDS discrepancies after #175 merge f10a142
: XML and corresponding header changes
6e3ecbd
: Move "CFE_SB_RoutingTblIdx_t"
cc5c8fc
: Fix bug route file output
c6008ca
: Improve forward compatibility
#219 es ES - Memory Pool Size No Longer Requires bfa1e46
: Updated requirements to remove memory pool
32-bit Alignment 32-bit alighment. Requirements updated to be in sync
with the changes associated with Trac #199
Information on currently open Trac tickets is available at https://babelfish.arc.nasa.gov/trac/cfs_cfe/report/1. Note that this is a restricted website that requires a server account.
The regression test report located in the /test-and-ground/test-review-packages/Results directory includes a listing of the functions and known discrepancies that were absent from cFE Build 6.6.0 at the time of testing. Additional Trac Tickets may have been submitted after preparation of this test report.
A Trac Ticket report containing a listing of open Trac Tickets is available on request for customers who do not have access to the above servers. Please contact David McComas, [email protected].
Table 1.4-1 identifies the versions of development tools known to work with this FSW version:
Tool Type Tool Name Version Used
RTOS VxWorks 6.9
Compiler VxWorks ccppc 3.3.2
RTOS RTEMS 4.11.2
Compiler i386-rtems4.11-gcc 4.9.3
RTOS Yocto "Poky" Linux Distribution 2.4
Kernel RTLinux 4.12.12-yocto-rt
Compiler arm-poky-linux-gcc 7.2.0
Dev Host Ubuntu 16.04.3 LTS
Ground System ASIST 20.2
Table: 1.4-1 – Development Tool Versions Associated with this FSW Version
Since the cFE uses the Operating System Abstraction Layer (OSAL), multiple operating systems are supported. Build Testing of cFE Build 6.6.0 has been done on a PPC/mcp750 using the RTOS and compiler specified in Table 1.4-1 above. In addition, cFE Build 6.6.0 has been functionally tested with the hardware/software platforms listed in Table 1.5-1 below (build test platform is included for completeness).
Machine CPU Operating System PSP Notes
PC x86-64 Ubuntu 16.04 LTS, pc-linux Verify operation of native 64-bit build on Kernel 4.13.0-16 8-core SMP, little endian machine.
Virtual PC i686 RTEMS 4.11.2 pc-rtems Verify operation on 32-bit RTEMS. (QEMU 2.5.0) with "pc686" BSP Updated PSP needed for compatibility with RTEMS 4.11.2 release (no change to CFE itself).
Beaglebone ARMv7 Yocto Project Poky pc-linux Verify operation on 32-bit little endian ARM Black Distribution 2.4, processor on Linux with Realtime (RT) kernel, RTLinux 4.12.12 running on actual hardware (TI AM3359 CPU).
Virtual G4 PowerPC Yocto Project Poky pc-linux Verify operation on 32-bit big endian processor
(QEMU 2.10.0) 7400 Distribution 2.4,
Linux 4.12.12
Virtual Malta MIPS 64 Yocto Project Poky pc-linux Verify operation on 64-bit big endian processor (QEMU 2.10.0) (64-bit) Distribution 2.4, (native 64 bit build) Linux 4.12.12
Table: 1.5-1 – Functional Test Platforms Associated with this FSW Version
Table 2.0-1 identifies the locations of FSW products relevant to this FSW Build. The version or date of the Build and where the product can be located are provided. Changes from a previous VDD are identified.
Table 2.0-1 – Delivered Products and their Locations
Software Element Changed with this Version? New Version or Date Location
Executable for this build Yes 6.6.0 N/A. Executables are not delivered for the cFE
Installation Procedures & Special Instructions No N/A See Deployment Guide
babelfish.arc.nasa.gov (in git system master branchs – cFE and TOOLS) and <http://sourceforge.net/projects/coreflightexec>
Source Code of this FSW Build Yes 6.6.0 babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
FSW Build Plan No N/A None
Annotated S/W Detailed Design Docs No N/A cFE Application Developer’s Guide
babelfish.arc.nasa.gov (in git system master branch) and <http://sourceforge.net/projects/coreflightexec>
Ground System T&C Database Yes 6.6.0 babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
Ground System Scripts developed by FSB No N/A babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
Simulator and Test Data Generator Software N/A N/A None
Executable - Ground Tools associated with FSW (tools to build stored command loads, etc.) No N/A babelfish.arc.nasa.gov (in git system TOOLS master branch) and http://sourceforge.net/projects/coreflightexec
Source Code - Ground Tools associated with FSW (tools to build stored command loads, etc.) Yes N/A $WORK
Perl scripts to generate ground database and build verification procedures from templates
Unit Test Procedures Yes 6.6.0 babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
Unit Test Data Yes 6.6.0 babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
Unit Test Results Yes 6.6.0 babelfish.arc.nasa.gov (in git system master branch) and http://sourceforge.net/projects/coreflightexec
FSW Make Files Yes 6.6.0 babelfish.arc.nasa.gov (in git system master TOOLS branch) and http://sourceforge.net/projects/coreflightexec
Linker & Compiler Configuration Files Yes 6.6.0 babelfish.arc.nasa.gov (in git system master TOOLS branch) and http://sourceforge.net/projects/coreflightexec
Table 3.0-1 identifies the nominal FSW Installation Procedure(s) for this FSW Build onto the intended target system (including the commercial applications used and the configuration settings). The procedure version identifier, the date of the procedure and where it can be located are also provided.
Table 3.0-1 FSW Installation Procedure(s)
Destination Filename Version and Date Location
(Target System)
Procedure is generic for each CPU cFS Deployment Guide 3.0 babelfish.arc.nasa.gov (in git system master TOOLS branch) and http://sourceforge.net/projects/coreflightexec
cFE Build 6.6.0 can be found on babelfish.arc.nasa.gov (in git system master branch) and is provided as open source on sourceforge.net:
http://sourceforge.net/projects/coreflightexec/
Telemetry is available to indicate cFE Build 6.6.0 and is documented in the following source file: /fsw/cfe/core/src/inc/cfe_version.h.
API Application Program Interface
cFE Core Flight Executive
C&DH Command and Data Handling
cFS Core Flight Software System
CM Configuration Management
CPM CFS Performance Monitor
COTS Commercial Off-The-Shelf
DCR Discrepancy/Change Request
EDS Electronic Data Sheet
ES Executive Services
ETU Engineering Test Unit
EVS Event Services
FSB Flight Software Branch
FSW Flight Software
I&T Integration & Test
MISRA Integration & Test
OSAL Operating System Abstraction Layer
PPC Power Personal Computer
RTOS Real-Time Operating System
SB Software Bus Services
TBL Table Services
TIME Time Services
T&C Telemetry and Command
URL Universal Resource Locator
UTF Unit Test Framework
VDD Version Description Document