LPC1788 project (512K Flash)
I did some testing on the KEIL MDKARM network components. Only TCP and UDP Sockets were used, no other services required. A small 40K project was tested on the embedded artist lpc1788 eval board. Once I was happy with the code, I proceeded to move it over to my main project.
Adding the Network Core Library to my project causes the linker to claim all of my *.o files in the project not to have space. See below.
.\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching stdio_streams.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching streamlock.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching tokenparse.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching GUI_Core.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching GUI_Core.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching SCROLLBAR.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching WM.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching fs_mapi.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching GUIDEV_StaticDevices.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching hal_cm.o(.data). .\Flash\Blinky.axf: Error: L6406E: No space in execution regions with .ANY selector matching fs_common.o(.data). .\Flash\Blinky.axf: Error: L6407E: Sections of aggregate size 0x2d0 bytes could not fit into .ANY selector(s). Not enough information to list image symbols. Not enough information to list the image map. Finished: 2 information, 0 warning and 74 error messages.
Here is the map file of the project before I added the network library:
---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name 15788 394 1212 2 0 9480 FS_LFN_CM3_L.lib 5758 598 0 37 100 82726 RTX_CM3.lib 6982 260 289 16 348 6464 c_w.l 112242 1598 67138 788 1592 48896 emWin_522_Keil460_M3_LE.lib 4254 292 0 0 0 2344 fz_ws.l 148 6 0 0 0 116 m_ws.l ---------------------------------------------------------------------- 145312 3148 68648 856 2044 150026 Library Totals ---------------------------------------------------------------------- ============================================================================== Code (inc. data) RO Data RW Data ZI Data Debug 220132 9498 83364 8548 13399148 521462 Grand Totals 220132 9498 83364 2040 13399148 521462 ELF Image Totals (compressed) 220132 9498 83364 2040 0 0 ROM Totals ============================================================================== Total RO Size (Code + RO Data) 303496 ( 296.38kB) Total RW Size (RW Data + ZI Data) 13407696 (13093.45kB) Total ROM Size (Code + RO Data + RW Data) 305536 ( 298.38kB) ==============================================================================
Total ROM size is 512K, and I have used 300K of it. The network library is not that large, less than 40K, so I have wnough memory.
Here is my Linker Scatter File used for project:
; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x00000000 0x00080000 { ; load region size_region ER_IROM1 0x00000000 0x00080000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x10000000 0x00010000 { ; RW data .ANY (+RW +ZI) } RW_RAM1 0xA0000000 UNINIT 0x02000000 { ; RW data * (VRAM, GUI_RAM, GUIDEMO_STACK, FS_RAM, IP_RAM, USB_RAM, TICKET_RAM) .ANY (HEAP) ; set the heap here } }
Any suggestions would be apreciated.
Jan.
You probably have the required code space.
But notice that the error messages complains about .data - so take a closer look at your RAM consumption.
Thank you for your help Per. You nailed it.
So the fix was (to add to the knowledgebase for others to reference) was I forgot to add the memory mapping for the CMSIS EMAC Driver. Right clicking EMAC_LPC17xx.c in a keil demo project shows it has a memory assignment which I missed.
I updated my link file and it compiled and linked.
; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x00000000 0x00080000 { ; load region size_region ER_IROM1 0x00000000 0x00080000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x10000000 0x00010000 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x20000000 0x00008000 { EMAC_LPC17xx.o (+ZI +RW) } RW_RAM1 0xA0000000 UNINIT 0x02000000 { ; RW data * (VRAM, GUI_RAM, GUIDEMO_STACK, FS_RAM, IP_RAM, USB_RAM, TICKET_RAM) .ANY (HEAP) ; set the heap here } }
Thanks again for your help.