【问题标题】:How To Disassemble A atmega328p Elf File如何反汇编 atmega328p 精灵文件
【发布时间】:2021-02-16 12:29:03
【问题描述】:

我试图像这样 disas atmega328p elf 文件。

 avr-objdump -d -Maddr16,data16 target/avr-atmega328p/release/sample.elf                                                                                            (git)-[serial_echo_interrupt]

target/avr-atmega328p/release/sample.elf:     file format elf32-avr


Disassembly of section .text:

00000000 <__vectors>:
   0:   0c 94 34 00     jmp     0x68    ; 0x68 <__ctors_end>
   4:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
   8:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
   c:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>
  10:   0c 94 51 00     jmp     0xa2    ; 0xa2 <__bad_interrupt>

但程序地址不匹配,因为闪存宽度为 16 位。

你知道如何设置 16 位 flash 宽度吗?

【问题讨论】:

    标签: atmega avr-gcc objdump


    【解决方案1】:

    此命令用于反汇编为 ATmega328P 编译的 ELF 或 HEX 文件:

    avr-objdump -D -m avr5 FILENAME
    

    这个命令最棘手的部分是avr5 参数,它指定了芯片的架构。如果您使用的是 ATmega328P 以外的芯片,您可以通过查看 GCC 源代码中的此文件并找到定义您的芯片的行来获得有关指定架构的提示:

    https://github.com/gcc-mirror/gcc/blob/releases%2Fgcc-10.2.0/gcc/config/avr/avr-mcus.def

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2015-12-14
      相关资源
      最近更新 更多