Instalando um firmware diferente no Arduino

12

É possível atualizar o firmware em um Arduino para que ele possa fazer mais coisas, como alterar a subvoltagem / supervoltagem para fornecer mais poder de processamento. Para fazer isso, você provavelmente teria que re-flash o próprio chip, então como isso seria realizado?

JVarhol
fonte
2
A maioria das novas funcionalidades é fornecida por bibliotecas e programação. De que tipo de "mais coisas" você está falando?
TheDoctor
O que o TheDoctor disse, o que você quer dizer com mais coisas? Além disso, a que você está se referindo por "firmware"? O software / sistema operacional a bordo?
hichris123
Devo apenas apagar a questão
JVarhol
@JVarhol Se você pode deixar mais claro, não, mantenha-o. Apenas nos explicar o que exatamente você está pensando em ...
hichris123
Eu sei que você pode instalar o novo firmware no chip USB-serial para que ele possa emular um teclado
TheDoctor

Respostas:

7

Para responder ao aspecto de sua pergunta sobre o "firmware" no ATUMega328p MCU usado na maioria das placas Arduino:

Não há firmware no ATmega além do gerenciador de inicialização. Os programas que você escreve estão sendo executados diretamente no hardware.

Existem certas configurações de "fusível" que são definidas com um programador de ISP . No entanto, existem apenas 24 deles (três bytes), e eles se relacionam amplamente à configuração de baixo nível, e não é o que eu acho que você está perguntando:
insira a descrição da imagem aqui

Há também o Bootloader , que é um pequeno programa que fica em um segmento separado da memória do programa do MCU e permite que ele se atualize na inicialização (que é como todos os arduinos são programados). No entanto, ele é executado apenas por um curto período de tempo na inicialização e é completamente removido da memória depois que o MCU passa para o programa principal.

Por fim, existem MCUs auxiliares (ATmega16U2 / 8U2) na maioria das placas arduino usadas como interfaces serial USB, que podem ser atualizadas para se comportarem de maneira diferente (por exemplo, emular um teclado / mouse), mas, novamente, isso não é realmente uma mudança para o processador principal, portanto, se ele conta como "instalar um firmware diferente" depende de como você define o arduino.

Realmente, eu recomendo fortemente a leitura da folha de dados do ATmega328P . Esta é a documentação para o MCU que basicamente forma o "Arduino". Deve abordar o que parece ser conceitos errôneos.

Connor Wolf
fonte
5

Observe o gráfico abaixo, em relação ao seu sub / excesso de tensão no dispositivo para F_CPU diferente, indica o relacionamento. Como resultado, você encontra a maioria dos circuitos do Arduino em 5V e uma freqüência de 16MHz. Embora existam algumas variantes de 3,3V que funcionam a 8MHz.

Freq vs Vcc

No entanto, a biblioteca principal fornecida com o IDE normalmente tem # if específicos para velocidades de F_CPU de 8 e 16 MHz, sem usar uma fórmula na maioria dos lugares.

Portanto, é possível fazer o que você pede. No entanto, você encontrará as limitações da biblioteca principal que afetam. Inclinando a relação custo x benefício, para a própria intenção. E então provavelmente deixaria o Stock IDE e as bibliotecas principais para um método mais makefile.

mpflaga
fonte
Aparentemente, ele pode ser overclock para 20 MHz
TheDoctor
@ TheDoctor - isso não é overclock. O ATmega328p é classificado para 20 Mhz. Arduinos são na verdade underclock para 16 Mhz.
Connor Wolf
@FakeName sim, eu quis dizer que você pode modificar uma placa Arduino para ter o ressonador nessecary para tun a 20 mHz
TheDoctor
Oh, outra nota lateral. Geralmente, você pode exceder a área de operação segura sem grandes problemas. Eu tenho um número de placas rodando 16 Mhz com trilhos de 3.3V sem problemas. Eles podem ter problemas de estabilidade a temperaturas extremas, mas parece funcionar principalmente na temperatura ambiente.
Connor Wolf