Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

2024-01-12

我正在开发一个项目,其中涉及解析arm elf 文件并从中提取部分。

显然,elf 文件中有很多部分没有加载到闪存中,但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中?

以arm elf文件的以下readelf为例:

节标题: [Nr] 名称 类型 地址 关闭大小 ES Flg Lk Inf Al

[0] 空 00000000 000000 000000 00 0 0 0

[1] .isr_vector PROGBITS 08020000 010000 0001f8 00 WA 0 0 4

[2].firmware_header_PROGBITS 080201f8 0101f8 000004 00 WA 0 0 4

[3] .text PROGBITS 08020200 010200 01e11c 00 AX 0 0 64

[4] .ARM.extab PROGBITS 0803e31c 033a68 000000 00 W 0 0 1

[5] .exidx ARM_EXIDX 0803e31c 02e31c 000008 00 AL 3 0 4

[6].ARM.attributes ARM_ATTRIBUTES 0803e324 033a68 000030 00 0 0 1

[7].init_array INIT_ARRAY 0803e324 02e324 000008 04 WA 0 0 4

[8] .fini_array FINI_ARRAY 0803e32c 02e32c 000004 04 WA 0 0 4

[ 9] .firmware_header PROGBITS 0803e330 02e330 000008 00 WA 0 0 4

[10] .data PROGBITS 20000000 030000 0009c8 00 WA 0 0 8

[11].RxDecripSection PROGBITS 200009c8 0309c8 000080 00 WA 0 0 4

[12].RxarraySection PROGBITS 20000a48 030a48 0017d0 00 WA 0 0 4

[13].TxDescriptSection PROGBITS 20002218 032218 000080 00 WA 0 0 4

[14].TxarraySection PROGBITS 20002298 032298 0017d0 00 WA 0 0 4

[15] .bss 诺比特 20003a68 033a68 045bc0 00 WA 0 0 8

[16] .heap PROGBITS 20049628 033a98 000000 00 W 0 0 1

[17] .reserved_for_sta PROGBITS 20049628 033a98 000000 00 W 0 0 1

[18] .battery_backed_s NOBITS 40024000 034000 00000c 00 WA 0 0 4

[19] .comment PROGBITS 00000000 033a98 000075 01 MS 0 0 1

[20] .debug_frame PROGBITS 00000000 033b10 001404 00 0 0 4

[21] .stab PROGBITS 00000000 034f14 000084 0c 22 0 4

[22] .stabstr STRTAB 00000000 034f98 000117 00 0 0 1

[23].symtab SYMTAB 00000000 0350b0 009010 10 24 1646 4

[24] .strtab STRTAB 00000000 03e0c0 003dc8 00 0 0 1

[25] .shstrtab STRTAB 00000000 041e88 000132 00 0 0 1

现在,显然其中相当多的部分(例如 .TxarraySection)没有加载到闪存中。然而,该节类型是 PROGBITS,并且它有一个可写和已分配的标志。这与 isr_vector 没有什么不同,后者已加载但具有相同的类型和标志。我在这里缺少什么?我应该查看程序头吗?


复制到二进制文件的节是那些大小非零、包含 SHF_ALLOC 标志、类型不等于 NOBITS 的节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中? 的相关文章

