gpt4 book ai didi

embedded - 链接描述文件是否总是确定代码放置在什么地址

转载 作者:行者123 更新时间:2023-12-05 02:12:19 27 4
gpt4 key购买 nike

我大部分时间都在使用 Atmel Studio 等工具和 IDE 开发微 Controller ,并抽象出幕后发生的事情。

假设在这种情况下,我们直接从闪存执行代码,这在嵌入式系统中可能是这种情况。

当我们开发应用程序并使用芯片供应商提供的工具将其闪存到微 Controller 时,加载器/闪存器是否决定闪存中的物理地址?

我知道链接器脚本定义了内存偏移量,即不同部分(例如 .data 和 .txt)应该放置的位置,所以这实际上最终决定了 mcu 闪存中的什么地址应该放在什么地方?

现在假设我发现闪存的一部分根本没有使用,我想把其他东西放在那里(甚至是另一个应用程序),我是修改链接器脚本,创建一个新的,还是我该如何编写到这个特定位置?我还没有完全掌握这一点。

最佳答案

你的想法大体上是正确的。链接描述文件只不过是一个文件,它带有专门的语言,可以传达有关内存以及它们应该如何使用的某些信息,它决定了程序在内存中的布局。一些链接器也会通过命令行选项接受此类内存规范。

关于您的具体问题,是的,您可以通过修改第二个固件的链接描述文件来编写另一个占用不同内存地址(与第一个固件地址不同)的固件,特别是程序镜像的起始地址。这当然没有说明这两个固件将如何运行或通信。这些是不同的问题。您还需要知道 MCU 的闪存可删除页面边界,以便您可以将第二个图像放在不同的可删除页面边界中。

在某些固件下载器/编程器中,您还可以指定与固件镜像中指定的不同的起始偏移量。这与链接描述文件进程是分开的。这有几个用途。例如,您的固件可能构建为从 SRAM 而不是直接从闪存运行。因此在固件下载时,需要将其移动到闪存位置,而在运行时,将使用某种机制将代码从闪存复制到程序实际运行的 SRAM 中。还有其他场景。

关于embedded - 链接描述文件是否总是确定代码放置在什么地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com