【发布时间】:2019-12-10 12:05:45
【问题描述】:
我想从静态 C 库构建嵌入式软件。我的主要问题是软件链接,但由于最终产品的映射文件中缺少与中断相关的功能,因此无法运行。 (至少,这是我的假设)
我已经阅读了 IAR 的链接器手册,尝试了很多设置,但都没有成功。
你可以在下面找到一个 .map 文件比较,左边是应该的,右边是我从库中构建的结果。
我的中断向量表:
如果重要的话,目标处理器是 ARM。
提前致谢!
【问题讨论】:
-
“尝试了很多设置,但都没有成功。” 请列出您尝试过的那些应该有帮助但没有帮助的东西。
-
如果您不引用某些内容,链接器将不会将其拉入。我的期望是您实际上并没有在代码中的任何地方引用您的中断函数。
-
@user694733 - 在 2 种静态库生成模式之间切换(静态库 C 和静态库 C (IAR) - 在自动运行时库选择之间切换 - 添加函数以保持符号列表 - 降低优化级别(我可以'不关闭,因为它不适合目标)
-
请显示您项目的向量表。这是您指定中断处理程序的地方。即使它们是由库实现的,您仍然必须将它们映射到内存中的正确位置。
-
请注意,您可能必须在链接器脚本或链接器中包含 vector table(不仅是函数)的 keep 指令设置以确保当 RussSchultz 提到的其他代码未引用符号时不会删除符号。
标签: c static linker embedded iar