c++ CPP编译器和链接器的两个分散文件之间有什么区别?

lyfkaqu1  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(151)

在项目中,此分散文件:

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)
  }  
}

修改为:

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)
  }  
}

在项目中,它改变了允许的程序和链接器的最大大小,给出了以下错误:
臂连杆:错误L6220:加载区域APP大小(197016字节)超过限制(196608字节)。

nvbavucw

nvbavucw1#

唯一的区别是内存中APP区域(第二个APP参数)的大小从0x000B0000(十进制720896)降低到了0x00030000(十进制196608)。
两个APP参数为:

  • 0x90309000:内存中APP区域的起始地址。
  • 0x00030000:内存中APP区域的大小。

新的大小约束是您看到
armlink : error L6220: Load region APP size (197016 bytes) exceeds limit (196608 bytes).
您可以将大小限制提高到0x00030198(甚至可能是0x00030200),以使其接受所需的197016字节-但在查看your other question之后,我假设这不是一个选项,因为EEP区域开始于APP区域之后的0x30000字节:

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

所以:

  • 您需要将编译后的程序至少缩小408字节。

相关问题