Disassembler Atmel AVR

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

Thanx.

Ответ 1

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

IDA Pro AVR disassembly

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

Ответ 3

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

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

Большой плюс - это веб-интерфейс.

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

Я использую 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

и это работает для меня, даже если endian-ness не соответствует листингу, и мне нужно будет разрешить 0x17 вернуться к DDRB и т.д.