如何最小化或消除ARM / Thumb远程调用?

时间:2014-08-29 19:57:04

标签: linker embedded arm firmware thumb

我正在开发一种产品,其中闪存空间(用于固件存储)和内存(用于执行)都非常宝贵。因此,我希望得到的ELF尽可能小,而不会明显牺牲产品性能。代码被编译为ARM和Thumb的混合,基本上使用Thumb模式,当我可以逃脱它。我一直在调整编译器/链接器选项以减小大小(优化空间,删除未使用的函数等)。我注意到的一件事是,我得到了很多(大约180个)生成的远程调用补丁,占用了一些空间。

长话短说,任何人都知道最小化或消除这些补丁的好方法(可能是通过避免大多数/所有远程呼叫)?在我看来,应该有一种方法来重新组织和优化所有内容如何在各自的内存部分中存储/链接的顺序,到目前为止,调用是不必要的或至少是最小化的。

编辑:我不再需要这个问题的答案。事实证明,远程调用在此产品中是不可避免的,因为它们是ITCM和SRAM之间的调用所必需的(不幸的是,它们在地址空间中彼此远离)。感谢您的评论和解答。

1 个答案:

答案 0 :(得分:2)

如果您正在使用RVCT链接器armlink,您可以尝试documentaton for --sort中提到的不同部分排序算法。