GLAST/LAT > DAQ and FSW > FSW > Doxygen Index > LCM / V1-6-1

Constituent: lcm_siu     Tag: rad750


Interface   Data Structures   File List   Data Fields   Globals  

LCM_scrubArch.c.vx-ppc-rad750 File Reference

LCM memory scrubbing/error reporting functions (rad750 architecture). More...

#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"

Include dependency graph for LCM_scrubArch.c.vx-ppc-rad750:


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.

Detailed Description

LCM memory scrubbing/error reporting functions (rad750 architecture).

CVS $Id: LCM_scrubArch.c.vx-ppc-rad750,v 1.4 2008/10/30 01:12:49 apw Exp $
Author:
A.P.Waite
LCM_scrubArch.c.vx-ppc-rad750 handles the memory scrubbing and PCI/memory error exception handling sub-functions of LCM for the rad750 architecture.

Function Documentation

void LCM_scrubMemAuto LCM_Control ctl  ) 
 

Architecture specific implementation of LLCMSCRUBRUN command.

LCM_scrubMemAuto() implements the LLCMSCRUBRUN command for rad750.

unsigned int LCM_scrubSurom LCM_SuromError rom,
unsigned int *  hcs,
unsigned int *  bcs
 

Scrub through SUROM contents to check integrity.

Parameters:
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)
Return values:
LCM_SUCCESS Always
LCM_scrubSurom() performs memory reads through the rad750 SUROM to check for integrity.

unsigned int LCM_scrubTaskInitialize LCM_Control ctl  ) 
 

One-time call in LCM task context to start the scrub sub-function.

Parameters:
ctl (in) LCM control block
LCM_scrubInitialize() builds up the CPU common facilities to run the memory scrubber and handle memory/PCI exceptions.

static unsigned int suromRead LCM_Control ctl,
unsigned char *  dst,
const unsigned char *  src,
unsigned int  cnt
[static]
 

Read SUROM memory.

Parameters:
ctl (in) LCM control block
src (in) Source address
dst (in) Destination address
cnt (in) Number of bytes to read
Return values:
x Number of bytes read (not necessarily the number requested!)


Variable Documentation

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
}
How to get at the offsets/sizes for the memory mapped segments in RAM.


Generated on Thu Nov 13 01:16:53 2008 by  doxygen 1.4.4