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

Linker fails automatically place code

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?

Parents Reply Children
No data