STM32
直播中

刘超

8年用户 1529经验值
私信 关注
[问答]

STVD编译提示地址重复如何解决?

#error clnk Debugbms010.lkf:1 segments .const (0x8080-0x8705) and .const (0x8000-0x81cc) overlap
The command: "clnk -l"C:Program Files (x86)COSMICCXSTM8_32KLib"  -o Debugbms010.sm8 -mDebugbms010.map Debugbms010.lkf " has failed, the returned value is: 1
exit code=1.

回帖(1)

HCPcry

2024-4-29 17:49:02
STVD(IAR Embedded Workbench for STM8)是一款用于STM8系列微控制器的集成开发环境。在编译过程中,如果出现地址重复的问题,通常是由于链接器配置不当或者内存分配冲突导致的。针对您提供的错误信息,我们可以按照以下步骤进行排查和解决:

1. 检查内存分配:
   错误信息提示两个段(.const)的地址范围重叠。首先,检查您的程序中是否有重复定义的常量或者数组。如果有,请删除重复定义,确保每个常量或数组只在一个地址范围内。

2. 检查链接器配置:
   STVD中的链接器配置文件(.lkf)负责定义内存布局和分配。您需要检查Debugbms010.lkf文件,确保内存分配没有冲突。具体来说,您需要关注以下几个方面:

   a. 确保各个段(如.data、.bss、.const等)的地址范围没有重叠。
   b. 检查内存区域(如RAM、ROM等)的大小是否足够容纳分配给它们的段。
   c. 如果您使用了自定义的内存布局,确保它们没有与默认的内存布局冲突。

3. 重新生成链接器配置文件:
   如果您不确定如何修改链接器配置文件,可以尝试让STVD自动生成一个新的链接器配置文件。在STVD中,选择“Project”菜单,然后选择“Options...”。在弹出的对话框中,选择“Linker”选项卡,然后点击“Generate”按钮。这将根据当前项目的设置生成一个新的链接器配置文件。

4. 清理并重新编译项目:
   在解决了上述问题后,您需要清理项目并重新编译。在STVD中,选择“Project”菜单,然后选择“Clean Project”。之后,重新编译项目,看看问题是否得到解决。



举报

更多回帖

发帖
×
20
完善资料,
赚取积分