Articulo de referencia

Programación dentro del sistema

Conectores ISP AVR de 6 y 10 pines La programación en sistema (ISP), también llamada programación en serie en circuito (ICSP), es la capacidad de un dispositivo lógico programab...

Conectores ISP AVR de 6 y 10 pines

La programación en sistema (ISP), también llamada programación en serie en circuito (ICSP), es la capacidad de un dispositivo lógico programable , microcontrolador , chipset u otro dispositivo integrado para ser programado mientras está instalado en un sistema completo, en lugar de requerir que el chip se programe antes de la instalación. También permite que las actualizaciones de firmware se envíen a la memoria integrada de los microcontroladores y procesadores relacionados sin necesidad de circuitos de programación especializados en la placa de circuitos, y simplifica el trabajo de diseño. [ 1 ]

Descripción general

No existe un estándar para los protocolos de programación en sistema (ISP) para la programación de dispositivos microcontroladores . Casi todos los fabricantes de microcontroladores admiten ISP, pero cada uno ha implementado sus propios protocolos, que a menudo difieren incluso entre distintos dispositivos del mismo fabricante. Se pueden requerir hasta 4 pines para implementar una interfaz estándar JTAG . En general, los protocolos modernos intentan mantener bajo el número de pines utilizados, normalmente a 2. Algunas interfaces ISP logran lo mismo con un solo pin. Los microcontroladores ATtiny más recientes con UPDI incluso pueden reutilizar ese pin de programación como entrada/salida de propósito general . [ 2 ]

La principal ventaja de la programación en el sistema es que permite a los fabricantes de dispositivos electrónicos integrar la programación y las pruebas en una única fase de producción, ahorrando costes en lugar de requerir una etapa de programación independiente antes del ensamblaje del sistema. Esto les permite programar los chips en su propia línea de producción, en vez de comprar chips preprogramados a un fabricante o distribuidor, lo que posibilita la aplicación de cambios de código o diseño en plena producción. Otra ventaja es que la producción siempre puede utilizar el firmware más reciente, y las nuevas funciones, así como las correcciones de errores, pueden implementarse y ponerse en producción sin la demora que se produce al utilizar microcontroladores preprogramados.

Los microcontroladores suelen estar soldados directamente a una placa de circuito impreso y, por lo general, no disponen de los circuitos ni del espacio necesarios para un cable de programación externo de gran tamaño que los conecte a otro ordenador.

Por lo general, los chips compatibles con ISP cuentan con circuitos internos para generar la tensión de programación necesaria a partir de la tensión de alimentación normal del sistema y comunicarse con el programador mediante un protocolo serie. La mayoría de los dispositivos lógicos programables utilizan una variante del protocolo JTAG para ISP, con el fin de facilitar la integración con procedimientos de prueba automatizados. Otros dispositivos suelen utilizar protocolos propietarios o protocolos definidos por estándares más antiguos. En sistemas lo suficientemente complejos como para requerir una lógica de interconexión de tamaño moderado , los diseñadores pueden implementar un subsistema de programación controlado por JTAG para dispositivos que no utilizan JTAG, como memorias flash y microcontroladores, lo que permite que todo el procedimiento de programación y prueba se realice bajo el control de un único protocolo.

Historia

A partir de principios de la década de 1990, se observó una importante evolución tecnológica en la arquitectura de los microcontroladores. Inicialmente, se fabricaban con dos posibles soluciones: memorias programables una sola vez (OTP) o memorias EPROM . Para las EPROM, el proceso de borrado de memoria requiere que el chip se exponga a luz ultravioleta a través de una ventana específica sobre el encapsulado. En 1993, Microchip Technology presentó el primer microcontrolador con memoria EEPROM : el PIC16C84. Las memorias EEPROM se pueden borrar eléctricamente. Esta característica permitió reducir los costos de fabricación al eliminar la ventana de borrado sobre el encapsulado e implementar la tecnología de programación en el sistema (ISP). Con la ISP, el proceso de flasheo se puede realizar directamente en la placa al final del proceso de producción. Esta evolución permitió unificar la fase de programación y las pruebas funcionales en los entornos de producción, e iniciar la producción preliminar de las placas incluso antes de que se haya completado el desarrollo del firmware. De esta manera, fue posible corregir errores o realizar cambios posteriormente. Ese mismo año, Atmel desarrolló el primer microcontrolador con memoria flash, más fácil y rápida de programar y con un ciclo de vida mucho más largo en comparación con las memorias EEPROM.

Los microcontroladores compatibles con ISP suelen contar con pines para que el periférico de comunicación serie se conecte con el programador, una memoria flash/EEPROM y el circuito que suministra la tensión necesaria para programar el microcontrolador. El periférico de comunicación, a su vez, está conectado a un periférico de programación que proporciona comandos para operar sobre la memoria flash o EEPROM.

