本文基于 TASKING 知识库中关于 Mitigate the Linker Error E121 的主题整理,适合用于 TriCore/AURIX 项目在链接阶段出现 E121 时的快速定位与内部培训。
参考来源:TASKING Knowledge Base – TriCore VX-toolset 分类页
从工程经验看,E121 这类链接错误通常不是“工具坏了”,而是代码放置方式、地址模型或跨段调用方式与当前 TriCore 架构限制不匹配。也就是说,它往往反映的是工程组织问题。
TriCore/AURIX 项目本身就比较依赖内存布局、核心划分和段组织。一旦代码量变大、模块增多,或者引入新的库和启动结构,地址分布就容易触碰某些架构边界。
先确认出错符号、调用关系和相关段分别被放到了哪里。很多 E121 的第一现场其实已经在 map 文件里了。
检查相关对象文件或模块是否混用了 near/far 假设。特别是历史代码、第三方库和迁移代码混在一起时,更容易出现这类不一致。
如果函数或数据被放到了不合适的段范围,单纯修改源代码并不能解决问题,往往还是要回到 LSL 层做布局调整。
如果问题是在工具版本升级、项目迁移或链接脚本调整后出现,优先比对这些改动,而不是盲目怀疑应用逻辑。
E121 可以理解成链接器在提醒你:“当前代码和内存的摆放方式,已经不再适合这个架构的访问规则了。” 真正的解决办法不是压错误,而是重新把工程摆正。
资料整理:田朋博 / tianpengbo
如果大家在项目中遇到 TASKING 链接错误、LSL 布局或 AURIX 内存放置相关技术问题,欢迎联系他交流。