随机推荐

  • 等待进程结束

    您好 我必须编写必须打开一些系统属性的程序 例如 Process sound new Process sound StartInfo FileName mmsys cpl sound Start Place 1 Process device
  • numpy:沿新轴扩展数组?

    当然一定有办法做到这一点 我无法解决 我有一个 9 4 数组 我想沿第三轴重复它 4096 次 所以它变得简单 9 4 4096 9 4 数组中的每个值简单地重复 4096 次沿着新的轴线 如果我可疑的 3D 图有意义 对角线是 z 轴 4
  • 雅可比坐标系中的椭圆曲线加法

    我尝试在素数场上的椭圆曲线上添加两个点 将这些点从仿射 仿射坐标转换 但无法获得正确的结果 我正在测试的曲线有 a 0 任何人都可以看到出了什么问题吗 From Affine BigInteger X1 P x BigInteger Y1
  • SpringBoot应用程序发布并读取ActiveMQ主题

    我有两个应该从一个主题中读取的接收器 但只有一个随机接收者收到消息 就像它实际上是从队列而不是主题中读取的一样 我读了this https stackoverflow com questions 40144561 how to listen
  • 将图框与 PyCharm 结合使用

    我花了将近两天的时间在互联网上滚动 但无法解决这个问题 我正在尝试安装图形框架包 https spark packages org package graphframes graphframes 版本 0 2 0 spark2 0 s 2
  • Android 设备与本地主机服务器的连接[重复]

    这个问题在这里已经有答案了 我是安卓新手 我正在开发一个使用 MySQL 的应用程序 该应用程序在模拟器中运行良好 但现在我需要在 Android 设备中运行该应用程序 我能做些什么 正如第一条评论中所述 您应该检查文件 AndroidMa
  • jQuery:如何使用 live() 捕获按键

    我需要捕获某些动态输入上的选项卡按键事件 但使用按键事件的正常语法似乎无法捕获按键代码 input live keypress function e if e which 9 alert Tab pressed 当我在 firebug 中通
  • 在shell脚本中创建重复字符的字符串[重复]

    这个问题在这里已经有答案了 我需要生成一串点 字符 作为变量 即 在我的 Bash 脚本中 用于输入15我需要生成这个长度为 15 的字符串 我需要以不同的方式这样做 我尝试使用它作为基础 来自 Unix com http www unix
  • 如何限制EditText输入内容

    我正在尝试创建一个简单的计算器 它提供 EditText 供用户输入数字 允许输入的内容应该是 1 2 3 4 5 6 7 8 9 0 我知道可以使用以下代码来限制输入内容 android digits 1234567890 android
  • SQL Server 使用 union all 和分页

    当我们使用 union all 从两个表获取结果时 如何应用分页 下面是这里的代码 我在已用于分页的 row num 列中获取重复值 WITH resultSetCTE AS SELECT ROW NUMBER OVER ORDER BY
  • 动态更改 IOS 应用程序的自定义 URL 方案

    有没有办法在运行时动态更改 ios 应用程序的自定义 URL 方案 我只能找到有关如何静态定义自定义方案的信息 即 自定义方案是在配置文件中预定义的 我想知道这是否可以在运行时动态完成 不 您不能动态更改自定义 url 自定义 url 方案
  • 指定 Winhttp 必须使用哪个网卡/连接

    我有一个 C 应用程序 它利用 Winhttp 发出 Web 请求 有没有办法指定 WinHTTP 必须使用哪个网卡进行连接 WinHTTP 或 WinInet 没有公开可用的选项来执行接口关联 它似乎在 System Net 中通过请求的
  • JAX-RS 和长轮询

    我正在尝试将长轮询与 JAX RS 泽西实现 一起使用 但它无法按我的预期工作 也许我误解了什么 我将不胜感激任何建议 请注意 出于安全原因 不可以选择使用反向连接 例如 Atmosphere Comet 等 并不是说我目前正在使用 Tom
  • SonataAdmin 子管理路由在调试中可见但未找到

    php bin console debug router grep postboxmessage pt RG admin mea postbox postboxmessage list ANY ANY ANY admin mea postb
  • MyBatis SelectList 输出 CopyOnWriteArrayList

    请耐心解答新手问题 因为我正在尝试同时学习 MyBatis 和 java 我有一个应用程序需要使用线程安全变量 根据一些研究和我对如何使用应用程序的想法 我决定使用 CopyOnWriteArrayList 而不是 Vector 当我从 m
  • Matlab 将字符串“aaa”转换为[“a”,“a”,“a”]数组

    所以我在 Matlab 中工作 并且在尝试理解字符串在 Matlab 中如何工作时遇到了一个真正的问题 基本上我正在尝试将字符串加载到其二进制版本的双精度数组中 所以基本上我想加载 a 并获取 0 1 1 0 0 0 0 1 下面的内容将字
  • 多对多关系过滤器

    我需要使用与另一个表具有多对多关系的类别表来过滤查询 是否可以使用多对多关系过滤查询 Table res partner有many2many字段category id与表有关的res partner category res partner
  • C99 宏中的循环构造

    我想生成一个具有任意逻辑的数组初始值设定项 不幸的是需要一些循环 define RANDOM ARRAY n double array RANDOM ARRAY 10 假设上面的代码生成一个 10 元素数组的初始值设定项 是否可以在 C99
  • Scrapy:如何捕获下载错误并尝试重新下载

    在我的爬行过程中 一些页面由于意外重定向而失败并且没有返回响应 如何捕获此类错误并使用原始 url 而不是重定向的 url 重新安排请求 在我问这里之前 我用谷歌做了很多搜索 看起来有两种方法可以解决这个问题 一种是在下载中间件中捕获异常
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade