1 votos

¿Cómo puede un ISP programar un AVR a través de SPI si no hay código en el dispositivo?

Estoy tratando de entender cómo un ISP puede escribir código de máquina en la memoria de un microcontrolador.

En el caso de los microcontroladores AVR (como el ATMega), puedes utilizar un programador especial en circuito que "enganchará" el microcontrolador de destino a través de un bus SPI. (Obtengo esta información de este documento )

Lo que me pregunto es lo siguiente: si tuviera un AVR nuevo sin programas anteriores escritos en él, ¿cómo podría "escuchar" el bus SPI? ¿No tiene que haber un programa en ejecución?

3voto

user44635 Puntos 4308

Un AVR nuevo, aunque no tenga código programado en el espacio de usuario, no significa que no tenga capacidad.

Verás que la línea RESET se utiliza como parte del protocolo ISP. Mientras que la línea RESET obviamente hace lo que se espera de la mayor parte del chip, también habilita el mecanismo que maneja el ISP. También delimita claramente la operación "normal" de la operación ISP, estás en una, o en la otra. También notarás que hay un apretón de manos de 'bytes mágicos' para que el programador establezca que este mecanismo está funcionando.

Si este mecanismo adicional hace todo el trabajo para manejar el protocolo y controlar los buses de memoria, o si simplemente cambia una línea de dirección para permitir que la CPU principal ejecute el código ISP desde una ROM (¿suena más sensato?), no importa realmente desde el punto de vista del programador.

0voto

La pregunta igualmente importante, es cómo reprogramar mi AVR cuando mi código de usuario cuelga el chip (poco después del reinicio)... Es bueno tener una característica que funciona sin importar lo que está o no está programado en él.

Como ya se ha mencionado, se trata de un caso de lógica pura, o de algo de lógica y código en una rom utilizada para implementar esta característica. Bastante simple para la lógica pura.

El hecho de que un pin esté etiquetado como reset no significa que todo el diseño tenga que ser reiniciado por esa lógica. Mira el JTAG por ejemplo (en los chips que lo tienen), tiende a tener su propio reset separado del reset del chip primario y es o puede ser un dominio de reset completamente separado del reset del chip primario. El reset es sólo otra entrada que se utiliza como los diseñadores quieren, no hay ninguna razón automática por la que cada bit de lógica tenga que responder a él.

Obviamente hay lógica y quizás algo de código que no está en ese dominio de reinicio (está esencialmente en el dominio de reinicio de encendido, y/o reinicio invertido, cuando sueltas el pin de reinicio esta lógica misma puede entrar en reinicio y cuando afirmas el pin de reinicio esta lógica puede liberarse).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X