为什么我的链接器映射.text部分不一致?[STM32,GCC]

为什么我的链接器映射.text部分不一致?[STM32,GCC],gcc,linker,Gcc,Linker,我遇到了一个问题,我的flash脚本在某些构建中会失败。我确定这个问题是由于我的.hex文件中有一个漏洞导致的。所有其他构建在输出中都没有这种差距 这让我试图找出是什么导致了它,我注意到我的.text部分映射不一致,有时它与向量表之间存在间隙。代码中的区别是注释掉了一条打印语句,而不是注释掉了一条打印语句。我不是链接器专家,所以我希望有人能帮我: 解释为什么会发生这种情况 建议我可以做什么,以确保在十六进制文件没有差距 详情: Cortex-M3,STM32,带标准项目的系统工作台 下面是链接脚

我遇到了一个问题,我的flash脚本在某些构建中会失败。我确定这个问题是由于我的.hex文件中有一个漏洞导致的。所有其他构建在输出中都没有这种差距

这让我试图找出是什么导致了它,我注意到我的.text部分映射不一致,有时它与向量表之间存在间隙。代码中的区别是注释掉了一条打印语句,而不是注释掉了一条打印语句。我不是链接器专家,所以我希望有人能帮我:

  • 解释为什么会发生这种情况
  • 建议我可以做什么,以确保在十六进制文件没有差距
  • 详情: Cortex-M3,STM32,带标准项目的系统工作台

    下面是链接脚本和生成的.map文件的相关部分

    编辑:

    我试图强制这两个部分是连续的,这给了我一个链接器错误。我不知道是什么在使用这几个地址:

    无法向后移动位置计数器(从08000190到08000188)

    SECTIONS
    {
      /* The startup code goes first into FLASH */
      .isr_vector :
      {
        . = ALIGN(4);
        KEEP(*(.isr_vector)) /* Startup code */
        . = ALIGN(4);
        _eisr = .;           /* define a global symbol at end of ISR vector */
      } >FLASH
     
      /* The program code and other data goes into FLASH */
      .text :
      {
        . = _eisr;
        . = ALIGN(4);
        *(.text)           /* .text sections (code) */
        *(.text*)          /* .text* sections (code) */
        *(.glue_7)         /* glue arm to thumb code */
        *(.glue_7t)        /* glue thumb to arm code */
        *(.eh_frame)
     
        KEEP (*(.init))
        KEEP (*(.fini))
     
        . = ALIGN(4);
        _etext = .;        /* define a global symbols at end of code */
      } >FLASH