Como posso obter uma linguagem de montagem lista do meu Arduino Sketches no Windows?

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

  •  06-09-2019
  •  | 
  •  

Pergunta

Eu gostaria de ser capaz de ver uma linguagem assembly listando de meus esboços Arduino. Como posso conseguir isso?

Update:. Estou executando o Software Arduino em uma máquina Windows

Foi útil?

Solução

Uma maneira de fazer isso é usar avr-objdump no arquivo .elf criada pela construção. Por exemplo, no OS X eu posso fazer isso:

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

(. Seu caminho no Windows podem ser diferentes, obviamente) Isso produz uma desmontagem do código, parte do qual será algo parecido com isto:

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>

Outras dicas

Se você estiver usando Linux, você pode seguir este tutorial sobre como compilar para o Arduino sem a IDE .

Depois de fazer isso, você pode obter uma lista de montagem, executando gcc com a flag-s.

As seguintes (hacky) passos irá fornecer listagens de montagem linguagem de esboços Arduino e bibliotecas associadas no Windows:

  1. Baixar (e renomeação) os Arduino do Windows para o diretório contendo o seu esboço (o arquivo .pde)
  2. Definir as variáveis ??de ambiente necessárias, conforme especificado no anterior página vinculada
  3. Adicione -S à variável abuild_gcc_opts em abuild.bat (linha 158)
  4. Executar abuild -r -c <pde_filename>
  5. Espera obter os seguintes avisos e erros, que você pode ignorar:

    ... 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

As listagens linguagem assembly pode ser encontrada nos arquivos .o no diretório obj criado. Por exemplo, o listando para o desenho em si é em obj\<pde_filename>.cpp.o

Os -S (não s) flag mostrar o código c como well.Also saber como a lista mista:

linux: (.arduino / preferences.txt: delete_target_folder = false)

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

int main(void)
{
    init();
 2f4:   8a df           rcall   .-236       ; 0x20a <init>
...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top