首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建嵌入式应用程序固件补丁

构建嵌入式应用程序固件补丁
EN

Stack Overflow用户
提问于 2015-01-29 21:42:12
回答 1查看 707关注 0票数 1

我有一个不会改变的库栈,以及一个只使用这个堆栈的固件。固件将在此过程中改变很多。我不想每次发布整个映像(包括库堆栈),因为内存和资源有限(这是一个嵌入式应用程序,而不是桌面或服务器)。我只想发布应用程序映像,这样就可以自动使用库映像了。我不知道该怎么做。例如,我知道在Windows中,这是由dll处理的,但这是一个嵌入式应用程序,没有操作系统。二进制图像加载到内存中,处理器将执行它。有什么经验/建议吗?

工具链: IAR 8051

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-30 05:02:45

这在很大程度上取决于你的工具链。这是一种可能的高视角方法。

将库编译成可执行映像,将链接器设置为使用闪存空间的特定部分。您可能需要一个假/存根条目函数才能让链接器感到高兴。

完成后,查找库使用的符号的所有地址,并在构建正常程序时指示链接器有关这些符号位置,并且不要指示链接过程在链接时使用中间库对象。还指示链接器将代码放置到可更新的闪存部分。

然后,您将拥有库的映像,以及使用at库构建主程序映像的新版本的能力。

如果您的链接器输出格式是一个未剥离的精灵(在转换为二进制文件以便在闪存上燃烧之前),以及如果您的链接器可以接受一个纯文本文件的指令(如果您使用的是gnu,这两者都是正确的),这可能是脚本。我建议为您的理智编写脚本,除非库中只有很少的外部可见函数和变量。

我确实同意其中的一些评论,除非转移库非常困难,否则您应该构建一个简单的映像,其中包括库,并推动整个工作。您可能会说库现在永远不会改变,但是不可避免地会出现一些需要更改库代码的东西,如果您更改了库,并且不能将符号保持在完全相同的位置,那么您的所有应用程序映像都将无法使用新的库。这是处理兼容软件(固件)更新时的噩梦。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28225164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档