¿Por qué necesitamos programadores de hardware?

20

Utilizo un Boarduino y un panel de pan de 30 filas para programar mi ATtiny. Cargo un boceto no demasiado complicado llamado ArduinoISP (incluido por defecto ahora en el IDE de Arduino), y de repente tengo un programador. Atmel vende un programador agradable por entre $ 30 y $ 40, y hay muchos kits para haciendo los más baratos.

Me sentí muy feliz una vez que conseguí a mi programador que trabajaba e hice que el pequeño parpadee algunos leds. Sin embargo, ahora mi pobre boarduino está atascado en tareas de programador.

Por lo que puedo decir, este programador mantiene presionado el botón de reinicio y luego transmite y recibe en los pines MOSI y MISO. Creo que el SCK no está en uso o al menos no es necesario. (SCK es necesario de acuerdo con la hoja de datos de ATtiny, mi programador no funciona sin él y no puedo encontrar el lugar que pensé Leí que no era necesario.)

¿Por qué necesito un programador de hardware para transmitir en serie? Quiero decir, supongamos que estoy dispuesto a mantener presionado el botón de reinicio con el dedo en lugar de usar un IC. Todo lo que queda es enviar y recibir en serie, así que todo lo que necesito son tres cables GND, RXD y TXD. Diablos, si tengo la línea "DTR" o lo que sea, incluso puedes mantener presionado el botón de reinicio con el cable serial.

  

¿Por qué hay todas estas soluciones de hardware que también requieren software sofisticado (como AVRdude, AVR studio, o lo que sea)?

Quiero decir que podría entender un pequeño cable USB que presentaba al microcontrolador como un dispositivo de almacenamiento masivo y le permitía arrastrar archivos binarios para la programación (como este tablero de desarrollo ARM ). Solo hardware, utilizando controladores de software estándar.

También podría entender una solución de software único (módulo para conectar cables desde el USB al chip, usando algo como el chip FTDI para simplificar lo que pasa por los cables). Todo el protocolo de programación sofisticado sería manejado por el software en la computadora, y el hardware sería solo algunos cables.

¿Por qué tenemos ambos software y hardware (complicado) involucrados? Quiero decir, por lo que puedo decir, programar microcontroladores es bastante fácil, pero cuando estaba empezando a hacer esto, estaba realmente preocupado por cómo iba a comprar un chip de mouser o digikey sin tener que pagarle a un gurú para que programara un cargador de arranque. para mi.

Estoy seguro de que hay una buena razón (no es que haya escrito el software o haya comenzado a fabricar el programador USB de arrastrar y soltar), pero como recién llegado, no tengo idea de qué es.

    
pregunta Jack Schmidt

4 respuestas

17

Tienes razón, programar los AVR es bastante fácil. Es solo un protocolo personalizado implementado sobre SPI, que se ejecuta a bajo voltaje. SCK es necesario.

Sin embargo, la programación de PIC más antiguos (y la programación AVR sin ISP) requiere altos voltajes y un protocolo personalizado diferente. Esto requiere un programador de hardware especial.

Otros dispositivos son más complejos. La mayoría de los microcontroladores ARM se deben programar a través de JTAG, aquí la memoria se escribe directamente y se le indica al procesador que escriba en el flash. Una vez más, cada dispositivo es diferente.

    
respondido por el Toby Jaffey
4

Hice mucha investigación y me estoy preparando para comenzar a jugar con AVR, pero en realidad nunca usé uno, por lo que esto puede estar mal, pero:

La mayoría de los programadores baratos no admiten la programación de alto voltaje AVR. Es necesario si el controlador está configurado para que no sea programable mediante el uso de bits de fusible o si de alguna manera usted cometió algunos errores graves y necesita restablecerlo a los valores predeterminados, etc.

    
respondido por el AndrejaKo
3

La mayoría de los programadores AVR baratos son solo sincronizar interfaces seriales con una línea de reinicio. Puede usar un FT232 para realizar bitbang a través de la Interfaz Periférica Serial (SPI). El FT232 está diseñado para la sincronización asíncrona en serie, por lo que todo se hace en software.

Puede simplemente cargar un gestor de arranque como arduino que le permitiría cargar código a través de la interfaz serial asíncrona utilizando el ft232 en modo normal o cualquier interfaz asíncrona serial utilizando los convertidores de nivel según sea necesario. Simplemente no olvide usar el cargador de arranque correcto para la velocidad de su reloj y para configurar correctamente los bytes del fusible.

    
respondido por el Garak
1

Muchos dispositivos programables históricamente han requerido que se programen utilizando secuencias de señales cronometradas con relativa precisión. En muchos casos, si uno solo quisiera programar un tipo particular de dispositivo, el hardware requerido hubiera sido bastante simple, pero dado que los diferentes dispositivos tenían diferentes requisitos, construir un programador de propósito más general era algo más difícil.

Hoy en día, uno probablemente podría programar más del 50% de los dispositivos programables usando nada más que un cable de E / S USB y un software para PC, pero los programadores de "hardware" aún tienen una ventaja de velocidad considerable. Para que la PC reaccione a una señal recibida por un dispositivo USB y envíe una respuesta, generalmente toma un mínimo de 1-2 milisegundos. Si una secuencia de programación requiere que se le pregunte repetidamente a un dispositivo cuando esté listo para la siguiente porción de datos y luego se envíe, el uso de un simple cable de E / S agregaría un milisegundo adicional o dos al tiempo requerido para manejar cada porción. Dependiendo de la naturaleza del dispositivo en cuestión, eso podría aumentar el tiempo total requerido para la programación en un orden de magnitud en comparación con un programador que se podría decir, mientras se espera que un dispositivo esté listo, lo que debería hacer una vez que lo esté.

Personalmente, me gusta el enfoque de que los dispositivos equipados con flash se envíen de fábrica con un cargador de arranque en la memoria que se puede usar con un mínimo de hardware de programación. Si el dispositivo admite la programación flash bajo el control del software, este enfoque puede simplificar la producción sin agregar nada al costo del silicio más allá del muy pequeño tiempo marginal requerido para tener el programa de accesorios de prueba de fábrica en el cargador de arranque después de que haya hecho todo lo demás .

    
respondido por el supercat

Lea otras preguntas en las etiquetas