aboutsummaryrefslogtreecommitdiffstats
path: root/os/common/abstractions/nasa_cfe
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2016-04-10 07:57:09 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2016-04-10 07:57:09 +0000
commit369222c87ab0d503d9a9d2d96ebb04eff45e51b5 (patch)
tree9e418cbe6a12a47331512476ef170c7cf49eb21b /os/common/abstractions/nasa_cfe
parentef9d68fea09167df3c36fc340d48f0c217303375 (diff)
downloadChibiOS-369222c87ab0d503d9a9d2d96ebb04eff45e51b5.tar.gz
ChibiOS-369222c87ab0d503d9a9d2d96ebb04eff45e51b5.tar.bz2
ChibiOS-369222c87ab0d503d9a9d2d96ebb04eff45e51b5.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9269 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common/abstractions/nasa_cfe')
-rw-r--r--os/common/abstractions/nasa_cfe/cfe_osal/cfe_osal.mk4
-rw-r--r--os/common/abstractions/nasa_cfe/cfe_psp/cfe_psp.mk5
-rw-r--r--os/common/abstractions/nasa_cfe/cfe_psp/include/cfe_psp.h375
-rw-r--r--os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c1
-rw-r--r--os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_timer.c55
5 files changed, 436 insertions, 4 deletions
diff --git a/os/common/abstractions/nasa_cfe/cfe_osal/cfe_osal.mk b/os/common/abstractions/nasa_cfe/cfe_osal/cfe_osal.mk
index a9eb9ee68..70bc78a2d 100644
--- a/os/common/abstractions/nasa_cfe/cfe_osal/cfe_osal.mk
+++ b/os/common/abstractions/nasa_cfe/cfe_osal/cfe_osal.mk
@@ -1,4 +1,4 @@
# NASA CFE OSAL files.
-CFEOSALSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/cfe_osal/src/osapi.c
+CFEOSALSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/osal/src/osapi.c
-CFEOSALINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/cfe_osal/include
+CFEOSALINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/osal/include
diff --git a/os/common/abstractions/nasa_cfe/cfe_psp/cfe_psp.mk b/os/common/abstractions/nasa_cfe/cfe_psp/cfe_psp.mk
index 3e1d34345..518ec4836 100644
--- a/os/common/abstractions/nasa_cfe/cfe_psp/cfe_psp.mk
+++ b/os/common/abstractions/nasa_cfe/cfe_psp/cfe_psp.mk
@@ -1,4 +1,5 @@
# NASA CFE PSP files.
-CFEPSPSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c
+CFEPSPSRC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_support.c \
+ $(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/src/cfe_psp_timer.c
-CFEPSPINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/cfe_psp/include
+CFEPSPINC = $(CHIBIOS)/os/common/abstractions/nasa_cfe/psp/include
diff --git a/os/common/abstractions/nasa_cfe/cfe_psp/include/cfe_psp.h b/os/common/abstractions/nasa_cfe/cfe_psp/include/cfe_psp.h
new file mode 100644
index 000000000..402064c1f
--- /dev/null
+++ b/os/common/abstractions/nasa_cfe/cfe_psp/include/cfe_psp.h
@@ -0,0 +1,375 @@
+/*
+** File Name: cfe_psp.h
+**
+** Copyright (c) 2004-2006, United States government as represented by the
+** administrator of the National Aeronautics Space Administration.
+** All rights reserved. This software(cFE) was created at NASA's Goddard
+** Space Flight Center pursuant to government contracts.
+**
+** This software may be used only pursuant to a United States government
+** sponsored project and the United States government may not be charged
+** for use thereof.
+**
+** Author: A. Cudmore
+**
+** Purpose: This file contains the cFE Platform Support Package(PSP)
+** prototypes.
+** The PSP routines serve as the "glue" between the RTOS and
+** the cFE Flight Software. The routines fill gaps that are not
+** really considered part of the OS Abstraction, but are required
+** for the cFE flight software implementation. It is possible that
+** some of these routines could migrate into the OS AL.
+**
+** $Log: cfe_psp.h $
+** Revision 1.3 2009/07/29 12:04:46GMT-05:00 acudmore
+** Added Bank parameter to EEPROM Power up/down and EEPROM write enable/disable functions.
+** Revision 1.2 2009/07/22 17:34:10EDT acudmore
+** Added new watchdog API
+** Revision 1.1 2009/06/10 09:28:44EDT acudmore
+** Initial revision
+** Member added to project c:/MKSDATA/MKS-REPOSITORY/CFE-PSP-REPOSITORY/fsw/inc/project.pj
+**
+*/
+
+#ifndef _cfe_psp_
+#define _cfe_psp_
+
+/*
+** Include Files
+*/
+
+#include "common_types.h"
+#include "osapi.h"
+#include "cfe_psp_config.h"
+#include "psp_version.h"
+
+/*
+** Macro Definitions
+*/
+
+/*
+** Error and return codes
+*/
+#define CFE_PSP_SUCCESS (0)
+#define CFE_PSP_ERROR (-1)
+#define CFE_PSP_INVALID_POINTER (-2)
+#define CFE_PSP_ERROR_ADDRESS_MISALIGNED (-3)
+#define CFE_PSP_ERROR_TIMEOUT (-4)
+#define CFE_PSP_INVALID_INT_NUM (-5)
+#define CFE_PSP_INVALID_MEM_ADDR (-21)
+#define CFE_PSP_INVALID_MEM_TYPE (-22)
+#define CFE_PSP_INVALID_MEM_RANGE (-23)
+#define CFE_PSP_INVALID_MEM_WORDSIZE (-24)
+#define CFE_PSP_INVALID_MEM_SIZE (-25)
+#define CFE_PSP_INVALID_MEM_ATTR (-26)
+#define CFE_PSP_ERROR_NOT_IMPLEMENTED (-27)
+
+
+
+/*
+** Definitions for PSP PANIC types
+*/
+#define CFE_PSP_PANIC_STARTUP 1
+#define CFE_PSP_PANIC_VOLATILE_DISK 2
+#define CFE_PSP_PANIC_MEMORY_ALLOC 3
+#define CFE_PSP_PANIC_NONVOL_DISK 4
+#define CFE_PSP_PANIC_STARTUP_SEM 5
+#define CFE_PSP_PANIC_CORE_APP 6
+#define CFE_PSP_PANIC_GENERAL_FAILURE 7
+
+/*
+** Macros for the file loader
+*/
+#define BUFF_SIZE 256
+#define SIZE_BYTE 1
+#define SIZE_HALF 2
+#define SIZE_WORD 3
+
+/*
+** Define memory types
+*/
+#define CFE_PSP_MEM_RAM 1
+#define CFE_PSP_MEM_EEPROM 2
+#define CFE_PSP_MEM_ANY 3
+#define CFE_PSP_MEM_INVALID 4
+
+/*
+** Define Memory Read/Write Attributes
+*/
+#define CFE_PSP_MEM_ATTR_WRITE 0x01
+#define CFE_PSP_MEM_ATTR_READ 0x02
+#define CFE_PSP_MEM_ATTR_READWRITE 0x03
+
+/*
+** Define the Memory Word Sizes
+*/
+#define CFE_PSP_MEM_SIZE_BYTE 0x01
+#define CFE_PSP_MEM_SIZE_WORD 0x02
+#define CFE_PSP_MEM_SIZE_DWORD 0x04
+
+/*
+** Type Definitions
+*/
+
+/*
+** Memory table type
+*/
+typedef struct
+{
+ uint32 MemoryType;
+ uint32 WordSize;
+ uint32 StartAddr;
+ uint32 Size;
+ uint32 Attributes;
+} CFE_PSP_MemTable_t;
+
+/*
+** Function prototypes
+*/
+
+/*
+** PSP entry point and reset routines
+*/
+extern void CFE_PSP_Main(int ModeId, char *StartupFilePath);
+
+/*
+** CFE_PSP_Main is the entry point that the real time OS calls to start our
+** software. This routine will do any BSP/OS specific setup, then call the
+** entrypoint of the flight software ( i.e. the cFE main entry point ).
+** The flight software (i.e. cFE ) should not call this routine.
+*/
+
+extern void CFE_PSP_GetTime(OS_time_t *LocalTime);
+/* This call gets the local time from the hardware on the Vxworks system
+ * on the mcp750s
+ * on the other os/hardware setup, it will get the time the normal way */
+
+
+extern void CFE_PSP_Restart(uint32 resetType);
+/*
+** CFE_PSP_Restart is the entry point back to the BSP to restart the processor.
+** The flight software calls this routine to restart the processor.
+*/
+
+
+extern uint32 CFE_PSP_GetRestartType(uint32 *restartSubType );
+/*
+** CFE_PSP_GetRestartType returns the last reset type and if a pointer to a valid
+** memory space is passed in, it returns the reset sub-type in that memory.
+** Right now the reset types are application specific. For the cFE they
+** are defined in the cfe_es.h file.
+*/
+
+
+extern void CFE_PSP_FlushCaches(uint32 type, uint32 address, uint32 size);
+/*
+** This is a BSP specific cache flush routine
+*/
+
+extern uint32 CFE_PSP_GetProcessorId ( void );
+/*
+** CFE_PSP_GetProcessorId returns the CPU ID as defined by the specific board
+** and BSP.
+*/
+
+
+extern uint32 CFE_PSP_GetSpacecraftId ( void );
+/*
+** CFE_PSP_GetSpacecraftId retuns the Spacecraft ID (if any )
+*/
+
+
+extern uint32 CFE_PSP_Get_Timer_Tick(void);
+/*
+** CFE_PSP_Get_Timer_Tick returns the underlying OS timer tick value
+** It is used for the performance monitoring software
+*/
+
+extern uint32 CFE_PSP_GetTimerTicksPerSecond(void);
+/*
+** CFE_PSP_GetTimerTicksPerSecond provides the resolution of the least significant
+** 32 bits of the 64 bit time stamp returned by CFE_PSP_Get_Timebase in timer
+** ticks per second. The timer resolution for accuracy should not be any slower
+** than 1000000 ticks per second or 1 us per tick
+*/
+
+extern uint32 CFE_PSP_GetTimerLow32Rollover(void);
+/*
+** CFE_PSP_GetTimerLow32Rollover provides the number that the least significant
+** 32 bits of the 64 bit time stamp returned by CFE_PSP_Get_Timebase rolls over.
+** If the lower 32 bits rolls at 1 second, then the CFE_PSP_TIMER_LOW32_ROLLOVER
+** will be 1000000. if the lower 32 bits rolls at its maximum value (2^32) then
+** CFE_PSP_TIMER_LOW32_ROLLOVER will be 0.
+*/
+
+extern void CFE_PSP_Get_Timebase(uint32 *Tbu, uint32 *Tbl);
+/*
+** CFE_PSP_Get_Timebase
+*/
+
+extern uint32 CFE_PSP_Get_Dec(void);
+/*
+** CFE_PSP_Get_Dec
+*/
+
+
+extern int32 CFE_PSP_InitProcessorReservedMemory(uint32 RestartType );
+/*
+** CFE_PSP_InitProcessorReservedMemory initializes all of the memory in the
+** BSP that is preserved on a processor reset. The memory includes the
+** Critical Data Store, the ES Reset Area, the Volatile Disk Memory, and
+** the User Reserved Memory. In general, the memory areas will be initialized
+** ( cleared ) on a Power On reset, and preserved during a processor reset.
+*/
+
+extern int32 CFE_PSP_GetCDSSize(uint32 *SizeOfCDS);
+/*
+** CFE_PSP_GetCDSSize fetches the size of the OS Critical Data Store area.
+*/
+
+extern int32 CFE_PSP_WriteToCDS(void *PtrToDataToWrite, uint32 CDSOffset, uint32 NumBytes);
+/*
+** CFE_PSP_WriteToCDS writes to the CDS Block.
+*/
+
+extern int32 CFE_PSP_ReadFromCDS(void *PtrToDataToRead, uint32 CDSOffset, uint32 NumBytes);
+/*
+** CFE_PSP_ReadFromCDS reads from the CDS Block
+*/
+
+extern int32 CFE_PSP_GetResetArea (void *PtrToResetArea, uint32 *SizeOfResetArea);
+/*
+** CFE_PSP_GetResetArea returns the location and size of the ES Reset information area.
+** This area is preserved during a processor reset and is used to store the
+** ER Log, System Log and reset related variables
+*/
+
+extern int32 CFE_PSP_GetUserReservedArea(void *PtrToUserArea, uint32 *SizeOfUserArea );
+/*
+** CFE_PSP_GetUserReservedArea returns the location and size of the memory used for the cFE
+** User reserved area.
+*/
+
+extern int32 CFE_PSP_GetVolatileDiskMem(void *PtrToVolDisk, uint32 *SizeOfVolDisk );
+/*
+** CFE_PSP_GetVolatileDiskMem returns the location and size of the memory used for the cFE
+** volatile disk.
+*/
+
+extern int32 CFE_PSP_GetKernelTextSegmentInfo(void *PtrToKernelSegment, uint32 *SizeOfKernelSegment);
+/*
+** CFE_PSP_GetKernelTextSegmentInfo returns the location and size of the kernel memory.
+*/
+
+extern int32 CFE_PSP_GetCFETextSegmentInfo(void *PtrToCFESegment, uint32 *SizeOfCFESegment);
+/*
+** CFE_PSP_GetCFETextSegmentInfo returns the location and size of the kernel memory.
+*/
+
+extern void CFE_PSP_WatchdogInit(void);
+/*
+** CFE_PSP_WatchdogInit configures the watchdog timer.
+*/
+
+extern void CFE_PSP_WatchdogEnable(void);
+/*
+** CFE_PSP_WatchdogEnable enables the watchdog timer.
+*/
+
+extern void CFE_PSP_WatchdogDisable(void);
+/*
+** CFE_PSP_WatchdogDisable disables the watchdog timer.
+*/
+
+extern void CFE_PSP_WatchdogService(void);
+/*
+** CFE_PSP_WatchdogService services the watchdog timer according to the
+** value set in WatchDogSet.
+*/
+
+extern uint32 CFE_PSP_WatchdogGet(void);
+/*
+** CFE_PSP_WatchdogGet gets the watchdog time in milliseconds
+*/
+
+extern void CFE_PSP_WatchdogSet(uint32 WatchdogValue);
+/*
+** CFE_PSP_WatchdogSet sets the watchdog time in milliseconds
+*/
+
+extern void CFE_PSP_Panic(int32 ErrorCode);
+/*
+** CFE_PSP_Panic is called by the cFE Core startup code when it needs to abort the
+** cFE startup. This should not be called by applications.
+*/
+
+extern int32 CFE_PSP_InitSSR(uint32 bus, uint32 device, char *DeviceName );
+/*
+** CFE_PSP_InitSSR will initialize the Solid state recorder memory for a particular platform
+*/
+
+extern int32 CFE_PSP_Decompress( char * srcFileName, char * dstFileName );
+/*
+** CFE_PSP_Decompress will uncompress the source file to the file specified in the
+** destination file name. The Decompress uses the "gzip" algorithm. Files can
+** be compressed using the "gzip" program available on almost all host platforms.
+*/
+
+extern void CFE_PSP_AttachExceptions(void);
+/*
+** CFE_PSP_AttachExceptions will setup the exception environment for the chosen platform
+** On a board, this can be configured to look at a debug flag or switch in order to
+** keep the standard OS exeption handlers, rather than restarting the system
+*/
+
+
+extern void CFE_PSP_SetDefaultExceptionEnvironment(void);
+/*
+**
+** CFE_PSP_SetDefaultExceptionEnvironment defines the CPU and FPU exceptions that are enabled for each cFE Task/App
+**
+** Notes: The exception environment is local to each task Therefore this must be
+** called for each task that that wants to do floating point and catch exceptions
+*/
+
+
+/*
+** I/O Port API
+*/
+int32 CFE_PSP_PortRead8 (uint32 PortAddress, uint8 *ByteValue);
+int32 CFE_PSP_PortWrite8 (uint32 PortAddress, uint8 ByteValue);
+int32 CFE_PSP_PortRead16 (uint32 PortAddress, uint16 *uint16Value);
+int32 CFE_PSP_PortWrite16 (uint32 PortAddress, uint16 uint16Value);
+int32 CFE_PSP_PortRead32 (uint32 PortAddress, uint32 *uint32Value);
+int32 CFE_PSP_PortWrite32 (uint32 PortAddress, uint32 uint32Value);
+
+/*
+** Memory API
+*/
+int32 CFE_PSP_MemRead8 (uint32 MemoryAddress, uint8 *ByteValue);
+int32 CFE_PSP_MemWrite8 (uint32 MemoryAddress, uint8 ByteValue);
+int32 CFE_PSP_MemRead16 (uint32 MemoryAddress, uint16 *uint16Value);
+int32 CFE_PSP_MemWrite16 (uint32 MemoryAddress, uint16 uint16Value);
+int32 CFE_PSP_MemRead32 (uint32 MemoryAddress, uint32 *uint32Value);
+int32 CFE_PSP_MemWrite32 (uint32 MemoryAddress, uint32 uint32Value);
+
+int32 CFE_PSP_MemCpy (void *dest, void *src, uint32 n);
+int32 CFE_PSP_MemSet (void *dest, uint8 value, uint32 n);
+
+int32 CFE_PSP_MemValidateRange (uint32 Address, uint32 Size, uint32 MemoryType);
+uint32 CFE_PSP_MemRanges (void);
+int32 CFE_PSP_MemRangeSet (uint32 RangeNum, uint32 MemoryType, uint32 StartAddr,
+ uint32 Size, uint32 WordSize, uint32 Attributes);
+int32 CFE_PSP_MemRangeGet (uint32 RangeNum, uint32 *MemoryType, uint32 *StartAddr,
+ uint32 *Size, uint32 *WordSize, uint32 *Attributes);
+
+int32 CFE_PSP_EepromWrite8 (uint32 MemoryAddress, uint8 ByteValue);
+int32 CFE_PSP_EepromWrite16 (uint32 MemoryAddress, uint16 uint16Value);
+int32 CFE_PSP_EepromWrite32 (uint32 MemoryAddress, uint32 uint32Value);
+
+int32 CFE_PSP_EepromWriteEnable (uint32 Bank);
+int32 CFE_PSP_EepromWriteDisable(uint32 Bank);
+int32 CFE_PSP_EepromPowerUp (uint32 Bank);
+int32 CFE_PSP_EepromPowerDown (uint32 Bank);
+
+#endif /* _cfe_psp_ */
diff --git a/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c b/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c
index 3eb5d5e6d..b79c26ff0 100644
--- a/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c
+++ b/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_support.c
@@ -26,6 +26,7 @@
#include "common_types.h"
#include "osapi.h"
+#include "cfe_psp.h"
/*===========================================================================*/
/* Module local definitions. */
diff --git a/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_timer.c b/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_timer.c
new file mode 100644
index 000000000..d6ceb012a
--- /dev/null
+++ b/os/common/abstractions/nasa_cfe/cfe_psp/src/cfe_psp_timer.c
@@ -0,0 +1,55 @@
+/*
+ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/**
+ * @file cfe_psp_timer.c
+ * @brief CFE PSP timer module code.
+ *
+ * @addtogroup nasa_cfe_psp_timer
+ * @{
+ */
+
+#include "ch.h"
+
+#include "common_types.h"
+#include "osapi.h"
+#include "cfe_psp.h"
+
+/*===========================================================================*/
+/* Module local definitions. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module exported variables. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module local types. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module local variables. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module local functions. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Module exported functions. */
+/*===========================================================================*/
+
+/** @} */