Como depurar um Arduino Uno com gdb em um PC Linux?

10

Como depurar (etapa única do código fonte) um Arduino Uno com gdb em um PC Linux? Observe que eu não gosto de usar o AVR Studio no wine ou no VirtualBox.

Pergunta 1: Conexão física

Como e o que eu conecto à placa Uno? Meu palpite é que, como a placa Uno é preenchida com um ATmega328, o código-fonte de etapa única deve estar disponível? Também acho que posso usar um AVR JTAGICE mkII ou um AVR Dragon sobre o cabeçalho do ICSP?

Pergunta 2: servidor GDB

Então notei que existem alguns projetos como o AVaRICE que parecem fornecer uma função jtag para gdb, mas pode haver outros projetos?

Pergunta 3: Onde está o elfo?

E se eu colocá-lo em funcionamento, onde o IDE do Arduino oculta a saída gerada como o arquivo elf com símbolos de depuração (deve haver um)? Ou preciso gerar um Makefile clássico que use apenas as bibliotecas do Ardino?

Tentei encontrar algumas informações sobre o que / como usar, mas só encontrei pistas que me diziam o que eu poderia fazer. Alguém pode me empurrar na direção certa?

Johan
fonte

Respostas:

3

Você pode encontrar os artefatos do compilador mantendo pressionada a tecla Shift ao clicar no botão de compilação na versão mais antiga do IDE (leia <1.0). Nas versões mais recentes (leia> = 1.0), há uma opção na caixa de diálogo de preferências para exibir resultados detalhados durante a compilação (veja a captura de tela). Na saída detalhada, a pasta onde todas as saídas do compilador são impressas (repetidamente) no console. Isso deve ajudá-lo a começar pelo menos.

captura de tela arduino mostra saída detalhada durante a compilação

Em uma nota lateral, houve todo tipo de conversa sobre esse assunto na lista de desenvolvedores do Arduino no início de junho de 2012 e alguém postou um anúncio na lista de desenvolvedores do Arduino sobre uma maneira aprimorada / integrada de depuração do GDB para o Arduino, mas não investiguei muito mais longe. Eu acho que o projeto se chama VisualMicro (?). Parece que ele foi criado como um plug-in do Visual Studio; portanto, pode não ser útil para você em um ambiente linux, e está na versão beta, mas deixarei você decidir.

vicatcu
fonte
Eu ativei o "Ativar saída detalhada durante a compilação" e eles usam algo como /tmp/build3652385594823436592.tmp/ como dir de construção, também o elf foi construído com o sinalizador -g para que ele contenha os símbolos de depuração. Isso significa que encontrei os artefatos de construção, agora só preciso fazer com que a jtag funcione.
Johan
3

O simulador de processador Simavr AVR agora oferece um bom servidor GDB para depuração de AVR firmvare, incluindo o Arduino. Você pode usá-lo sozinho (requer que você escreva um aplicativo de console pequeno para sua configuração de hardware específica) ou de dentro do ambiente da interface gráfica do usuário da Simutron , onde é possível definir sua configuração de hardware por meio de captura esquemática.

Nota: com essas ferramentas, você não tem uma conexão física, pois todo o hardware é simulado.

aerodeslizador
fonte
2

Isso é respondido em um artigo de jornal linux mencionado em uma pergunta semelhante: Jtag depurando o AVR .

Basicamente, usando avr-gdb e simulavr em conjunto, você pode executar o software em uma variedade de microcontroladores AVR por meio do simulador, enquanto usa o GDB para seguir e observar o código em execução.

Espero que isto ajude!

slurms
fonte