¿Qué opciones hay para programar MCU en producción?

Para mi proyecto Super OSD, necesitaré programar grandes lotes de MCU, probablemente entre 10 y 15 placas por hora. Podría usar mi confiable PICkit 2 para programarlos (hay dos, tal vez tres, en cada placa), pero sería muy laborioso cargar cada archivo (hasta 128 KB y 256 KB de tamaño), presionar programa y repetir para cada uno. MCU, y probablemente no me permitiría alcanzar mi velocidad objetivo. Además, los MCU son de montaje en superficie, por lo que debo tener encabezados en la placa para permitir esto. Idealmente, me gustaría eliminar estos encabezados, pero puede que no sea una opción.

Entonces, ¿qué opciones hay para la programación masiva de MCU? ¿Hay formas más rápidas de hacerlo? Tengo un presupuesto de menos de $ 100 USD, por lo que cosas como MPLAB PM3 de Microchip a $ 895 USD, aunque son agradables, no serían una opción.

Estoy tratando con microcontroladores PIC de varios tipos. Hay un PIC16F887, PIC24FJ64GA002 y dsPIC33FJ128GP802. Sin embargo, también estoy interesado en las opciones para los procesadores AT32 y STM32, ya que es posible que también los esté usando.

Tenga en cuenta que actualmente no estoy considerando pedir chips preprogramados de los fabricantes porque el software puede cambiar para cuando lleguen los chips y debido al costo adicional involucrado.

15 tableros por hora son cuatro minutos por tablero. ¿Cuánto tarda el PICkit 2 en programar su pieza?
@markrages: son unos 20 segundos con una base de código pequeña (~ 6 KB). Me imagino que con más código, podría tomar hasta un minuto y medio para cada placa, lo que no me deja mucho espacio para respirar.
@Markrages, puedo dar fe, escribí un proyecto muy grande con el ICD2 LE y me llevaría 2 o 3 minutos programarlo. Bastante molesto. Sin embargo, con el pickit 3, grita rápido.

Respuestas (7)

