Haciendo que Arduino UNO sea de solo lectura

4

Tengo un Arduino UNO Rev3 y necesito asegurarme de que una vez programado, no se pueda escribir más información en él. Supongo que esto se puede hacer colocando un pin o dos en el microcontrolador, pero no estoy lo suficientemente familiarizado con los detalles para estar seguro.

    
pregunta Eugene Katz

3 respuestas

5

No soy consciente de una forma en que esto sea posible en última instancia, aunque (especialmente si tienes una versión de chip soldado) puedes hacerlo bastante difícil. Así que concentrémonos en las cosas que podrías hacer para evitar una modificación accidental o casual:

  • puede desactivar la conexión de restablecimiento entre el chip de interfaz USB y el ATMEGA. Esto haría que sea mucho más difícil entrar en el gestor de arranque que se utiliza para descargar nuevos bocetos.

  • en un UNO específicamente, puede volver a flashear la micro interfaz USB para deshabilitarla completamente, o simplemente eliminar el código para manipular la línea de reinicio (si aún la necesita para la comunicación en tiempo de ejecución)

  • puede eliminar el gestor de arranque de ATMEGA; esto significaría que necesitaría un circuito ISP (potencialmente otro Arduino) para cambiar el boceto. En una configuración de producción, podría escribir un boceto que contenga suficiente esquema de programación flash para deshabilitar el cargador de arranque cuando se ejecute por primera vez, lo que significa que podría usar el cargador de arranque de fábrica para obtener su código en el chip, y luego bloquear cualquier actualización adicional esa ruta, aunque conectar a un programador de ISP todavía sería una posibilidad para usted u otros.

  • Además de deshabilitar el gestor de arranque o la entrada en él, puede configurar el bit de fusible para cambiar el pin de reinicio a un GPIO (o ¿está solo en el ATTINY? No lo he verificado). Esto significaría que el ISP ya no sería posible y que se necesitaría un programador de alto voltaje; posiblemente sea necesario trasplantar el chip a un programador.

  • Puede habilitar el fusible de seguridad, impidiendo la lectura de su código, pero AFAIK no evita que alguien limpie el chip para reutilizarlo

  • Podrías cortar físicamente los pines críticos para la ISP y la programación de alto voltaje pero no necesarios para tu aplicación, al ras con el paquete. Esto requeriría que alguien profundice en el paquete para obtener las conexiones para reprogramar ese chip, pero -

Recuerde que nada de lo que haga puede superar la relativa facilidad de cambiar la parte ATMEGA por una nueva, o más simplemente cambiar toda la Arduino por una nueva. (Bueno, supongo que puede enterrar todo el proyecto en una gran masa de compuesto para macetas ...)

    
respondido por el Chris Stratton
1

Puede hacerlo usando los bits de bloqueo, consulte la hoja de datos en la sección de programación de memoria. Probablemente necesitará un programador como AVRISP mkII para hacerlo.

    
respondido por el Kvegaoro
1

Solo quería agregar: Si tienes 2 arduinos, puedes programar uno para que sea un programador en serie para programar el otro. Es decir: entonces puedes hacer los bits de fusible.

Es bastante sencillo

(Habría agregado esto a la respuesta de @Kvedaoro, pero no tengo los puntos de reputación para los comentarios)

    
respondido por el SpiRail

Lea otras preguntas en las etiquetas