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?
arduino-uno
firmware
JVarhol
la source
la source
Réponses:
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:
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.
la source
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.
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.
la source