Olá amigos meu nome é Filipe e hoje irei apresentar um amigo antigo o AVRDUDE.
O AVRDUDE é um utilitário para realizar download/upload/manipular a memória FLASH e EEPROM de microcontroladores AVR ou seja será ele que usaremos para gravar nossos programas nos chips.
Usando o seguinte exemplo para gravar o ARDUINO UNO:
avrdude -p m328p -c arduino -P /dev/ttyACM0 -b 115200 -U flash:w:blink.hex
-p: Part number. Nessa flag iremos definir a especificação do microcontrolador a ser gravado que no caso do arduino será um atmega328p.
Uma lista detalhada de dispositivos suportados aqui.
-c programmer-id: Identificação do programador. O arduino usa um bootloader o que facilita a gravação de programas usando uma interface serial comum mas temos outros gravadores bem acessíveis ao publico BR como o USBASP e o pickit2.
No caso do USBASP o comando ficaria bem mais simples:
avrdude -p m328p -c usbasp -U flash:w:blink.hex
-P port: O arduino usa um adaptador usb-serial sendo então necessário especificar qual porta serial será utilizada, no nosso caso a ttyACM0. No windows teríamos como exemplo a COM3 ou COM4 por exemplo. No linux via terminal podemos usar o comando para descobrir que portas seriais temos ativas:
dmesg | grep tty
-b baudrate : especificaremos a velocidade de transmissão ou baudrate. No caso se o bootloader não tiver sido alterado essa opção pode ser esquecida pois já existe um arquivo de configuração para o gravador “arduino”.
-U memtype:op:filename[:format]: Bom aqui é aonde o procedimento fica interessante. O operando -U ira indicar qual operação na memoria o usuário fara no nosso caso iremos gravar o arquivo hexadecimal blink.hex na memoria FLASH então:
memtype = flash (Podemos operar ainda na eeprom, nos fuses e na signature).
op = w (leitura com r, v ira ler a memoria especificada e comparar com um arquivo fornecido pelo user)
filename= blink.hex.
Como dito acima nosso amigo avrdude pode tanto fazer o upload bem como o DOWNLOAD dos dados armazenados na memoria do chip.
Por exemplo um chip no qual gravamos nosso blink.hex usaremos o seguinte comando:
avrdude -p m328p -c arduino -P /dev/ttyACM0 -b 115200 -U flash:r:conteudoFlash.hex:i
Ira copiar uma imagem do conteúdo do chip podendo ser gravada em um novo.
Bom por aqui é só isso amigos. Leiam e complementem seus conhecimentos lendo o manual do avrdude que é bem detalhado e qualquer duvida ou discussão usem os comentários.
Fontes:
man avrdude
http://www.nongnu.org/avrdude/user-manual/avrdude_4.html