stringtranslate.com

Programación en el sistema

Conectores ISP AVR de 6 y 10 pines

La programación en sistema (ISP), o también llamada programación en serie en circuito (ICSP), es la capacidad de algunos dispositivos lógicos programables , microcontroladores , conjuntos de chips y otros dispositivos integrados de programarse mientras están instalados en un sistema completo, en lugar de requerir la chip que se programará antes de instalarlo en el sistema. También permite que las actualizaciones de firmware se envíen a la memoria en chip de los microcontroladores y procesadores relacionados sin requerir circuitos de programación especializados en la placa de circuito, y simplifica el trabajo de diseño. [1]

Descripción general

No existe un estándar para protocolos de programación en el sistema para programar dispositivos de microcontroladores . Casi todos los fabricantes de microcontroladores admiten esta función, pero todos han implementado sus propios protocolos, que a menudo difieren incluso para diferentes dispositivos del mismo fabricante. En general, los protocolos modernos intentan mantener baja la cantidad de pines utilizados, generalmente 2 pines. Algunas interfaces ISP logran lograr lo mismo con un solo pin, otras usan hasta 4 para implementar una interfaz JTAG .

La principal ventaja de la programación dentro del sistema es que permite a los fabricantes de dispositivos electrónicos integrar la programación y las pruebas en una sola fase de producción y ahorrar dinero, en lugar de requerir una etapa de programación separada antes de ensamblar el sistema. Esto puede permitir a los fabricantes programar los chips en la línea de producción de su propio sistema en lugar de comprar chips preprogramados de un fabricante o distribuidor, lo que hace factible aplicar cambios de código o diseño en medio de una ejecución de producción. La otra ventaja es que la producción siempre puede utilizar el firmware más reciente, y se pueden implementar y poner en producción nuevas funciones y correcciones de errores sin los retrasos que se producen cuando se utilizan microcontroladores preprogramados.

Los microcontroladores generalmente se sueldan directamente a una placa de circuito impreso y generalmente no tienen los circuitos ni el espacio para un cable de programación externo grande a otra computadora.

Normalmente, los chips que admiten ISP tienen circuitos internos para generar cualquier voltaje de programación necesario a partir del voltaje de suministro normal del sistema y se comunican con el programador a través de un protocolo en serie. La mayoría de los dispositivos lógicos programables utilizan una variante del protocolo JTAG para ISP, con el fin de facilitar una integración más sencilla con los 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 pegamento moderadamente grande , los diseñadores pueden implementar un subsistema de programación controlado por JTAG para dispositivos que no son JTAG, como memoria 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 los años 1990 se asistió a una importante evolución tecnológica en la arquitectura de los microcontroladores. En un principio se realizaron en dos posibles soluciones: con OTP (programables una vez) o con memorias EPROM . En estas tecnologías, el proceso de borrado de memoria requiere que el chip se exponga a luz ultravioleta a través de una ventana específica situada encima del paquete. 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 realización al eliminar la ventana de borrado sobre el paquete e iniciar la tecnología de programación en el sistema. Con ISP el proceso de flasheo se puede realizar directamente en la placa al final del proceso de producción. Esta evolución dio la posibilidad de unificar la fase de programación y pruebas funcionales y en entornos de producción y de iniciar la producción preliminar de las placas incluso si el desarrollo del firmware aún no se ha completado. De esta manera fue posible corregir errores o realizar cambios más adelante. Ese mismo año, Atmel desarrolló el primer microcontrolador con memoria flash, más fácil y rápido de programar y con un ciclo de vida mucho más largo en comparación con las memorias EEPROM.

Los microcontroladores que admiten ISP generalmente cuentan con pines utilizados por el periférico de comunicación en serie para interactuar con el programador, una memoria flash/EEPROM y los circuitos utilizados para suministrar el voltaje necesario para programar el microcontrolador. El periférico de comunicación está a su vez conectado a un periférico de programación que proporciona comandos para operar en la memoria flash o EEPROM.

A la hora de diseñar placas electrónicas para la programación de ISP es necesario tener en cuenta algunas pautas para tener 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 podría ser un problema si no se tienen en cuenta las precauciones necesarias en el diseño del tablero; 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 para evitar que el programador dañe los componentes y porque el microcontrolador a menudo no puede suministrar suficiente corriente para pilotar la línea. Muchos microcontroladores necesitan una línea RESET dedicada para ingresar al modo de programación. Es necesario prestar atención a la corriente suministrada para la conducción de la línea y verificar la presencia de watchdogs conectados a la línea RESET que puedan generar un reset no deseado y, por 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 verificar que este valor no esté atenuado y que este voltaje no se transmita a otros componentes de la placa.

