Installer un firmware différent sur Arduino

12

Est-il possible de mettre à jour le firmware sur un Arduino afin qu'il puisse faire plus de choses comme changer la sous-tension / surtension afin de fournir plus de puissance de traitement. Pour ce faire, vous devrez probablement re-flasher la puce elle-même, alors comment cela pourrait-il être accompli?

JVarhol
la source
2
La plupart des nouvelles fonctionnalités sont fournies par les bibliothèques et la programmation. De quel genre de "plus de choses" parlez-vous?
TheDoctor
Qu'est-ce que TheDoctor a dit, qu'entendez-vous par plus de choses? De plus, à quoi faites-vous référence par «firmware»? Le logiciel / OS embarqué?
hichris123
Dois-je simplement supprimer la question
JVarhol
@JVarhol Si vous pouvez le rendre plus clair, non, gardez-le. Expliquez-nous à quoi vous pensez exactement ...
hichris123
Je sais que vous pouvez installer un nouveau firmware sur la puce série USB afin qu'il puisse émuler un clavier
TheDoctor

Réponses:

7

Pour répondre à l'aspect de votre question concernant le "firmware" sur le MCU ATmega328p utilisé dans la plupart des cartes Arduino:

Il n'y a aucun micrologiciel sur l'ATmega à part le chargeur de démarrage. Les programmes que vous écrivez s'exécutent directement sur le matériel.

Il existe certains paramètres de «fusible» qui sont définis avec un programmeur FAI . Cependant, il n'y en a que 24 (trois octets), et ils concernent en grande partie la configuration de bas niveau, et ce n'est pas ce que je pense que vous demandez:
entrez la description de l'image ici

Il y a aussi le Bootloader , qui est un petit programme qui se trouve dans un segment séparé de la mémoire de programme du MCU et lui permet de se mettre à jour au démarrage (c'est ainsi que tous les Arduinos sont programmés). Cependant, il ne s'exécute que pendant une courte période au démarrage et est complètement supprimé de la mémoire après que le MCU est passé au programme principal.

Enfin, il y a des MCU auxiliaires (ATmega16U2 / 8U2) sur la plupart des cartes Arduino qui sont utilisées comme interfaces série USB, qui peuvent être mises à jour pour se comporter différemment (par exemple émuler un clavier / souris), mais encore une fois, ce n'est pas vraiment un changement au processeur principal, donc si cela compte comme "l'installation d'un firmware différent" dépend de la façon dont vous définissez l'arduino.

Vraiment, je recommanderais fortement de lire la fiche technique ATmega328P . Il s'agit de la documentation du MCU qui constitue fondamentalement l '"Arduino". Il devrait aborder ce qui semble être des idées fausses.

Connor Wolf
la source
5

Notez le tableau ci-dessous, en ce qui concerne votre sous / surtension de l'appareil pour différents F_CPU, indique la relation. En conséquence, vous trouvez que la plupart des Arduino fonctionnent à 5 V et à une fréquence d'horloge de 16 MHz. Bien qu'il existe des variantes de 3,3 V qui fonctionnent à 8 MHz.

Freq vs Vcc

Cependant, la bibliothèque principale fournie avec l'EDI a généralement des # if spécifiques pour les vitesses F_CPU 8 et 16 MHz, n'utilisant pas de formule dans la plupart des endroits.

Il est donc possible de faire ce que vous demandez. Cependant, vous trouverez les limitations de la bibliothèque principale affectant. Faire basculer le rapport coût / avantage à celui de l'intention même. Et puis, on quitterait probablement l'EDI Stock et les bibliothèques de base pour une méthode plus makefile.

mpflaga
la source
Apparemment, il peut être overclocké à 20
MHz
@TheDoctor - ce n'est pas l'overclocking. L'ATmega328p est évalué à 20 Mhz. Arduinos sont en fait underclocké à 16 Mhz.
Connor Wolf
@FakeName oui, je voulais dire que vous pouvez modifier une carte Arduino pour que le résonateur nessecary soit
réglé
Oh, une autre note secondaire. Vous pouvez généralement dépasser la zone d'exploitation sûre sans problèmes majeurs . J'ai un certain nombre de cartes fonctionnant à 16 Mhz avec des rails 3,3 V sans problèmes. Ils peuvent avoir des problèmes de stabilité à des températures extrêmes, mais cela semble fonctionner généralement bien à température ambiante.
Connor Wolf