Los diseños de ambos procesadores son compatibles con OpenThread. Cuando compilas ejemplos de OpenThread, se crea automáticamente una imagen de firmware para cada diseño de coprocesador. Para obtener más información, consulta Binarios.
Coprocesador de radio (RCP)
En un diseño de RCP, el núcleo de OpenThread se encuentra en el procesador del host con un mínimo "controlador" de capa MAC mínima en el dispositivo con la radio Thread. Por lo general, el procesador host no se suspende en este diseño, en parte para garantizar la confiabilidad de la red de Thread.
OpenThread Daemon administra la comunicación entre el RCP y el procesador del host mediante una interfaz de SPI a través del protocolo de Spinnaker.
La ventaja es que OpenThread puede usar los recursos en el procesador más potente.
Este diseño es útil para dispositivos menos sensibles a las restricciones de batería. Por ejemplo, el procesador host de una cámara de video siempre está activado para procesar videos.
OpenThread Border Router admite un diseño de RCP. Para obtener más información, consulta OpenThread Border Router.
Para compilar un RCP, consulta los siguientes Codelabs:
Crea una red Thread con nRF52840 Router de borde de Thread
Coprocesador de red (NCP)
El diseño estándar de NCP tiene funciones de Thread en el SoC y ejecuta la capa de la aplicación en un procesador host, que suele tener más capacidad (pero tiene una mayor demanda de energía) que el dispositivo OpenThread.
wpantund
administra la comunicación entre el NCP y el procesador host a través de una interfaz en serie, por lo general, mediante SPI o UART, a través del protocolo Spinel.
La ventaja de este diseño es que el host de mayor potencia puede suspenderse mientras el dispositivo OpenThread, que es de menor potencia, permanece activo para mantener su lugar en la red de Thread. Y como el SoC no está vinculado a la capa de la aplicación, el desarrollo y la prueba de aplicaciones son independientes de la compilación de OpenThread.
Este diseño es útil para dispositivos de puerta de enlace o dispositivos que tienen otras demandas de procesamiento, como cámaras y bocinas IP.
Protocolo Spinel
Spinel es un protocolo de administración general para permitir que un dispositivo host se comunique con un coprocesador y lo administre. Inicialmente diseñado para admitir NCP basados en Thread, Spinel se diseñó con un enfoque en capas que le permite adaptarse con facilidad a otras tecnologías de red en el futuro. Se usa con los diseños RCP y NCP.
Este protocolo se incluye con OpenThread en /src/lib/spinel
. Hay una herramienta de CLI para Python llamada Pyspinel disponible con fines de prueba.
A fin de obtener más información, consulta Internet-Draft para el protocolo host-controlador de Spinel.