Cómo programar el flash de varios controladores PIC

4

Tenemos 6 controladores dsPIC33F (16 bits) en el sistema y el sistema es bastante grande y complicado. Todos los controladores están ubicados en diferentes PCB y están conectados entre sí a través del bus RS485.

  1. El primer controlador Pic (Master) está conectado a la PC y el resto de los controladores (5 esclavos) están conectados a Master mediante el bus RS485.
  2. Para programar master dsPIC usa el programador MPLAB-ICD conectado a la PC.
  3. Ahora, para programar Slave1 dsPIC, tenemos que abrir la máquina, luego ubicar la PCB y conectar el programador manualmente y luego programarla.
  4. De manera similar, seguimos el mismo procedimiento uno por uno para todos los controladores al eliminar el programador y conectarnos a la PCB respectiva para programar el dsPIC.

Quiero programar todos los controladores a través del software uno por uno desde la PC sin quitar el MPLAB_ICD cuando está conectado entre el Maestro y la PC de forma predeterminada. ¿O hay algún otro método a través del hardware o software para programar todos los controladores uno por uno desde la PC sin hacerlo manualmente?

¿Qué cambios de hardware / software debo realizar para programar el dsPIC sin abrir el sistema?

    
pregunta user2722469

1 respuesta

6

Hago más o menos lo mismo con los dispositivos PIC32, con la excepción de que esto se realiza con un cargador de arranque y no con un ICD. Programamos el gestor de arranque en cada dispositivo cuando se fabrica y prueba utilizando un MPLAB-ICD3. Luego usamos el gestor de arranque para las actualizaciones de firmware.

El gestor de arranque es una versión modificada de la proporcionada por Microchip. Las modificaciones fueron para permitir las comunicaciones de paso con los dispositivos esclavos. La aplicación del cargador de PC también necesitaba ser modificada. Así es como funciona:

  1. Cada dispositivo tiene dos puertos de comunicaciones. Un puerto RS-232 y un puerto RS-485. El puerto RS-232 generalmente solo lo utiliza un maestro y todos los esclavos pueden programarse y configurarse a través del paso desde ese puerto. Los dispositivos esclavos pueden configurarse o programarse opcionalmente a través de su propio puerto RS-232.

  2. Cada dispositivo tiene un interruptor DIP de 8 posiciones que establece la dirección del dispositivo. Cada dispositivo también tiene un conmutador dip de selección maestro / esclavo para definir el maestro. Puede usar una dirección predefinida para designar al maestro, pero teníamos razones para necesitar un interruptor separado que no esté relacionado con esta pregunta.

  3. En los protocolos de comunicaciones de todos los puertos se incluye un comando "Restablecer". Esto se usa para reiniciar el procesador y ponerlo en modo de cargador de arranque. El procesador está en modo de cargador de arranque durante un mínimo de 0,5 segundos. Este tiempo se extiende si se reciben paquetes del cargador de arranque (ya sea para su dispositivo o para otros). La aplicación del cargador de PC comienza el proceso de carga de inicio enviando un comando de reinicio global al maestro que lo pasará a los esclavos.

  4. Cada comando y datos de la PC vienen en forma de un paquete. Se agrega un byte de dirección al comienzo de cada paquete para designar el dispositivo de destino. La dirección se establece mediante un control en la ventana del programa de carga de PC.

  5. Todos los paquetes son reconocidos por el dispositivo al que se dirige el paquete.

  6. Un maestro usará un paquete si coincide con su propia dirección y reconoce ese paquete. El maestro pasará el paquete al puerto RS-485 si la dirección no coincide con la suya. El maestro pasará los mensajes de confirmación del puerto RS-485 a la PC.

  7. Un esclavo que recibe un paquete desde el puerto RS-485 utilizará ese paquete y lo reconocerá a través del puerto RS-485. Si el paquete se recibe del puerto RS-232 (y la dirección coincide), utilizará y reconocerá el paquete a través de ese puerto.

  8. Debido al tiempo adicional requerido para las comunicaciones de paso, los tiempos de espera en la aplicación del cargador de PC tuvieron que extenderse. Por razones adicionales relacionadas con nuestro producto, no admitimos el uso de puertos COM virtuales basados en Ethernet para las actualizaciones de firmware. Si se hiciera esto, se necesitaría tiempo adicional. La mayoría de los adaptadores USB a serie (que usan controladores de puerto COM virtual) funcionan bien con este método.

respondido por el Tut

Lea otras preguntas en las etiquetas