Как я могу получить список моих эскизов Arduino на языке ассемблера в Windows?

StackOverflow https://stackoverflow.com/questions/919781

  •  06-09-2019
  •  | 
  •  

Вопрос

Я хотел бы иметь возможность видеть список моих эскизов Arduino на языке ассемблера.Как я могу этого добиться?

Обновить: Я запускаю программное обеспечение Arduino на компьютере с Windows.

Это было полезно?

Решение

Один из способов сделать это - использовать avr-objdump на .elf файл, созданный сборкой.Например, в OS X я могу сделать это:

$ cd ~/arduino-0015/examples/Digital/Blink/applet
$ avr-objdump -d Blink.elf

(Очевидно, что ваш путь в Windows может отличаться.) Это приведет к дизассемблированию кода, часть которого будет выглядеть примерно так:

0000013a <main>:
 13a:   0e 94 3e 01     call    0x27c <init>
 13e:   0e 94 97 00     call    0x12e <setup>
 142:   0e 94 80 00     call    0x100 <loop>
 146:   fd cf           rjmp    .-6             ; 0x142 <main+0x8>

Другие советы

Если вы используете Linux, вы можете следовать это руководство о том, как скомпилировать для Arduino без IDE.

Как только вы сделаете это, вы можете получить список сборок, запустив gcc с флагом -s .

Следующие (hacky) шаги предоставят списки эскизов Arduino на языке ассемблера и связанных библиотек в Windows:

  1. Загрузите (и переименуйте) Пакетные файлы командной строки Arduino Windows в каталог, содержащий ваш эскиз (the .pde файл)
  2. Настройте необходимые переменные среды, как указано на приведенной выше странице, связанной
  3. Добавить -S к тому abuild_gcc_opts переменная в abuild.bat (строка 158)
  4. Беги abuild -r -c <pde_filename>
  5. Ожидайте получения следующих предупреждений и ошибок, которые вы можете игнорировать:

    ... warning: #warning "This file has been moved to <util/delay.h>."

    .\obj\<pde_filename>.cpp.o: file format not recognized: treating as linker script

    .\obj\<pde_filename>.cpp.o:1: syntax error

Списки языков ассемблера можно найти в .o файлы в созданном obj справочник.Например, список самого эскиза находится в obj\<pde_filename>.cpp.o

Флаг -S (не s) также показывает код c.Также известен как смешанный список:

linux:(.arduino/preferences.txt:delete_target_folder=ложь)

$ cd /tmp/buildxxxx.tmp
$ avr-objdump -dS Blink.cpp.elf

int main(void)
{
    init();
 2f4:   8a df           rcall   .-236       ; 0x20a <init>
...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top