Al diseñar placas electrónicas para programación ISP, es necesario tener en cuenta algunas pautas para lograr una fase de programación lo más fiable posible. Algunos microcontroladores con un número reducido de pines comparten las líneas de programación con las líneas de E/S. Esto puede ser problemático si no se toman las precauciones necesarias en el diseño de la placa; el dispositivo puede sufrir daños en los componentes de E/S durante la programación. Además, es importante conectar las líneas ISP a circuitos de alta impedancia tanto para evitar daños en los componentes por parte del programador como porque el microcontrolador a menudo no puede suministrar suficiente corriente para controlar la línea. Muchos microcontroladores necesitan una línea de reinicio dedicada para entrar en el modo de programación. Es necesario prestar atención a la corriente suministrada para el control de la línea y comprobar la presencia de temporizadores de vigilancia (watchdogs) conectados a la línea de reinicio que puedan generar un reinicio no deseado y, por lo tanto, provocar un fallo de programación. Además, algunos microcontroladores necesitan un voltaje más alto para entrar en modo de programación y, por lo tanto, es necesario comprobar que este valor no se atenúe y que este voltaje no se transmita a otros componentes de la placa.

Aplicación industrial

La programación en el sistema se lleva a cabo durante la etapa final de producción de un producto. Se puede realizar de dos maneras diferentes según los volúmenes de producción:

En el primer método, se conecta manualmente un conector al programador. Esta solución requiere la intervención humana en el proceso de programación, ya que es necesario conectar el programador a la placa electrónica mediante el cable. Por lo tanto, esta solución está pensada para volúmenes de producción bajos.

El segundo método utiliza puntos de prueba en la placa. Se trata de áreas específicas ubicadas en la placa de circuito impreso ( PCB ) que están conectadas eléctricamente a algunos de los componentes electrónicos de la placa. Los puntos de prueba se utilizan para realizar pruebas funcionales de los componentes montados en la placa y, dado que están conectados directamente a algunos pines del microcontrolador, son muy eficaces para la programación en serie (ISP). Para volúmenes de producción medios y altos, el uso de puntos de prueba es la mejor solución, ya que permite integrar la fase de programación en la línea de montaje.

En las líneas de producción, las placas se colocan sobre una base de clavos llamada dispositivo de fijación . Estos dispositivos se integran, según el volumen de producción, en sistemas de prueba semiautomáticos o automáticos denominados equipos de prueba automáticos (ATE) . Los dispositivos de fijación están diseñados específicamente para cada placa, o como máximo para unos pocos modelos similares a la placa para la que fueron diseñados; por lo tanto, son intercambiables en el entorno del sistema donde están integrados. Una vez colocada la placa y el dispositivo de fijación en su posición, el sistema de prueba dispone de un mecanismo para poner en contacto las agujas del dispositivo de fijación con los puntos de prueba de la placa. El sistema está conectado a, o tiene integrado directamente, un programador ISP. Este programador debe programar el o los dispositivos montados en la placa: por ejemplo, un microcontrolador o una memoria serie.

Microchip ICSP

Para la mayoría de los microcontroladores de Microchip, la programación ICSP se realiza utilizando dos pines, reloj (PGC) y datos (PGD), mientras que  en el pin Vpp/MCLR hay un alto voltaje (12 V). La programación de bajo voltaje (5  V o 3,3  V) prescinde del alto voltaje, pero reserva el uso exclusivo de un pin de E/S. Sin embargo, para los microcontroladores más recientes, específicamente las familias de microcontroladores PIC18F6XJXX/8XJXX de Microchip Technology , el acceso a los modos ICSP es algo diferente. [ 3 ] El acceso al modo de Programación/Verificación ICSP requiere los siguientes tres pasos:

  1. Se aplica brevemente voltaje al pin MCLR (master clear).
  2. En el PGD se presenta una secuencia de teclas de 32 bits.
  3. Se vuelve a aplicar voltaje a MCLR.
Programador ICSP Microchip PICkit

Se requiere un dispositivo de hardware independiente, denominado programador, para conectarse a un puerto de E/S de una PC por un lado y al microcontrolador PIC por el otro. A continuación se presenta una lista de las características de cada tipo principal de programación:

  1. Puerto paralelo : cable grande y voluminoso. La mayoría de los ordenadores solo tienen un puerto y puede resultar incómodo cambiar el cable de programación cuando hay una impresora conectada. La mayoría de los portátiles fabricados después de 2010 no son compatibles con este puerto. La programación mediante puerto paralelo es muy rápida.
  2. Puerto serie (puerto COM): en su momento, fue el método más popular. Los puertos serie suelen carecer de la tensión de alimentación adecuada para la programación del circuito. La mayoría de los ordenadores y portátiles fabricados después de 2010 no son compatibles con este puerto.
  3. Zócalo (dentro o fuera del circuito): la CPU debe retirarse de la placa de circuito o se debe colocar una abrazadera en el chip, lo que dificulta el acceso.
  4. Cable USB : Pequeño y ligero, admite alimentación eléctrica y la mayoría de los ordenadores disponen de puertos adicionales. La distancia entre el circuito a programar y el ordenador está limitada por la longitud del cable USB; normalmente debe ser inferior a 180  cm. Esto puede dificultar la programación de dispositivos ubicados en maquinaria o armarios.

