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.
We are facing some problem during linking one project using Keil MDK 3.40:
Error: L6406W: No space in execution region with .ANY selector matching Section .bss(uart.o). Error: L6407W: Sections of aggregate size 0x3174 bytes could not fit into .ANY selectors(s).
The same project links OK using Keil MDK 3.04!!!
We are using 3 RAM regions (main RAM, USB RAM, and Ethernet RAM) for storing runtime variables. Keil MDK 3.04 linker automatically places all variables using all available regions and everything fits fine. But it seems that Keil 3.40 MDK linker is trying to place everything only into the MAIN_RAM regardless of that there are plenty of space left in USB_RAM and ETHERNET_RAM regions.
Linker control string in Keil MDK 3.40 looks like this:
*.o "D:\Keil340\ARM\RV31\LIB\RTX_ARM_L.LIB" --device DARMP --strict --scatter ".\Obj\scatter.sct" --autoat --summary_stderr --info summarysizes --map --xref --callgraph --symbols
So the main question is, why Keil MDK 3.40 linker can't automatically place all variables correctlly and gives an error if 3.04 could? Maybe there are some extra settings or some other ways to solve this problem?
I also had a problem with the linker about a week ago - somehow an entire flash sector was skipped, and I fixed it with some scatter file trickery (see my post of about a week ago).