Puedo escribir programas para un Arduino, y todo lo que hago es enchufarlo y hacer clic en "cargar". Mi código compilado entra en la memoria del programa de ATMega. ¿Fácil verdad?
Bueno, me gustaría saber qué está pasando 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 escribirlos en el microcontrolador como si fuera una unidad flash o algo así. Sin embargo, sé que esto no es posible a menos que ya esté presente un programa de cargador de arranque especial en el microcontrolador.
Así que ahora estoy confundido. ¿Cómo podría subir programas a un Arduino si no tuviera el gestor de arranque? ¿Cómo programo otros microcontroladores (como un ARM) sin la interfaz fácil de usar de Arduino?
Pregunta adicional relacionada: al leer (y no entender) algunas páginas web, descubrí 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 código nuevo sin que ya se esté ejecutando algún programa en el ARM que interprete los datos JTAG y los escriba en la memoria correcta?
La serie ATmega µC tiene varios medios para programarlo:
JTAG, por el contrario, es un protocolo "estándar" y una definición de interfaz que se puede utilizar con una gran cantidad de chips. La intención original era llenar los flip-flops representando el estado interno de un dispositivo desde el exterior. Es una interfaz de prueba. Hoy en día también se puede utilizar y se utiliza para la programación flash. El software de programación necesita saber todo sobre cómo 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.
Ignacio Vázquez-Abrams
mahkoe
analogsystemsrf
usuario253751