 Error L107: ADDRESS SPACE OVERFLOW Hui Wang 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. |