Upload de um programa em assembly para o Arduíno
Fiz um código para o processador Atmel328p e não achei nenhum conteúdo de qualidade em português de como realizar o upload para o processador usado no arduíno, portanto escrevi um simples script em bash que resolveu o problema.
Para fazer manualmente, foi utilizado as ferramentas avra e avrdude, pois não conseguia executar os programas proprietários da Atmel por algum motivo (máquina virtual do windows). Então decidi fazer tudo na mão!
Em um arquivo texto, criei o seguinte código que faz um led piscar no meu arduíno com o 328p:
Depois que fizemos esse código simples, podemos transformar ele usando o avrdude e aí teremos o nosso .hex, que poderemos fazer o upload do código para o atmel no nosso arduíno.
Em distribuições baseadas em Debian, podemos instalar usando o apt:
Depois da instalação você pode criar um arquivo com os comandos abaixo, onde o avra é o assembler que vamos utilizar e o avrdude faz o upload do nosso código, no caso estou usando um chip da atmel328p e para especificar isso pro avrdude é a opção -p, recomendo o manual do avra e do avrdude.
O que este código acima faz? Basicamente o $1 é uma variável ambiente, onde temos uma fila, no caso da primeira linha o $0 é a string avra, o $2 é -fI e o $3 é o $1, porém, quando executamos o script usando o “./script.sh arquivo.asm” por exemplo, é criada uma nova fila e a $1 nesse caso é o arquivo.asm, que será transformado em binário. Se quiser saber mais sobre shell script, recomendo o livro Shell Script Profissional
Após de salvar o arquivo, dê as permissões para que seja executado com os comandos e em seguida execute:
Observação: Veja o endereço do seu arduíno usando o Arduíno IDE, no meu caso era /dev/ttyUSB0, mas o seu pode ser diferente!