Hi, I'm using LPC1768 controller keil v5.24.2.0. In the LPC1768 controller i put tcpip,http stack and some other application to it. While executing data memory reaches around 32700 it works well. But after that it gives an error".\Objects\IIOT Raw.axf: Error: L6406E: No space in execution regions with .ANY selector matching server.o(.data).". Before reach the error the memory limits are Program Size: Code=35844 RO-data=31472 RW-data=300 ZI-data=32348. But in a datasheet they given the data memory is 64K. How to use the full of that ram memory?</br></br>
Thanks & Regards, Prasanth.
I go through the .map file and the details are Load Region LR_IROM1 (Base: 0x00000000, Size: 0x00010828, Max: 0x00080000, ABSOLUTE, COMPRESSED[0x00010754])</br>
Execution Region ER_IROM1 (Exec base: 0x00000000, Load base: 0x00000000, Size: 0x000106fc, Max: 0x00080000, ABSOLUTE)</br>
Execution Region RW_IRAM1 (Exec base: 0x10000000, Load base: 0x000106fc, Size: 0x00007fb8, Max: 0x00008000, ABSOLUTE, COMPRESSED[0x00000058])</br>
Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name I deleted the code in this area due to memory limit in a forum. ---------------------------------------------------------------------- 10416 758 30412 252 32124 239113 Object Totals 0 0 32 0 0 0 (incl. Generated) 0 0 4 6 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name I deleted the code in this area due to memory limit in a forum. ---------------------------------------------------------------------- 25436 2230 1060 48 272 15100 Library Totals 36 0 8 5 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name 17968 1930 775 39 272 11196 TCP_CM3.lib 2868 200 144 0 0 912 m_ws.l 3228 100 133 4 0 1996 mc_w.l 1336 0 0 0 0 996 mf_w.l ---------------------------------------------------------------------- 25436 2230 1060 48 272 15100 Library Totals ---------------------------------------------------------------------- ============================================================================== Code (inc. data) RO Data RW Data ZI Data Debug 35852 2988 31472 300 32396 242745 Grand Totals 35852 2988 31472 88 32396 242745 ELF Image Totals (compressed) 35852 2988 31472 88 0 0 ROM Totals ============================================================================== Total RO Size (Code + RO Data) 67324 ( 65.75kB) Total RW Size (RW Data + ZI Data) 32696 ( 31.93kB) Total ROM Size (Code + RO Data + RW Data) 67412 ( 65.83kB) ==============================================================================
So my total allocated rom is 0x80000 and used is 65.83k and allocated ram is 0x8000 and used is 31.93k. May i change IRAM value to 0xFA00(64k) instead of 0x8000(32.7k)?</br>
If the part has 64KB, set IRAM1 size to 0x10000
0x10000 = 65536 = 64 * 1024
While the data sheet says it has 64KB, it is not all contiguous
There are two 16KB AHB SRAM, located at 0x2007C000 and 0x20080000 You might need to define an IRAM2 section at 0x2007C000 of 0x8000 length, and have your IRAM1 section at 0x10000000 of 0x8000 length. You then need to learn how to use attributes and scatter files to place data in the area you want
Anyway Please read the manual for the NXP and KEIL, so I don't have to read them for you www.nxp.com/.../LPC1769_68_67_66_65_64_63.pdf
Okay. Thank you very much for your kind response. Its working for me after putting IRAM1 value to 0x10000.
<p>After change the ram size i have an issue with debugging. When i initiate a debugging cursor start with main function. But now it starts automatically and if i stop debugging it stop at hard fault handler.</p> <p>If i change ram size from 0x1000 to 0x800 it debug fine. But i need full of RAM 0x1000. What should i do to solve this issue?</p>
As I established in my last message, the RAM is *not* contiguous, a fact provided in the reference manual. This is not a part I'm using, it is the part you're using, and should be familiar with.
You will need to define TWO IRAM sections at the different locations, and then direct resources into each. The scatter file will allow function and object level direction, and you should be able to use #pragma or attribute directives in your code to establish where variables and structures are placed.
How to use #pragma or attribute in my code. Please give some sample code for that.