We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello all,
I am working on an application that was using around 350KB of program memory. I have changed it in order to add some more features and now the keil compiler complains there is no enough ROM area.
I am using the LPC2387 with 512KB on-chip ROM and I think my current application uses less than 400KB ROM.
Here is the compiler log message:
smv2.axf: Warning: L6914W: option ro-base ignored when using --scatter. smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(at_ip.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(at_ppp_pap.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(at_mem.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(usbuser.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(rt_time.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(at_udp.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(sockettcpclient.o). smv2.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .data(dtlibspi.o). smv2.axf: Error: L6407W: Sections of aggregate size 0x20 bytes could not fit into .ANY selector(s).
And here is the scatter file configuration:
LR_IROM1 0x00003000 0x0007D000 { ; load region size_region ER_IROM1 0x00003000 0x0007D000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x40000040 0xFFC0 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x7FE00000 0x00004000 { .ANY (+RW +ZI) } RW_IRAM3 0x7FD00000 0x00004000 { .ANY (+RW +ZI) } }
I have reserved a bootloader area of 0x3000 size.
Does anyone know why I cannot use more than 350K ROM if the ARM has 512KB ROM??
Thank you,
André Moutinho
First of all, I think you can use up to 504[KB] (so the size of your internal flash load region should be 0x7E000) - see your user manual (the rest is used by the internal bootloader).
This message
Sections of aggregate size 0x20 bytes could not fit into .ANY selector(s)
indicates that you need 32 bytes you cannot afford. Have you considered using compiler optimizations? Is there a .map file generated (maybe there is not enough information)? If so, what does it tell you?
Yes, I forgot to consider the bootloader 0x3000 area. I am trying to optimize the stack sizes. I have post another thread, could you please check this one? Thanks Andre
Another thread? Where? I don't see it in the thread list.
Hello, Please check this address: http://www.keil.com/forum/17481/
Thank you Andre
Hello Tamir, Thanks for your reply. The thread is here: http://www.keil.com/forum/17481/
Thank you Andre Moutinho