Lo que hacemos para la producción es cargar primero un programa en el PIC que prueba la placa (usando una pequeña placa de prueba que verifica de forma independiente que el riel de 3.3v está dentro de las especificaciones usando un par de comparadores, y luego usamos el ADC en el PIC para verificar todo lo demás. Nos sobraron suficientes pines para permitir esto (requirió algunas resistencias adicionales para actuar como divisores de voltaje para los voltajes superiores a 3v).

Después de pasar las pruebas, el código de producción real se muestra en el micro. Se ejecutan algunas pruebas adicionales y la PCB está lista para ensamblarse en una caja.

Todo esto se hace a través de un programa en la PC que solo requiere que un operador conecte la placa, haga clic en un botón y espere el resultado PASA/FALLA. Se registran todos los resultados de las pruebas (incluidas las lecturas de ADC). Todo el proceso (incluida la programación de los PIC a través de un ICD 3) se controla a través del programa de PC, que ejecuta secuencias de comandos por lotes para realizar la programación real. La comunicación con el PIC para controlar las pruebas se realiza a través de uno de los UART, cuyos pines se llevan a la placa de prueba (por lo que, además de los pines necesarios para la programación, también tenemos TX/RX como mínimo).

Instalamos varias estaciones como esta en nuestro fabricante por contrato.

Por cierto, el ICD 3 es mucho más rápido que el ICD 2 (USB 2.0 vs 1.1).

El pickit 3 también funciona con USB 2.0, por eso me encanta. ICD3 es un poco caro para mí. Mi empresa usa MSP430, por lo que es bastante diferente.
¿Puede aclarar cómo programa el IC? ¿Tu propio ICSP elaborado o qué?
@ErikFriesen Uso un ICD 3 o REAL Ice para Microchip PIC. Ambos son probablemente demasiado caros para la mayoría de los aficionados ($200 y $500 respectivamente). Otras familias de chips (Freescale, Silicon Labs, etc.) tienen su propia línea de programadores. Incluyo encabezados en los PCB para conectar con los programadores. Después de que un dispositivo está en el campo, si tiene conectividad inalámbrica (Celular o Wi-Fi), se puede actualizar por aire.
Tengo ambos y el pm3. El pm3 no hará todas las partes sin conectarse a la PC en> X2.15, se divide en la línea pic32.

Obtenga un pickit 3 y póngalo en modo programador para ir.

Le dices que quieres que el programador pase al modo y cargas tu rom, entonces ya no necesitas un puerto usb para más que energía (sí, todavía lo necesitas para energía).

A medida que se conecta a los dispositivos, presiona el botón del programa y carga el programa y le permite saber cuándo está listo, toma menos de 20 segundos por placa. Cuesta no más de 50$

El PICkit 2 no es un programador de producción. Realmente necesita obtener un ICD 3, que está clasificado como programador de producción, si quiere estar seguro de que los dispositivos se programan correctamente. Alternativamente, puede comprar sus chips preprogramados de Microchip o de un distribuidor, si tiene el código finalizado.

Esta sería la forma correcta de hacerlo.
Proporcione una cita para el comentario "programador de producción". Claramente, Pickit no es lo suficientemente robusto físicamente para una aplicación industrial. Pero las señales que presenta al objetivo son las mismas que las de cualquier otro programador. (El significado original de "programador de producción" es que ciertos programadores pudieron variar el voltaje de suministro y leer el contenido del programa para verificar la programación correcta. Microchip no ha mencionado esto en sus hojas de datos durante aproximadamente una década, pero el folclore sigue vivo Irónicamente, el PICkit 2 puede variar la tensión de alimentación...)
Esto surgió en el foro de Microchip recientemente. La documentación de ICD 3 establece que es un programador de producción, a diferencia del PICkit 2/3 que alguien de Microchip declaró que no eran programadores de producción.

La programación de microcontroladores suele ser una pequeña parte de un proceso de prueba funcional más grande. ¿Cómo es el resto de su plan de prueba?

Para cualquier producto no trivial, deberá diseñar otra placa para probar la placa en producción. Generalmente, la placa de prueba tendrá una interfaz de computadora y conectará el objetivo al equipo de prueba con capacidades RS-232 o GPIB. Luego, una computadora puede ejecutar un script, programar la placa y luego ejecutar las pruebas que sean apropiadas.

También es útil tener esta placa de prueba funcionando para el desarrollo de firmware. Implemente suficientes pruebas para detectar regresiones en el firmware.

El inicio de su placa de prueba es probablemente el circuito PICkit 2. El firmware es de código abierto, se encargará de la parte de programación, tiene un cargador de arranque útil y puede extenderlo para hacer cualquier otra cosa que necesite su prueba funcional.

Me gusta escribir mis scripts de prueba de producción en Python, pero creo que el estándar de la industria es Labview.

Uso mucho Python, pero nunca para secuencias de comandos generales; por lo general, lo dejo en bash/shell o Perl. Gracias por los consejos.

Un método que podría usar es hacer una abrazadera o algo similar a un banco de pruebas ( video de ejemplo ) con pines pogo , de modo que no necesite soldar pines para los conectores de programación. Un conector de borde de PCB, como un cable de disquete de estilo antiguo, podría ser una opción más económica (pero más exigente en el área de la placa).

Tendrá que idear una forma de programar cada microcontrolador, probablemente utilizando varios programadores o un archivo por lotes como sugirió David. Puede combinarlo con un interruptor grande (quizás uno de los interruptores giratorios de una caja de interruptores para compartir una impresora antigua, o algunos relés), para volver a conectar el programador de un PIC a otro sin mover el conector.

Las técnicas también se aplican a otros controladores programables en el sistema, aunque los compatibles con JTAG pueden hacerlo aún más fácil porque JTAG TAP está diseñado para estar encadenado, por lo que no habría que mover el programador de un chip a otro. Además, para chips como los AVR que pueden usar niveles lógicos ordinarios para la programación, la conmutación podría ser más fácil.

Ni siquiera necesita pines pogo: coloco un pin de encabezado en el PICkit 2 y puedo programarlo insertándolo en los agujeros en el tablero y presionando un poco hacia los lados, luego manteniendo esta presión hasta que se complete la programación.
@Markrages, así es como lo hago en el trabajo.

Hay una utilidad de línea de comandos llamada PK2CMD para Windows y Linux que le permite programar sus PIC con PicKit (para que no tenga que usar MPLAB o alguna otra GUI). Puede usar su lenguaje de secuencias de comandos favorito para crear un pequeño programa que ejecute el comando PK2CMD correcto cuando presione una tecla. Esto haría que el lado de la computadora de su producción fuera menos laborioso (solo presionar 1 tecla por MCU), pero aún necesitaría una forma de conectar el PicKit a cada una de sus 3 MCU.

El servicio de programación de Microchip es muy barato la última vez que lo usé. Una vez que cubre el costo de configuración, es muy barato: centavos por chip para 12F, sin mirar los de gama alta. También pueden marcar/etiquetar, etc. Incluso si tiene la intención de cambiar el FW, tener un cargador de arranque preprogramado puede facilitarlo.

Para un programador de producción, me gusta Asix Presto : toneladas de opciones para cosas como la serialización, y muy rápido.