Instalar un firmware diferente en Arduino


12

¿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?


2
La mayoría de las nuevas funcionalidades son proporcionadas por bibliotecas y programación. ¿De qué tipo de "más cosas" estás hablando?
TheDoctor

¿Qué dijo TheDoctor, qué quieres decir con más cosas? Además, ¿a qué se refiere con "firmware"? ¿El software / sistema operativo a bordo?
hichris123

¿Debo eliminar la pregunta
JVarhol

@JVarhol Si puedes aclararlo, no, quédatelo. Solo explícanos en qué estás pensando exactamente ...
hichris123

Sé que puedes instalar un nuevo firmware en el chip USB-serie para que pueda emular un teclado
TheDoctor

Respuestas:


7

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:
ingrese la descripción de la imagen aquí

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.


5

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.

Freq vs Vcc

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.


Aparentemente se puede overclockear a 20 mHz
TheDoctor

@TheDoctor: eso no es overclocking. El ATmega328p tiene una potencia de 20 Mhz. Arduino son en realidad underclocked a 16 Mhz.
Connor Wolf

@FakeName sí, quise decir que puedes modificar una placa Arduino para que el resonador nessecary se sintonice a 20 mHz
TheDoctor

Oh, otra nota al margen. En general, puede superar el área de operación segura sin mayores problemas. Tengo varias placas con 16 Mhz con rieles de 3.3V sin problemas. Pueden tener problemas de estabilidad a temperaturas extremas, pero parece funcionar sobre todo bien a temperatura ambiente.
Connor Wolf
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.