This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Error L107: ADDRESS SPACE OVERFLOW

Hi,

We are developing firmware for Cypress EZUSB processor. At beginning, our program only had 1 source C file and it worked fine. Now we have 2 source C file which share 2 common header files, and it suddenly gave this link error, Error L107: ADDRESS SPACE OVERFLOW.


linking...
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   XDATA
    SEGMENT: ?XD?TIMER0
    LENGTH:  0654H
*** WARNING L6: XDATA SPACE MEMORY OVERLAP
    FROM:    8000H
    TO:      8010H
*** WARNING L6: XDATA SPACE MEMORY OVERLAP
    FROM:    8020H
    TO:      803FH
Program Size: data=13.0 xdata=3338 code=283
Target not created

We have simplified the program as below(giving the same error msg):

1. main C file

#pragma NOIV    // Do not generate interrupt vectors
//--------------------------------------------------
#include <ezusb.h>
#include <ezregs.h>
#include <fx.h>

#include "lcb.h"
#include "head.h"

//-------------------------------------------
// Code
//-------------------------------------------

void main(void)
{
 // Initialize endpoints, interrupts, and ports
  init();

}

void init(void)
{
}
//------------------------------------------------------
// USB Interrupt Handlers
//      The following functions are called by the USB interrupt jump table.
//-----------------------------------------------------------------------------
void ISR_IBN(void) interrupt 0
{
}
void ISR_Ep0in(void) interrupt 0
{
}
void ISR_Ep0out(void) interrupt 0
{
}
void ISR_Ep1in(void) interrupt 0
{
}
void ISR_Ep1out(void) interrupt 0
{
}
void ISR_Ep2in(void) interrupt 0
{
}
void ISR_Ep2out(void) interrupt 0
{
}
void ISR_Ep3in(void) interrupt 0
{
}
void ISR_Ep3out(void) interrupt 0
{
}

void ISR_Ep4in(void) interrupt 0
{
}
void ISR_Ep4out(void) interrupt 0
{
}
void ISR_Ep5in(void) interrupt 0
{
}
void ISR_Ep5out(void) interrupt 0
{
}
void ISR_Ep6in(void) interrupt 0
{
}
void ISR_Ep6out(void) interrupt 0
{
}

void ISR_Ep7in(void) interrupt 0
{
}
void ISR_Ep7out(void) interrupt 0
{
}
//-----------------------------------------------------------------------------
// Interrups used when RENUM = 1.  Not used for this code.
//-----------------------------------------------------------------------------
void ISR_Ures(void) interrupt 0
{
}

void ISR_Sudav(void) interrupt 0
{
}
void ISR_Sutok(void) interrupt 0
{
}

void ISR_Sof(void) interrupt 0
{
}
void ISR_Susp(void) interrupt 0
{
}

2. timer0.c, this is the timer0 ISR


#include <ezusb.h>
#include <ezregs.h>
#include <fx.h> #include "head.h"
#include "lcb.h" void timer0 (void) interrupt 1 using 1
{ }

3. header1.h

#ifndef LCB_H
#define LCB_H

#define FPGABASE 0x8000

static xdata volatile BYTE      lcb[17] _at_ FPGABASE;
static xdata volatile BYTE VME_DATA[32] _at_ (FPGABASE+32);

// WRITE ADDRESSES
#define WR_INIT_PCP_CNT         lcb[0]
#define WR_READ_PCP_CNT         lcb[1]
#define WR_INC_PCP_CNT          lcb[2]

#define WR_BACK_PMB_CARD        lcb[4]
#define WR_BACK_PMB_ADDR        lcb[5]
#define WR_BACK_PMB_WRITE       lcb[6]
#define WR_BACK_PMB_READ        lcb[7]

#define WR_LATCH_VME_CMD        lcb[15]
#define WR_CLR_VME_CMD          lcb[16]

// READ ADDRESSES
#define RD_55                    lcb[0]
#define RD_AA             lcb[1]

#define LCB_RD_STAT                       lcb[2]
#define bmPCP_RDY                         bmBIT0
#define bmPMB_NOT_RDY           bmBIT1

#define RD_PCP_DATA                     lcb[3]

#define RD_BACK_PMB_DATA        lcb[4]
#define RD_FORE_PMB_DATA        lcb[5]

#define RD_VME_CMD                        lcb[7]

#endif

4. header2.h


#ifndef HEAD_H
#define HEAD_H
//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------
static BYTE g_ssv_run;
static BYTE g_bCard;
static xdata float g_cal[6][6][7];
static xdata WORD g_dac_M[6][6][4];
static xdata short g_acssv_buffer[6][6];
static xdata short g_dcssv_buffer[6][6];
static xdata char g_mezz_id[6][6];
static xdata short g_temperature[6][6];
static xdata short g_squelch[6][6];
//-----------------------------------------------------------------------------
// Prototypes
//-----------------------------------------------------------------------------
extern void bootload(void);
void init(void);
#endif

Is there anything wrong with the program structure? Because the program now is almost empty and it's still giving the overflow error.

Thanks for any hint.

Parents Reply Children
No data