¿Es posible actualizar el firmware en un Arduino para que pueda hacer más cosas, como cambiar la subvolución / sobrevoltaje para proporcionar más potencia de procesamiento? Para hacer esto, lo más probable es que vuelva a flashear el chip, entonces, ¿cómo se lograría?
arduino-uno
firmware
JVarhol
fuente
fuente
Respuestas:
Para responder al aspecto de su pregunta sobre el "firmware" en el MCU ATmega328p utilizado en la mayoría de las placas Arduino:
No hay firmware en el ATmega en absoluto aparte del gestor de arranque. Los programas que escribe se ejecutan directamente en el hardware.
Hay ciertas configuraciones de "fusible" que se establecen con un programador ISP . Sin embargo, solo hay 24 de ellos (tres bytes), y se relacionan en gran medida con la configuración de bajo nivel, y no son lo que creo que esté preguntando:
También está el Bootloader , que es un pequeño programa que se encuentra en un segmento separado de la memoria de programa de la MCU y le permite actualizarse al inicio (que es como se programan todos los arduinos). Sin embargo, solo se ejecuta durante un corto período de tiempo al inicio y se elimina por completo de la memoria después de que la MCU haya saltado al programa principal.
Por último, hay MCU auxiliares (ATmega16U2 / 8U2) en la mayoría de las placas arduino que se utilizan como interfaces serie USB, que se pueden actualizar para que se comporten de manera diferente (por ejemplo, emular un teclado / mouse), pero de nuevo, esto no es realmente un cambio al procesador central, por lo que si cuenta como "instalar un firmware diferente" depende de cómo defina el arduino.
Realmente, recomiendo leer la hoja de datos ATmega328P . Esta es la documentación para el MCU que básicamente forma el "Arduino". Debe abordar lo que parecen ser conceptos erróneos.
fuente
Tenga en cuenta que la tabla a continuación, con respecto a su sub / sobrevoltaje del dispositivo para diferentes F_CPU, indica la relación. Como resultado, la mayoría de los Arduino se ejecutan a 5V y una frecuencia de reloj de 16MHz. Si bien hay algunas variantes de 3.3V que se ejecutan a 8MHz.
Sin embargo, la biblioteca principal provista con el IDE generalmente tiene # if's específicos para velocidades F_CPU de 8 y 16 MHz, sin usar una fórmula en la mayoría de los lugares.
Por lo tanto, es posible hacer lo que pides. Sin embargo, encontrará que las limitaciones de la biblioteca principal afectan. Inclinando la relación costo / beneficio, a la de la intención misma. Y luego, probablemente, uno dejaría el IDE de Stock y las bibliotecas centrales a un método más makefile.
fuente