TI中文支持网
TI专业的中文技术问题搜集分享网站

使用ccs_v10.3.1编译和链接出现问题(linker.cmd)

一、问题描述

使用U盘更新程序,设置好起始地址后,在编译时出现如下问题:

"configPkg/linker.cmd", line 147: warning #10096-D: specified address lies outside memory map
error #10264: DEFAULT memory range overlaps existing memory range FLASH
error #10264: DEFAULT memory range overlaps existing memory range SRAM
error #10010: errors encountered during linking; "empty_EK_TM4C129EXL_TI.out" not built

经查看是因为linker.cmd文件中:

SECTIONS
{
.bootVecs: type = DSECT
.vecs: load > 0x20000000

.resetVecs: load > 0x0

xdc.meta: type = COPY
}

红色位置出现问题。

二、我在${project}.cmd中设置的起始地址是0x00010000,

这样.resetVecs: load > 0x0确实不在所设定的范围内,

linker.cmd文件是编译后生成的,编译的时候会清除,然后再生成

~~~~~~~~~~~~有大神遇到过么?应该怎么做?~~~~~~~~~~

Susan Yang:

resetVecs: load > 0x00008000 //此地址应与 EK_TM4C1294XL.cmd 中的 APP_BASE 一致

您可以参考文档

https://www.ti.com.cn/cn/lit/an/zhca656/zhca656.pdf 

,

xianshemg zhao:

您好,Susan Yang:

首先,谢谢您!

Debug/configPkg/linker.cmd 这个文件,编译后好像是自动生成的,我把您说的参数修改后,执行编译命令,这个文件还是会变为原来的参数,怎样防止这个文件自动生成?

,

Susan Yang:

这个就是自动生成的,没有办法修改

您是否有修改EK_TM4C1294XL.cmd 中的 APP_BASE?

,

xianshemg zhao:

您好,EK_TM4C1294XL.cmd 中的 APP_BASE修改过,修改内容如下:

#define APP_BASE 0x00010000

MEMORY{ FLASH (RX) : origin = APP_BASE, length = 0x000F0000 SRAM (RWX) : origin = 0x20000000, length = 0x00040000}

/* Section allocation in memory */

SECTIONS{ .text : > FLASH .const : > FLASH .cinit : > FLASH .pinit : > FLASH .init_array : > FLASH

.data : > SRAM .bss : > SRAM .sysmem : > SRAM .stack : > SRAM}

我使用的是Resource Explorer中的empty_EK_TM4C129EXL_TI例程。

,

Susan Yang:

请您参考该贴的解决方案

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_CCS_1025584

打开 app.cfg 文件,进入 XDCtools => System => Program 并选择 Properties Tab . 这有一个下拉菜单调用 sectMap,打开,然后下拉 .resetVecs 并在 loadAddress 中填充 cmd 文件中的 APP_BASE。

,

xianshemg zhao:

再次感谢您:

       Susan Yang 。

       根据您的回答,问题已经解决了,不胜感激!!!~~~~~~~~~~

,

Susan Yang:

很高兴您能解决问题

赞(0)
未经允许不得转载:TI中文支持网 » 使用ccs_v10.3.1编译和链接出现问题(linker.cmd)
分享到: 更多 (0)