Trabajé en un producto que tenía un total de siete MCU. El diseño que hicimos incluyó un bus serie de dos cables implementado como RS485 que se descartó a cada placa MCU y terminó en las líneas TxD y RxD de cada UART de la MCU.
Cada MCU se programó con un cargador de arranque que respondería al tráfico RS485 que podría permitir la reprogramación del FLASH de "código de aplicación" de la MCU. La entrada en el modo de cargador de arranque en el momento del encendido fue controlada por el voltaje analógico en una determinada entrada A / D. En el funcionamiento normal del sistema, el pin leería cerca de GND. Algo entre 2.5 y 4V se vería como un "modo de calibración" mientras que una lectura A / D de más de 4.5V se usó para señalar el modo de cargador de arranque. Las entradas A / D se desviaron a través de un divisor de voltaje, de modo que el voltaje aplicado externamente en el cable CAL / BOOT externamente tenía que ser superior a 20 V para entrar en el modo de cargador de arranque. Este cable de señal analógica también se conectó a las siete MCU.
Una PC externa estaba equipada con una utilidad de actualización de firmware especial que podía controlar la señal CAL / BOOT y luego interactuar secuencialmente con cada MCU a través del enlace de comunicación RS485 para realizar las actualizaciones de software. La misma computadora también se configuró con una utilidad de calibración especializada que usó el mismo enlace de comunicación RS485 para realizar la calibración y el registro de datos de rendimiento para el producto.
Tenga en cuenta que dado que todas las MCU eran la misma familia de chips del fabricante, se utilizó el mismo código de cargador de arranque en todas las MCU. Los MCU fueron precargados con los cargadores de arranque por un servicio de programación en el distribuidor de electrónica. El código de aplicación del producto se cargó en cada MCU en la prueba de nivel de placa inicial para ahorrar tiempo al tener que hacerlo en la prueba funcional de nivel de producto. Cualquier actualización posterior se realizó en el paquete de nivel de producto sin tener que abrir nada.
Un último comentario es que cada MCU en esta familia de controladores podría programarse en el circuito a través de una interfaz de tipo SPI. Proporcionamos almohadillas en cada placa de circuito a las que se podía acceder a través de pogo pines en un dispositivo de placa que dio acceso a esta interfaz. A través de eso fue posible reprogramar el FLASH completado de la MCU, incluido su cargador de arranque. Una vez que las siete MCU estaban en su lugar en el producto completo, este modo de acceso ya no estaba disponible porque todas las tarjetas electrónicas estaban encapsuladas.