当前位置: 首页 > 知识库问答 >
问题:

(arm ONE eabi gcc)创建。来自bootloader 2 x固件映像的elf二进制文件

端木朝
2023-03-14

我正在用CLion开发一个STM32F429,并试图从三个。精灵文件创建一个合并的。精灵文件的布局应该是这样的:

  • 引导程序。elf(最大256K,但大小不一)

这使得总数达到100万。

我已经试着转换了。elf文件到。bin(带有arm none eabi objcopy)并创建一个1M。bin文件和我编写的自定义工具。我可以确认一下房间的布局。这是正确的。然后我转换生成的。bin文件返回到。精灵与:

arm-none-eabi-objcopy -I binary -O elf32-little --change-section-address .data=0x08000000 in.bin out.elf

数据段地址更改是为了反映STM32F429中闪存的启动。

当我尝试使用openocd刷新此文件时,失败原因如下:

Error: invalid ELF file, no program headers

有没有办法跳过. elfs-

我知道我可以告诉openocd直接通过指定flash地址来使用生成的. bin文件。但是CLion不会让openocd从其arm嵌入的插件中使用flash. bin文件,只有。精灵文件。

编辑:目前我正在使用这些链接器脚本,改编自ST的官方脚本。其中有相当多的内容。我可能只能使用一个链接器脚本来实现这一点。我可以有以下代码:

extern "C" __attribute__((__section__(".bootloader"))) void runBootloader()
{
    Platform platform;
    DFUBootloader bootloader(platform);
}

extern "C" __attribute__((__section__(".image1"))) void runApplication1()
{
    Platform platform;
    Application application(platform);
}

extern "C" __attribute__((__section__(".image2"))) void runApplication2()
{
    Platform platform;
    Application application(platform);
}

如果这些链接器将这些符号放置在正确的位置,它们使用的符号是否也会最终放置在正确的位置?固件映像必须复制以填满两个固件页面,因此应用程序使用的所有符号也必须复制。

共有1个答案

何松
2023-03-14

看起来像是合并了多个。我描述的elf文件是不可能的,或者至少不是很琐碎。

我已经找到了解决我的问题的方法。虽然CLion无法让openocd闪存。bin文件(其内置的openocd启动命令使用。精灵),但使用以下命令很容易创建一个自定义的Cmake目标来闪存合并的。bin:

openocd -f board/stm32f429discovery.cfg -c "program merged_image.bin exit 0x08000000"
 类似资料:
  • 尝试将numpy矩阵写入二进制文件时,如下所示: 我得到了这个错误: 我能知道怎么解决这个问题吗?非常感谢。

  • 问题内容: 我想构建一个Go 1.9.2二进制文件并在Docker Alpine映像上运行它。我编写的Go代码不会调用任何C代码。它还使用该包。不幸的是,它并没有听起来那么简单,因为Go似乎并非一直都在构建静态二进制文件。当我尝试执行二进制文件时,我经常会收到有关为什么二进制文件未执行的神秘消息。互联网上有很多与此有关的信息,但是大多数最终都导致人们使用试用错误来使二进制文件有效。 到目前为止,我

  • 问题 你想内存映射一个二进制文件到一个可变字节数组中,目的可能是为了随机访问它的内容或者是原地做些修改。 解决方案 使用 mmap 模块来内存映射文件。 下面是一个工具函数,向你演示了如何打开一个文件并以一种便捷方式内存映射这个文件。 import os import mmap def memory_map(filename, access=mmap.ACCESS_WRITE): siz

  • 解析 ELF 文件并创建线程 在之前实现内核线程时,我们只需要为线程指定一个起始位置就够了,因为所有的代码都在操作系统之中。但是现在,我们需要从 ELF 文件中加载用户程序的代码和数据信息,并且映射到内存中。 当然,我们不需要自己实现 ELF 文件解析器,因为有 xmas-elf 这个 crate 替我们实现了 ELF 的解析。 xmas-elf 解析器 tips:如果 IDE 无法对其中的类型进

  • 如何创建一个预Compiled二进制框架,类似于在这个git repo上使用cloud firestore所做的事情:https://github.com/invertase/firestore-ios-sdk-frameworks 谢谢!

  • 我有以下代码: 如何打开这个二进制文件并检查是否确实写入了整数10