Hi all, I have a program for my STR710 MCU that is running fine. I added the following function: void Initialisation_INT(void)< EIC_FIQConfig(DISABLE); EIC_IER0 &= 0x0000; /**Disable all unused IRQ interruptsin the EIC_ICR reg****/ /***vullen van SIR reg*****/ EIC->SIR[T0TIMI_IRQChannel] = ((u16)T0TIMI_IRQHandler << 16);< EIC->SIR[FLASH_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[RCCU_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[RTC_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[WDG_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[XTI_IRQChannel] = ((u16)XTI_IRQHandler << 16); EIC->SIR[I2C0ITERR_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16); EIC->SIR[I2C1ITERR_IRQChannel]= ((u16)DEFAULT_IRQHandler << 16; EIC->SIR[UART0_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[UART1_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[UART2_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[UART3_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[SPI0_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[SPI1_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[I2C0_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[I2C1_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[CAN_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[ADC_IRQChannel] = ((u16)ADC12_IRQHandler << 16);< EIC->SIR[T1TIMI_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[T2TIMI_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[T3TIMI_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[HDLC_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[USBLP_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< IC->SIR[T0TOI_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC->SIR[T0OC1_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16); EIC->SIR[T0OC2_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< /**Configure and enable IRQ for A/D Converter**/< //EIC->SIR[ADC_IRQChannel] = ((u16)ADC12_IRQHandler << 16);< EIC_IRQChannelConfig(ADC_IRQChannel, ENABLE);< EIC_IRQChannelPriorityConfig(ADC_IRQChannel, 2);< /****Configure and enable IRQ for Timer 0**/< EIC->IVR = (u32)T0TIMI_IRQHandler;< EIC_IRQChannelConfig(T0TIMI_IRQChannel, ENABLE);< EIC_IRQChannelPriorityConfig(T0TIMI_IRQChannel, 1);< /******Configure and enable IRQ for XTI*****/< //EIC configuration EIC_IRQChannelPriorityConfig(XTI_IRQChannel,1);< EIC_IRQChannelConfig(XTI_IRQChannel,ENABLE); } No problem till now. But when I added code to the function. The new function is: void Initialisation_INT(void) { EIC_FIQConfig(DISABLE); EIC_IER0 &= 0x0000; /**Disable all unused IRQ interruptsin the EIC_ICR reg*****/< /**vullen van SIR reg*******/ EIC->SIR[T0TIMI_IRQChannel] = ((u16)T0TIMI_IRQHandler << 16);< EIC->SIR[FLASH_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC_IRQChannelPriorityConfig(FLASH_IRQChannel, 0); EIC->SIR[RCCU_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC_IRQChannelPriorityConfig(RCCU_IRQChannel, 0); EIC->SIR[RTC_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC_IRQChannelPriorityConfig(RTC_IRQChannel, 0); EIC->SIR[WDG_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16);< EIC_IRQChannelPriorityConfig(WDG_IRQChannel, 0);< EIC->SIR[XTI_IRQChannel] = ((u16)XTI_IRQHandler << 16);< /***removed some code, form limited to 7500 char**/ EIC_IRQChannelPriorityConfig(T0TOI_IRQChannel, 0); EIC->SIR[T0OC1_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16); EIC_IRQChannelPriorityConfig(T0OC1_IRQChannel, 0); EIC->SIR[T0OC2_IRQChannel] = ((u16)DEFAULT_IRQHandler << 16); EIC_IRQChannelPriorityConfig(T0OC2_IRQChannel, 0); /***Configure and enable IRQ for A/D Converter****/ //EIC->SIR[ADC_IRQChannel] = ((u16)ADC12_IRQHandler << 16); EIC_IRQChannelConfig(ADC_IRQChannel, ENABLE); EIC_IRQChannelPriorityConfig(ADC_IRQChannel, 2); /****Configure and enable IRQ for Timer 0****/ EIC->IVR = (u32)T0TIMI_IRQHandler; EIC_IRQChannelConfig(T0TIMI_IRQChannel, ENABLE); EIC_IRQChannelPriorityConfig(T0TIMI_IRQChannel, 1); /****Configure and enable IRQ for XTI*****/ //EIC configuration EIC_IRQChannelPriorityConfig(XTI_IRQChannel,1); EIC_IRQChannelConfig(XTI_IRQChannel,ENABLE); } After added this code I receive a error while compiling.< The error: compiling GVPFILL.C... linking... *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: CODE SEGMENT: ?PR?C?SDIV LENGTH: 00000060H *** ERROR L138: CODE GENERATION: PROBLEM WHEN PROCESSING INSTRUCTIONS CAUSE: Target is out of Range SEGMENT: ?PR?ghw_setptr?T?GHWINIT ADDRESS: 02000400CH Program Size: data=9483 const=9914 code=31044 Target not created If I limit the number of function calls in this function by 1/3 then I do not receive the errors any more. It makes no difference if I limit the code by deleting the upper, middle or lower 1/3 part of the code in this function. It works in all cases. Does somebody have an idea what the problem could be? regards Erik
"*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: CODE : : Program Size: data=9483 const=9914 code=31044" Is this just a language barrier thing? What does the word "Overflow" mean to you?
Hi and thanks for the answer. The problem is solved. In the setting there was reserved to little sapce of the SRAM for my program. In uVision the option is: Program > Options for target > LA Locate > User classes. This was: DATA (0x2000A000-0x2000FFFF), CODE (0x20000000-0x20009FFF), CONST (0x20000000-0x20009FFF), CODE_IRQ (0x20000000-0x40009FFF) I changed into: DATA (0x2000A000-0x2000FFFF), CODE (0x20000000-0x2000FFFF), CONST (0x20000000-0x2000FFFF), CODE_IRQ (0x20000000-0x40009FFF) So I reserved more SRAM for my program. Problem solved. Regards, Erik
The error message said: ""*** ERROR L107: ADDRESS SPACE OVERFLOW" The solution was: "So I reserved more SRAM for my program. Problem solved." To me, that should've been immediately obvious from just reading the meassage literally: the word "overflow" should tell you that something was too big for the space available http://www.dictionary.cambridge.org/define.asp?key=56567&dict=CALD So your two options were: 1. make the thing smaller; 2. make the space available bigger. So I'm interested to know this: is it only obvious to me because I'm a native English speaker? Is it not obvious if English is not your 1st language? This does seem to be a frequent problem - so do Keil (ARM) need to consider using simplified English in their error messages? Or should they provide translations for error messages? If so, what languages? Maybe this is a service that local distributors could provide? Here's what the manuals currently say: http://www.keil.com/support/man/docs/bl51/bl51_l107.htm http://www.keil.com/support/man/docs/lx51/lx51_l107.htm