Assembly 如何解决“问题”;[Lp002]:IAR ARM工具重新定位失败?

Assembly 如何解决“问题”;[Lp002]:IAR ARM工具重新定位失败?,assembly,embedded,linker,arm,iar,Assembly,Embedded,Linker,Arm,Iar,我在assembler中为ARM创建了一个小模块,与我的裸机嵌入式应用程序链接在一起。有时,当我重建应用程序时,会出现“错误[Lp002]:重新定位失败:值超出范围或非法”。更令人费解的是,我在注释了C模块中的一些代码后出现了错误 IAR手册中关于“重新排序节或代码”的内容含糊不清。但看看编译器从my.c文件生成的汇编文件,我发现它们的节声明和我的节声明没有区别。实际上,我开始编写代码时,先用C语言将代码存根,然后接管汇编文件。每当我遇到一些神秘的链接器/编译器错误时,我都会重新生成所有代码。大

我在assembler中为ARM创建了一个小模块,与我的裸机嵌入式应用程序链接在一起。有时,当我重建应用程序时,会出现“错误[Lp002]:重新定位失败:值超出范围或非法”。更令人费解的是,我在注释了C模块中的一些代码后出现了错误


IAR手册中关于“重新排序节或代码”的内容含糊不清。但看看编译器从my.c文件生成的汇编文件,我发现它们的节声明和我的节声明没有区别。实际上,我开始编写代码时,先用C语言将代码存根,然后接管汇编文件。

每当我遇到一些神秘的链接器/编译器错误时,我都会重新生成所有代码。大约有一半的时间是它修复的。我的猜测是一些模块应该被重新编译,但是没有


祝你好运。

每当我遇到一些神秘的链接器/编译器错误时,我都会重新构建所有。大约有一半的时间是它修复的。我的猜测是一些模块应该被重新编译,但是没有


祝你好运。

我找到了问题的原因,以及如何实施可接受的解决方法。在我的汇编程序源代码中,我有一个数据段和一个代码段,链接器把它们放得太远了。现在,我已经将变量移到了代码部分(它被放在RAM中,因为在我写入内部闪存时,它需要在中断上下文中运行),现在我让它正确链接


这就是剩下的问题:如何告诉链接器将某个部分彼此靠近?

我发现了问题的原因,以及如何实施可接受的解决方法。在我的汇编程序源代码中,我有一个数据段和一个代码段,链接器把它们放得太远了。现在,我已经将变量移到了代码部分(它被放在RAM中,因为在我写入内部闪存时,它需要在中断上下文中运行),现在我让它正确链接


剩下的问题是:如何告诉链接器将某个部分彼此靠近?

查看编译器文档。通常,会有一节介绍链接器命令文件,这些文件正是您要查找的内容。

查看编译器文档。通常,会有一个关于链接器命令文件的部分,这些文件正是您要查找的内容。

是否有其他错误信息?IAR文件表明,它应该提供一组“种类”、“位置”和“目的地”信息。是否有其他错误信息?IAR文件规定,它应提供一套“种类”、“位置”和“目的地”信息。