GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> LCM / dev > lcm_epu / rad750
#include <string.h>
#include <vxWorks.h>
#include <mv2600.h>
#include <drv/ppci/ppciInt.h>
#include <drv/ppci/ppciMem.h>
#include <FBS/FBS_pubrtos.h>
#include <LCM/LCM_msgs.h>
#include <LCM/LCM_pubdefs.h>
#include <LCM/LCM_tlmdefs.h>
#include <MDB/MDB_pubdefs.h>
#include <PBS/FPA.h>
#include <PBS/WUT.h>
#include <TEX/TEX_pubdefs.h>
#include <TRC/TRC_pubdefs.h>
#include <ZLIB/zlib.h>
#include <LCM_prvdefs.h>
Defines | |
#define | LCM_K_SUROM_BASE ((unsigned char *) 0xfff00000) |
#define | LCM_K_SUROM_0_BASE ((unsigned char *) 0xfff01400) |
#define | LCM_K_SUROM_1_BASE ((unsigned char *) 0xfff10c00) |
#define | LCM_K_SUROM_2_BASE ((unsigned char *) 0xfff20400) |
#define | LCM_K_SUROM_3_BASE ((unsigned char *) 0xfff2fc00) |
#define | LCM_L_SUROM_SIZE (0x00040000) |
#define | LCM_L_SUROM_READ (512) |
Typedefs | |
typedef enum _LCM_memIntTyp | LCM_memIntTyp |
Typedef for enum _LCM_memIntTyp. | |
Enumerations | |
enum | _LCM_memIntTyp { MEM_TYP_INFORMATION, MEM_TYP_CORRECTABLE, MEM_TYP_UNCORRECTABLE } |
A classification of memory errors into error types (severities). | |
Functions | |
static void | hardReset (void) |
Perform rad750 hard reset via EMC exception 1. | |
static void | memErrorHandler (LCM_Control *ctl) |
Interrupt handler for memory errors reported through EMC. | |
static void | pciErrorHandler (LCM_Control *ctl) |
Interrupt handler for PCI errors reported through EMC. | |
static void | scrubHandler (LCM_Control *ctl) |
Interrupt handler for scrub completion messages reported through EMC. | |
static unsigned int | suromRead (LCM_Control *ctl, unsigned char *dst, const unsigned char *src, unsigned int cnt) |
Read SUROM memory. | |
void | LCM_scrubMemAuto (LCM_Control *ctl) |
Architecture specific implementation of LLCMSCRUBRUN command. | |
unsigned int | LCM_scrubSurom (LCM_SuromError *rom, unsigned int *hcs, unsigned int *bcs) |
Scrub through SUROM contents to check integrity. | |
unsigned int | LCM_scrubTaskInitialize (LCM_Control *ctl) |
One-time call in LCM task context to start the scrub sub-function. | |
Variables | |
static const unsigned char * | LCM_suromSegment [LCM_L_SUROM_SEGMENT] |
How to get at the offsets/sizes for the memory mapped segments in RAM. | |
static LCM_SuromError | LCM_suromError [LCM_L_SUROM_SEGMENT] |
How to get at the offsets/sizes for the memory mapped segments in RAM. |
CVS $Id: LCM_scrubArch.c.vx-ppc-rad750,v 1.6 2011/03/29 21:59:34 apw Exp $
void LCM_scrubMemAuto | ( | LCM_Control * | ctl | ) |
Architecture specific implementation of LLCMSCRUBRUN command.
LCM_scrubMemAuto() implements the LLCMSCRUBRUN command for rad750.
References _LCM_Control::scrub_start.
Referenced by LCM_ScrubRun(), LCM_scrubTaskInitialize(), and LCM_scrubTimer().
unsigned int LCM_scrubSurom | ( | LCM_SuromError * | rom, | |
unsigned int * | hcs, | |||
unsigned int * | bcs | |||
) |
Scrub through SUROM contents to check integrity.
rom | (out) SUROM memory error counts by segment | |
hcs | (out) Header checksum failure by segment (1 => failed) | |
bcs | (out) Body checksum failure by segment (1 => failed) |
LCM_SUCCESS | Always |
References _LCM_SuromError::cme, LCM_lcb, _LCM_Control::rwi, suromRead(), and _LCM_SuromError::ume.
Referenced by LCM_resetCPU().
unsigned int LCM_scrubTaskInitialize | ( | LCM_Control * | ctl | ) |
One-time call in LCM task context to start the scrub sub-function.
ctl | (in) LCM control block |
References LCM_SCRUB_INITIAL_PERIOD, LCM_scrubMemAuto(), LCM_scrubTimer(), memErrorHandler(), pciErrorHandler(), and scrubHandler().
Referenced by taskStartOnce().
static unsigned int suromRead | ( | LCM_Control * | ctl, | |
unsigned char * | dst, | |||
const unsigned char * | src, | |||
unsigned int | cnt | |||
) | [static] |
Read SUROM memory.
ctl | (in) LCM control block | |
src | (in) Source address | |
dst | (in) Destination address | |
cnt | (in) Number of bytes to read |
x | Number of bytes read (not necessarily the number requested!) |
References _LCM_Control::rwi.
Referenced by LCM_scrubSurom().
static const unsigned char * LCM_suromSegment[LCM_L_SUROM_SEGMENT] [static] |
Initial value:
{ LCM_K_SUROM_BASE, LCM_K_SUROM_0_BASE, LCM_K_SUROM_1_BASE, LCM_K_SUROM_2_BASE, LCM_K_SUROM_3_BASE }