c++linkerarmcompiler-constructionsim800

what differences between two bellow scatter files for CPP compiler and linker?


In the project this scatter file:

APP  0x90309000 0x000B0000
{
  APPCFG +0
  { 
      * (APP_CFG)
  }

  APP0 +0
  { 
    main.o* (APPENTRY)
  }
  APP1 +0
  {
    main.o* (+RO)
    *.o*    (+RO)
  }

  APP_RAM   0xF0380000 0x00060000
  {
    main.o  (+RW,+ZI)
    *.o     (+RW,+ZI)
  }  
}

modify to:

APP  0x90309000 0x00030000
{
  APPCFG +0
  { 
      * (APP_CFG)
  }

  APP0 +0
  { 
    main.o* (APPENTRY)
  }
  APP1 +0
  {
    main.o* (+RO)
    *.o*    (+RO)
  }

  APP_RAM   0xF0380000 0x00060000
  {
    main.o  (+RW,+ZI)
    *.o     (+RW,+ZI)
  }  
}

In the project it changed and change allowable maximum size of proggram and linker given bellow error:

armlink : error L6220: Load region APP size (197016 bytes) exceeds limit (196608 bytes).


Solution

  • The only difference is that the size of the APP region in memory (the second APP parameter) was lowered from 0x000B0000 (decimal 720896) to 0x00030000 (decimal 196608).

    The two APP parameters are:

    The new size constraint is the reason why you see

    armlink : error L6220: Load region APP size (197016 bytes) exceeds limit (196608 bytes).

    You may be able to raise the size limit to 0x00030198 (or perhaps even 0x00030200) to make it accept the 197016 bytes required - but after looking at your other question, I assume that's not an option because the EEP region starts at 0x30000 bytes after the APP region:

    /*********************SIM808 EAT Flash Map****************************/
    //  APP1 = 192K @ 0X90309000
    //  EEP = 8K    @ 0X90339000
    

    So: