This repository contains NASA's Platform Support Package (PSP), which is a framework component of the Core Flight System.
This is a collection of APIs abstracting platform specific functionality to be located in the psp
subdirectory of a cFS Mission Tree. The Core Flight System is bundled at https://github.com/nasa/cFS, which includes build and execution instructions.
- Add CFE_PSP_StatusToString and CFE_PSP_STATUS_C
- See nasa/cFS#505
- Resolve uninit var static analysis warning
- See nasa#346 and nasa/cFS#492
- Update codeql workflow for reusable updates
- Add cpu affinity example
- Update RTEMS CMake Platform File
- See nasa#343 and nasa/cFS#471
- Standardize version.h
- Update Copyright Header
- See nasa#330 and https://github.com/nasa/cFS/445
- Remove explicit filename doxygen comments
- Apply header guard standard
- See nasa#326 and nasa/cFS#432
- Sleep before exit when printing
- Check the address in PSP get segment stubs
- Set Build Baseline for cFS-Caelum-rc4: v1.6.0-rc4
- See nasa#318 and nasa/cFS#390
- Relax strict of check before calling "Init" function of module, only check that module type is not invalid
- Remove override of
add_psp_module
for coverage test - See nasa#307 and nasa/cFS#351
- Implement Coding Standards in CodeQL
- rename doc to docs
- See nasa#296 and nasa/cFS#265
- Cleans up stale code from the previous methods of generating 1Hz. Adds a new PSP module that instantiates an OSAL abstract timebase for use with cFE services. This single module is used across all psp implementations (mcp750, pc-linux, pc-rtems). Results in 1Hz timing tick on MCP750 will be more accurate. No changes to Linux or RTEMS
- Fixes segfaults when
CFE_PSP_Port
routines are invoked on Linux. - Converts
cfe_psp_ram.c
andcfe_psp_port.c
into modular components and removes from the "shared" directory. The existing implementations become the corresponding "direct" module, and are enabled based on the psp module selection. Adds a "notimpl" variant where all the functions returnCFE_PSP_ERR_NOT_IMPLEMENTED
. This is used on Linux or any other system where direct access is not possible. Renames the existingeeprom_stub
module to beeeprom_notimpl
for consistency and to avoid confusion with the unit test stubs. - Implements two PSP modules to provide
CFE_PSP_GetTime
andCFE_PSP_GetTimeBase
, one for POSIX-compliant RTOS usingclock_gettime()
and the other specifically for PowerPC processors on VxWorks that have thevxTimeBaseGet()
routine. Clarifies and documents the difference and use cases forCFE_PSP_GetTime
andCFE_PSP_GetTimeBase
. No impact to behavior. - Adds a coverage test for the VxWorks PSP timebase module and provides an example of how this can be implemented for other modules.
- See nasa#289 and nasa/cFS#238
- Removes unnecessary global config structure
Target_PspConfigData
and associated elements in favor of the new version API. - The mem pool stats TLM command now works on 64-bit Linux and sends out the expected telemetry packet.
Converts
CFE_PSP_MemoryTable
to internal object (instead of external) that should only be accessed via the PSP API. Replaceuint32
s withsize_t
. Use full range (SIZE_MAX) in the Linux/RTEMS implementation. - See nasa#288 and nasa/cFS#233
- Includes
cfe_psp_version.c
in the cmake source list, which was mistakenly omitted previously. - Applied the patch and confirmed that CS Cmake unit tests build. Unit tests relying on
CFE_PSP_GetKernelTextSegmentInfo
will build. - See nasa#279
- Addresses the issue of incompatible/non-portable code blobs in the "shared" directory. It uses the same modular init pattern as is used elsewhere in cFE: CMake generates a list of "base" modules correlating with the selected PSP (i.e. pc-linux, mcp750-vxworks, etc) and these modules are then initialized (in order) before the rest of PSP runs. The "direct write" EEPROM is not used unconditionally. Instead the proper eeprom implementation module is selected based on which PSP is selected. MCP750 uses direct write, pc-linux uses an mmap file, and pc-rtems uses a stub (not implemented).
- Replaces " used on non-system header #includes with <>
- Adds a contributing guide that links to the main cFS contributing guide.
- See nasa#273
- HOTFIX 20210312, updates to work with older CMake
- See nasa#268
- Fix #246, remove unused code.
- Fix #254, use CMake to publish interface details
- Fix #256, add PSP version API
- Fix #258, Add Testing Tools to the Security Policy
- See nasa#260
- Updates continuous integration workflow by adding static analysis with timeout and code format check. Adds status badges to ReadMe and removes old TravisCI artifacts.
- Adds CodeQL analysis to continuous integration
- Apply standard formatting to psp codebase. Only changes whitespace.
- Adds missing "+dev" to development version output
- See nasa#250
- Add
Security.md
with instructions on reporting vulnerabilities. - Rename
UT_ClearForceFail
asUT_ClearDefaultValue
to reflect nasa/osal#724 - Remove unused elements in
CFE_PSP_ModuleType_t
enum to avoids irregular enum warning - See nasa#243
- Instead of accessing
OS_time_t
member values directly, use the OSAL-provided conversion and access methods. This provides independence and abstraction from the specificOS_time_t
definition and allows OSAL to transition to a 64 bit value. - See nasa#240
- Add cppcheck GitHub Actions workflow file
- See nasa#234
- Updates the Readme for RTEMS and adds
README_RTEMS_5.txt
. The changes include removing references to the CEXP module loader, and describing the development environment setup for RTEMS 5. - Remove obsolete OS_TaskRegister comment.
- See nasa#226
- Rename
UT_SetForceFail
toUT_SetDefaultReturnValue
since some functions that retain more than 1 value are not necessarily failing. - Use of the size_t type instead of uint32 in unit-tests to avoid a compiler type mismatch error on some platforms.
- See nasa#221
-
- Use event callback mechanism to invoke pthread_setname_np() such that the OS kernel is informed of the OSAL task name.
/proc
filesystem on Linux now has actual task name, instead of all being core-cpu1. Thepthread_setname_np
API requires_GNU_SOURCE
to be defined when compiling - this can be local to PSP.
- Use event callback mechanism to invoke pthread_setname_np() such that the OS kernel is informed of the OSAL task name.
- Set REVISION to "99" to indicate development version
- See nasa#213
- Improves the module ID lookup when getting the CFE core text segment info. VxWorks PSP should use the real module name, not assume cfe-core.o when getting text segment info
- See nasa#209
- Use the osal_id_t typedef whenever dealing with an OSAL ID value.
- Resolves build error regarding redefinition of PPC macros in the coverage test, when building on the actual ppc/vxworks target.
- See nasa#206
- Sets the stub config data spacecraft id to historical value 0x42, was 42.
- Installs unit test to target directories.
- See nasa#196
- Adds CFE_PSP_GetProcessorName
- Removes classic make artifacts
- See nasa#190
- Provide a new framework and perform PSP coverage tests. New coverage test executable is built and several files within PSP are targeted.
- See nasa#184
- Restructure code to make more amicable for rebuilding in a unit test environment. No major changes, primarily just shifting code between locations/headers to support unit testing.
- Adds a char element
Version
toCFE_PSP_VersionInfo_t
containing the version number expressed as a string. Defines new macros for the Build Number and the Build Baseline. - See nasa#176
- Changes the PSP reference to be compatible with the change in nasa/osal#449 making the BSP modules more generic and changes the name.
- See nasa#175
- Changes the PSP reference to be compatible with the change in nasa/osal#449 making the BSP modules more generic and changes the name.
- See nasa#167
- Replace 'OS_VolumeTable' with OS_FileSysAddFixedMap() in all PSPs.
- See nasa#166
- Removes non-termination string warnings when building with GCC9.
- Exception handling is now implemented on POSIX. There is no longer a separate handler for SIGINT - it is now treated as an exception and goes through the normal process which ends up "restarting" CFE. On pc-linux causes the process to exit normally. There is now a mechanism to capture the CTRL+C exception code and use it during normal test cycles.
- See nasa#160
- Implements full-precision microsecond conversion
- See nasa#155
- RTEMS builds successfully without errors
- Build script uses a proper CMakeLists.txt instead of the aux_source directory
- Minor updates (see nasa#153)
- Minor updates (see nasa#151)
- Fixed some build warnings for MCP750
- Minor updates (see nasa#142)
- Minor updates (see nasa#141)
- Simplifies array handling in VxWorks
- Minor updates (see nasa#138)
- Minor updates (see nasa#132)
- Minor updates (see nasa#130)
- Minor updates (see nasa#127)
- Minor updates (see nasa#115)
- This is a point release from an internal repository
- Changes are detailed in cFS repo release documentation
- Released as part of cFE 6.7.0, Apache 2.0
- This is a point release from an internal repository
- See version description document
- Released as part of cFE 6.6.0a, Apache 2.0
The open source release does not include all PSPs that have been developed. Only the three PSPs included are managed by the community CCB. PSPs developed by other organizations can be requested through the mechanisms listed below. Note the framework PSPs delivered may change in the future as platforms become obsolete.
See all open issues and closed to milestones later than this version.
For best results, submit issues:questions or issues:help wanted requests at https://github.com/nasa/cFS.
Official cFS page: http://cfs.gsfc.nasa.gov