Aplicación industrial

El proceso de programación dentro del sistema tiene lugar durante la etapa final de producción del producto y se puede realizar de dos formas diferentes según los volúmenes de producción.

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

El segundo método utiliza puntos de prueba en el tablero. Estas son áreas específicas ubicadas en la placa impresa, o 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 componentes montados en placa y, dado que están conectados directamente a algunos pines del microcontrolador, son muy efectivos para ISP. Para volúmenes de producción medios y altos utilizar puntos de prueba es la mejor solución ya que permite integrar la fase de programación en una línea de montaje.

En las líneas de producción, los tableros se colocan sobre un lecho de clavos llamado fijación . Estos últimos se integran, según los volúmenes de producción, en sistemas de prueba semiautomáticos o automáticos denominados ATE (equipos de prueba automáticos) . Los dispositivos están diseñados específicamente para cada placa, o como máximo para algunos modelos similares a la placa para la que fueron diseñados, por lo que son intercambiables en el entorno del sistema donde están integrados. El sistema de prueba, una vez colocados el tablero y el dispositivo, tiene un mecanismo para poner en contacto las agujas del dispositivo con los puntos de prueba del tablero a probar. El sistema está conectado o tiene integrado directamente en su interior un programador ISP. Éste tiene que programar el dispositivo o dispositivos montados en la placa: por ejemplo, un microcontrolador y/o una memoria serie.

Microchip ICSP

Para la mayoría de los microcontroladores Microchip, la programación ICSP se realiza utilizando dos pines, reloj (PGC) y datos (PGD), mientras que un alto voltaje (12 V) está presente en el pin Vpp/MCLR. 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 nuevos, específicamente las familias de microcontroladores PIC18F6XJXX/8XJXX de Microchip Technology , ingresar a los modos ICSP es un poco diferente. [2] Para ingresar al modo de programación/verificación ICSP se requieren los siguientes tres pasos:

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

Se requiere una pieza de hardware separada, llamada programador, para conectarse a un puerto de E/S de una PC en un lado y al PIC en el otro lado. Una lista de las características para cada tipo de programación principal es:

  1. Puerto paralelo : cable grande y voluminoso; la mayoría de las computadoras tienen un solo puerto y puede resultar inconveniente cambiar el cable de programación con una impresora conectada. La mayoría de las computadoras portátiles posteriores a 2010 no admiten este puerto. La programación de puertos paralelos es muy rápida.
  2. Puerto serie (puerto COM) - Hubo un tiempo en que el método más popular. Los puertos serie generalmente carecen de voltaje de suministro de programación de circuito adecuado. La mayoría de las computadoras y portátiles posteriores a 2010 no son compatibles con este puerto.
  3. Zócalo (dentro o fuera del circuito): la CPU se debe retirar de la placa de circuito o se debe conectar una abrazadera al chip para que el acceso sea un problema.
  4. Cable USB : pequeño y liviano, admite fuente de voltaje y la mayoría de las computadoras tienen puertos adicionales disponibles. 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 hacer que los dispositivos de programación que se encuentran en lo profundo de maquinaria o gabinetes sean un problema.

Los programadores ICSP tienen muchas ventajas, siendo el tamaño, la disponibilidad del puerto de la computadora y la fuente de energía las principales características. Debido a las variaciones en el esquema de interconexión y el circuito objetivo que rodea a un microcontrolador, no existe un programador que funcione con todos los circuitos objetivo o interconexiones posibles. Microchip Technology proporciona una guía detallada de programación ICSP [3] Muchos sitios proporcionan ejemplos de programación y circuitos.

Los PIC se programan utilizando cinco señales (se proporciona un sexto pin 'aux', pero no se utiliza). Los datos se transfieren mediante un esquema en serie síncrono de dos cables, tres cables más proporcionan programación y alimentación al chip. La señal del reloj siempre está controlada por el programador.

Comunicación de programación típica

Señales y pinout

Distribución de pines RJ11

Programador PIC RJ11 a ICSP

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

Referencias

  1. ^ Oreilly, Diseño de hardware integrado, segunda edición de John Catsoulis
  2. ^ http://ww1.microchip.com/downloads/en/DeviceDoc/39644l.pdf [ URL básica PDF ]
  3. ^ ww1.microchip.com/downloads/en/devicedoc/30277d.pdf Guía de programación ICSP, Microchip

Ver también