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

How much of a RAM we can use in our program

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.

Parents Reply Children
  • 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.