gpt4 book ai didi

file - Cortex-M3 闪存限制

转载 作者:行者123 更新时间:2023-12-02 04:31:48 26 4
gpt4 key购买 nike

我有一个程序可以生成大小约为 800KB 的 .axf 文件,并且我的微 Controller 似乎可以完美地执行该代码。但我想知道为什么可以将大于 800KB 的 .axf 文件存储到指定内部闪存为 256KB 的 Cortex-M3 微 Controller 中。这对我来说没有多大意义。 .axf 文件与微 Controller 内部闪存有关,对吧?如果是这样,为什么我的程序可以工作?

最佳答案

axf、elf、coff、exe、intel hex (ihex)、motorola s record (srec) 和一大堆其他“二进制”文件格式包含二进制文件和其他内容,例如加载代码的位置。我们很少使用程序的简单二进制图像。在使用原始二进制图像的微 Controller 领域仍有大量工作要做。但越来越多的闪存程序员正在接受这些其他文件格式(英特尔十六进制和 s 记录是已经支持很长时间的格式)。您的工具链可能具有可以在 axf 到 ihex 格式之间转换的工具,或者您感兴趣的格式是 ihex 到原始二进制文件。如果它是一个 elf 文件并且您使用的是 gnu 工具那么

arm-none-eabi-objcopy file.axf -O binary file.bin

现在这可能会对您产生适得其反的效果,但如果确实如此,您可能没有有效的程序。例如,如果您的闪存位于 0x10000000 并且您的程序比闪存少,但您的 ram 位于 0x80000000 并且您有 N 字节的 .data 并且链接器脚本没有考虑将其放置在闪存中(因此您的引导代码可以复制它),那么您最终可能会在 .bin 文件中进行填充,以使所有内容都相对正确的位置,因此在闪存启动后,.data 的 N 个字节需要为 0x80000000-0x10000000 字节,因此您的 .bin 文件将几乎是 2千兆字节。用于小型微 Controller 的大型二进制文件。不使用原始二进制图像而是使用将二进制 blob 与有关这些二进制 blob 去向的额外信息混合的文件格式的另一个原因...我有 N 字节的 .text,从 0x10000000 开始 我有 Y 字节的 .data从 0x80000000 开始等等...

关于file - Cortex-M3 闪存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885180/

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