Curso de Arduino – Aula 2 – Arquitetura do Hardware de uma placa

O Firmware

Que a placa Arduino contém um micro controlador, uma CPU completa, vocês já sabem. Vamos abordar agora o que faz essa CPU trabalhar. O Firmware Então o que é um firmware? É simplesmente um software que é carregado dentro da memória do micro-controlador. Técnicamente o firmware é a combinação de uma memória ROM, somente para leitura, e um programa que fica gravado neste tipo de memória. E esse é o caso do micro controlador que a placa Arduino usa. Para entender melhor o firmware, vejamos a tela do software do Arduino.
Programa para piscar um led

Programa para piscar um led

O programa visto acima é um dos programas exemplo que vem junto quando instalamos o software Arduino. Esse programa comanda o micro controlador para piscar um LED conectado no pino 13, led esse que pisca à 0,5Hz ou seja, acende e apaga uma vez a cada dois segundos. O programa é escrito em linguagem C, e não pode ser enviado desta forma para o controlador. Este programa é compilado e então um arquivo .hex é gerado pelo software. Esse arquivo é então o código que o micro controlador efetivamente vai executar. Veja como é esse arquivo:
Código hexa para piscar um led

Código hexa para piscar um led

Como o leitor pode notar, é um arquivo texto, (formato intel hexa) muito difícil de entender. Mas não precisamos nos preocupar com isso, afinal o Arduino deixa isso transparente para você. Para compilar e enviar esse programa para a placa, temos apenas que configurar a IDE com o tipo de arduino que estamos utilizando. Automaticamente a IDE compila e transfere o programa para a placa. Mas como isso funciona? Dentro do micro controlador na placa Arduino existe um programa, préviamente carregado que chama-se BOOTLOADER.

O Bootloader

Não adianta comprar o micro controlador, instalar na placa Arduino e sair usando. Não funciona porque quando a IDE Arduino precisa enviar o hexa gerado para o controlador este deve "conversar" com a IDE, receber o programa e gravá-lo na sua ROM. Para que isso aconteça, um pequeno programa deve existir no controlador. Esse programa chama-se bootloade, e é disponibilizado junto com a IDE. Quando você instala a IDE, esta cria umas pastas no seu sistema de arquivo. Uma dessas pastas contém os bootloaders para todas as placas Arduino oficiais. Veja:
Pasta dos bootloaders para varios tipos de controladores

Pasta dos bootloaders para varios tipos de controladores

Arquivos do bootloader para o controlador ATMega8

Arquivos do bootloader para o controlador ATMega8

O bootloader também é um arquivo hexa, note acima o arquivo .hex Ao comprar uma placa Arduino, o micro controlador que vem nela já possui o bootloader gravado, e você não precisa se preocupar em colocar ele lá. Acredito, pela experiência, que a maior dificuldade dos leitores que decidem construir uma placa Arduino é exatamente colocar o bootloader dentro do controlador. Essa dificuldade acontece porque diferente de uma placa Arduino que vem pronta para usar com a IDE, em uma placa "zerada" o bootloader não está no micro controlador, e desta forma a IDE do Arduino não consegue gravar o programa porque ao efetuar a tentativa de enviar o .hex para a placa, o controlador não está preparado para responder, e a IDE indica um erro e informa que não existe uma placa arduino conectada no computador. Para gravar o bootloader no chip, é necessário um gravador de .hex para a linha ATMEL. Pensando nessa dificuldade, construí um gravador bem simples, que está na minha bancada e virou um artigo separado. Confiram esse artigo aqui. AVR Programmer Finalizamos assim o tópico sobre o hardware do Arduino.