Atmel AVR дизассемблер - PullRequest
       87

Atmel AVR дизассемблер

11 голосов
/ 28 февраля 2011

Может кто-нибудь предложить мне какой-нибудь дизассемблер для 8-битных микроконтроллеров Atmel AVR?Для этого есть проекты с открытым исходным кодом?

Спасибо.

Ответы [ 7 ]

12 голосов
/ 08 июня 2012

Вы также можете использовать avr-objdump, инструментальную часть набора инструментов avr-gcc (http://www.nongnu.org/avr-libc/). Пример:

avr-objdump -s -m <avr architecture> .d program.hex > program.dump

, где <avr architecture> находится на http://www.nongnu.org/avr-libc/user-manual/using_tools.html

11 голосов
/ 28 февраля 2011

[plug] IDA Pro поддерживает разборку AVR [/ plug]:

IDA Pro AVR disassembly

Что касается с открытым исходным кодом, пакет AVR GCC включает в себя порт objdump, включая функции разборки.

6 голосов
/ 13 августа 2013

http://www.onlinedisassembler.com/odaweb/

Множество платформ (также AVR), но микрочип (который вам тоже не нужен) отсутствует.

Большой плюс в том, что он основан на сети.

5 голосов
/ 17 марта 2011

Оформить заказ vAVRdisasm .

1 голос
/ 18 февраля 2017

AVRDisassembler - дизассемблер AVR / Arduino с открытым исходным кодом (MIT), написанный на .NET Core (что означает, что он может работать на Windows, Mac, Linux). Помимо записи разборки в стандартный вывод, он также может генерировать дамп JSON (для возможности анализа и анализа).

Отказ от ответственности: я являюсь автором указанной библиотеки.

0 голосов
/ 28 февраля 2018

Я использую avrdisas от Johannes Bauer.Он работает с выгруженной флэш-памятью, а не с файлом .hex или ELF.

Компиляция:

  .include "tn13def.inc"
       ldi     r16,1
       out     ddrb,r16      ; PB0 as output
       sbiw    r24,1         ; slight wait
       brne    PC-1
       sbi     pinb,pinb0    ; toggle
       rjmp    PC-3          ; forever 

создает листинг:

C:000000 e001             ldi     r16,1
C:000001 bb07             out     ddrb,r16      ; PB0 as output
C:000002 9701             sbiw    r24,1         ; slight wait
C:000003 f7f1             brne    PC-1
C:000004 9ab0             sbi     pinb,pinb0    ; toggle
C:000005 cffc             rjmp    PC-3          ; forever

извлечение содержимого флэш-памятис:

$ avrdude -p t13 -P usb -c usbtiny -U flash:r:flash.bin:r

дает: e001 bb07 9701 f7f1 9ab0 cffc

разборка:

$ ./avrdisas -a1 -o1 -s1 flash.bin 
; Disassembly of flash.bin (avr-gcc style)

.text
main:
   0:   01 e0           ldi     r16, 0x01       ; 1
   2:   07 bb           out     0x17, r16       ; 23

; Referenced from offset 0x06 by brne
; Referenced from offset 0x0a by rjmp
Label1:
   4:   01 97           sbiw    r24, 0x01       ; 1
   6:   f1 f7           brne    Label1
   8:   b0 9a           sbi     0x16, 0         ; 0x01 = 1
   a:   fc cf           rjmp    Label1

, и это работает для меня, даже если порядковый номер не соответствует спискуи мне нужно было бы разрешить 0x17 обратно в DDRB и т. д.

0 голосов
/ 14 июня 2016

Что вы хотите разобрать (код или шестнадцатеричный файл)?Если вы программируете с Atmel studio, у него есть инструмент для дизассемблирования, когда вы пишете код.

  1. Запустить проект (если у вас нет инструмента отладки, используйте симулятор, это не имеет смысла);
  2. Затем сделайте паузу;
  3. Чем CTRL + ALT + Dразберу ваш проект.Также сборка записана в файле .lss, в папке отладки вашего проекта.
...