¿Cómo se escriben los programas en un microcontrolador? ¿Qué papel juega JTAG?

0

Puedo escribir programas para un Arduino, y todo lo que hago es enchufarlo y hacer clic en "subir". Mi código compilado entra en la memoria del programa de ATMega. Fácil, ¿verdad?

Bueno, me gustaría saber qué sucede exactamente en general. El microcontrolador tiene algo de memoria, por lo que existe algún método para tomar datos sin procesar de un cable USB y escribir en el microcontrolador como si fuera una unidad flash o algo así. Sin embargo, sé que esto no es posible a menos que un programa especial de cargador de arranque esté ya presente en el microcontrolador.

Así que ahora estoy confundido. ¿Cómo podría cargar programas en un Arduino si no tuviera el cargador de arranque? ¿Cómo programo otros microcontroladores (como un ARM) sin la interfaz fácil de usar de Arduino?

Pregunta relacionada con la bonificación: al leer (y no entender) algunas páginas web, he descubierto que ARM está programado a través de JTAG. ¿Qué está haciendo esto exactamente? El módulo JTAG envía datos al ARM, pero ¿exactamente qué datos envía? ¿Cómo puede el ARM aceptar un nuevo código sin que algún programa ya se esté ejecutando en el ARM que interpreta los datos de JTAG y los escribe en la memoria correcta?

    
pregunta Mahkoe

1 respuesta

3

La serie ATmega µC tiene varios medios para programarla:

  • Autoprogramación. Eso es lo que hace el gestor de arranque. Carga datos por ej. a través de la interfaz UART en la memoria RAM, luego parpadea las páginas de memoria flash que no son del cargador de arranque.
  • Programación paralela. Método tradicional, necesitas una herramienta de programación bastante especial para hacer eso. Solo se requiere cuando deshabilitó la programación ISP porque quería usar el pin RESET como pin GPIO. Requiere quitar el µC del circuito.
  • programación ISP. Ese es el método más simple, requiere una herramienta simple que usted pueda construir fácilmente, y algunos programas de programación gratuitos (avrdude). A veces se requiere eliminar el µC del circuito, pero los diseñadores pueden tener cuidado al asignar GPIO para evitar eso.
  • DebugWire. ISP en los esteroides. Utiliza solo el pin RESET, necesita una herramienta bastante compleja y un software propietario hasta hace poco. Casi nunca es necesario quitar el µC del circuito porque el pin RESET generalmente es solo eso, RESET.

JTAG, por el contrario, es un protocolo "estándar" y una definición de interfaz que se puede utilizar con un gran número de chips. La intención original era rellenar los flip-flops que representaban el estado interno de un dispositivo desde el exterior. Es una interfaz de prueba. Hoy en día puede ser y se utiliza para la programación de flash, también. El software de programación necesita saber cada cosa como programar el chip específico, no hay un estándar para eso.

Además de la autoprogramación, todos estos métodos de programación están integrados en los chips. Las primeras versiones de JTAG no han sido más que un registro de desplazamiento de 1000 etapas.

    
respondido por el Janka

Lea otras preguntas en las etiquetas