Los programadores ICSP ofrecen numerosas ventajas, entre las que destacan el tamaño, la disponibilidad de puertos de computadora y la fuente de alimentación. Debido a las variaciones en el esquema de interconexión y el circuito de destino que rodea a un microcontrolador, no existe un programador que funcione con todos los circuitos o interconexiones posibles. Microchip Technology proporciona una guía detallada de programación ICSP [ 4 ] . Numerosos sitios web ofrecen ejemplos de programación y circuitos.

Los microcontroladores PIC se programan mediante cinco señales (se proporciona un sexto pin auxiliar, pero no se utiliza). Los datos se transfieren mediante un esquema serie síncrono de dos hilos; otros tres hilos proporcionan la programación y la alimentación del chip. La señal de reloj siempre está controlada por el programador.

Comunicación de programación típica

Señales y asignación de pines

  • Vpp : voltaje del modo de programación. Debe conectarse al pin MCLR o al pin Vpp del puerto ICSP opcional disponible en algunos microcontroladores PIC con muchos pines. Para poner el PIC en modo de programación, esta línea debe estar dentro de un rango específico que varía de un PIC a otro. Para los PIC de 5 V  , este valor siempre es superior a Vdd y puede llegar hasta 13,5 V. Los PIC de 3,3 V, como las series 18FJ, 24H y 33F, utilizan una señal especial para entrar en modo de programación, y Vpp es una señal digital que se encuentra a tierra o a Vdd. No existe un voltaje Vpp único que esté dentro del rango válido para todos los PIC . De hecho, el nivel mínimo de Vpp requerido para algunos PIC puede dañar otros.
  • Vdd : Esta es la entrada de alimentación positiva para el PIC. Algunos programadores requieren que el circuito la proporcione (el circuito debe estar al menos parcialmente encendido), otros esperan controlar esta línea ellos mismos y requieren que el circuito esté apagado, mientras que otros pueden configurarse de ambas maneras (como el Microchip ICD2). Los programadores de Embed Inc esperan controlar la línea Vdd ellos mismos y requieren que el circuito objetivo esté apagado durante la programación.
  • V ss - Entrada de potencia negativa al PIC y referencia de cero voltios para las señales restantes. Los voltajes de las otras señales están implícitamente con respecto a V ss .
  • ICSPCLK : Línea de reloj de la interfaz de datos serie. Esta línea oscila entre GND y Vdd y siempre es controlada por el programador. Los datos se transfieren en el flanco descendente.
  • ICSPDAT : Línea de datos serie. La interfaz serie es bidireccional, por lo que esta línea puede ser controlada tanto por el programador como por el microcontrolador PIC, según la operación en curso. En ambos casos, esta línea oscila entre GND y Vdd. Se transfiere un bit en el flanco descendente de PGC.
  • AUX/PGM : Los microcontroladores PIC más recientes utilizan este pin para habilitar la programación de bajo voltaje (LVP). Al mantener PGM en estado alto, el microcontrolador entra en modo LVP. Los microcontroladores PIC se envían con LVP habilitado; por lo tanto, si utiliza un chip nuevo, puede usarlo en modo LVP. La única forma de cambiar el modo es mediante un programador de alto voltaje. Si programa el microcontrolador sin conectarlo a este pin, el modo permanece sin cambios.

Diagrama de pines RJ11

Programador PIC de RJ11 a ICSP

Microchip admite un estándar industrial para el uso de conectores RJ11 con un programador ICSP. La ilustración representa la información proporcionada en sus hojas de datos. Sin embargo, puede haber cierta confusión. Las hojas de datos del PIC muestran un conector invertido y no ofrecen una representación gráfica de la distribución de pines, por lo que no queda claro en qué lado del conector se encuentra el pin 1. La ilustración que se muestra aquí no ha sido probada , pero utiliza la distribución de pines estándar de la industria telefónica (el conector RJ11 se desarrolló originalmente para teléfonos de escritorio con cable).

Referencias

  1. Oreilly, Diseño de hardware embebido, 2.ª edición, por John Catsoulis
  2. "Información sobre la activación de alto voltaje de la interfaz unificada de programación y depuración (UPDI) - Ayuda para desarrolladores" . developerhelp.microchip.com . Archivado del original el 7 de octubre de 2024. Recuperado el 17 de diciembre de 2024. Pin UPDI compartido . Esta implementación se usa generalmente en dispositivos con paquetes más pequeños. El pin UPDI se puede reconfigurar como un pin GPIO o /RESET. En este caso, la funcionalidad UPDI está deshabilitada y se requiere una fuente de alto voltaje para volver a habilitarla. Algunos ejemplos incluyen los dispositivos tinyAVR de las series 0, 1 y 2.
  3. "Especificación de programación del microcontrolador Flash" (PDF) .
  4. ww1.microchip.com/downloads/en/devicedoc/30277d.pdf Guía de programación ICSP , Microchip

Véase también