La forma en que lo he abordado es la siguiente:
Tengo un nodo maestro. Este dispositivo es la nave nodriza, envía comandos y le dice a los demás qué hacer. Por el bien de esta conversión, estoy usando un LPC1769 (Cortex-M3) que tiene dos en -los controladores CAN , así que tengo dos TJA1050 para hacer las conexiones a los autobuses CAN reales.
Mis dispositivos periféricos que se sientan en el bus utilizan un LPC11C24 . Es un Cortex-M0 con un transceptor CAN incorporado , por lo que puedo mantener el recuento de componentes externos agradable y, a su vez, mantener los tableros periféricos y los gabinetes aún más pequeños.
Cada vez que se arrancan los periféricos, van al gestor de arranque. Verifican si necesitan ser programados. Si es así, solicitan que los programe el maestro, que sigue de manera similar a la respuesta anterior de Rocketmagnet. El único giro es que, si están programados, verifican si están actualizados. Si el maestro tiene una versión más nueva del firmware que ellos, también solicitarán que se actualice.
Este enfoque me permite no solo pegar un periférico nuevo en el bus y hacer que "simplemente funcione", sino que también me permite enviarles un nuevo firmware a través del maestro. Todas las actualizaciones proceden del mismo lugar. Para actualizar el firmware en mi dispositivo maestro, hago que se presente como un dispositivo de almacenamiento masivo USB y puedo arrastrar y soltar archivos en él.
Puede usar el protocolo que desee ... 1-Wire, I2C, SPI, CAN, etc. Los parámetros operativos y las limitaciones de longitud están claramente documentados con una simple búsqueda en Google. Siendo realistas, CAN es probablemente la mejor opción. Fue diseñado con largos recorridos en malos ambientes en mente. Es relativamente rápido teniendo en cuenta que la mayoría del firmware para un microcontrolador es de solo unos pocos kB, tal vez decenas de kB. Además, solo requiere dos cables, lo que significa que puede conectar en cadena los dispositivos con tan solo cuatro cables. 1-Wire solo necesitaría 3, e I2C solo necesitaría cuatro, pero son bastante "meh" en comparación con CAN. : P
Ahora, si tiene todos los dispositivos con un LPC1769 , admite Ethernet con un pequeño IC auxiliar . Puede hacer que todos los dispositivos se conecten a través de Ethernet y transferir gran cantidad de datos para arrancar desde el maestro. Parece que solo estás buscando hacer transferencias simples de firmware ... pero es algo para pensar. :)