Os designs de coprocessador são compatíveis com o OpenThread. Ao criar exemplos do OpenThread, uma imagem de firmware para cada design de coprocessador é criada automaticamente. Para mais informações, consulte Binários.
Coprocessador de rádio (RCP)
Em um design de RCP, o núcleo do OpenThread reside no processador host com apenas um "controlador" de camada MAC mínimo no dispositivo com o rádio Thread. O processador host geralmente não fica suspenso nesse design, em parte para garantir a confiabilidade da rede Thread.
A comunicação entre o RCP e o processador host é gerenciada pelo OpenThread Daemon usando uma interface SPI no protocolo Spinel.
A vantagem é que o OpenThread pode usar os recursos no processador mais poderoso.
Esse design é útil para dispositivos menos sensíveis a restrições de energia. Por exemplo, o processador host de uma câmera de vídeo está sempre ativado para processar vídeo.
O roteador de borda OpenThread é compatível com o design RCP. Para mais informações, consulte Roteador de borda do OpenThread.
Para criar um RCP, consulte os seguintes codelabs:
Crie uma rede com uma linha de execução com nRF52840 Roteador de borda Thread
Coprocessador de rede (NCP, na sigla em inglês)
O design padrão do NCP tem recursos de linha de execução no SoC e executa a camada do aplicativo em um processador host, que normalmente é mais capaz (mas tem mais demandas de energia) do que o dispositivo OpenThread.
A comunicação entre o NCP e o processador host é gerenciada pelo
wpantund
por uma interface serial,
geralmente usando SPI ou UART, com o protocolo Spinel.
A vantagem desse design é que o host de maior potência pode dormir enquanto o dispositivo OpenThread de menor potência permanece ativo para manter o lugar na rede Thread. Como o SoC não está vinculado à camada do aplicativo, o desenvolvimento e o teste de aplicativos são independentes do build do OpenThread.
Esse design é útil para dispositivos de gateway ou que têm outras demandas de processamento, como câmeras IP e alto-falantes.
Protocolo Spinel
O Spinel é um protocolo de gerenciamento geral para permitir que um dispositivo host se comunique com e gerencie um coprocessador. Inicialmente projetado para oferecer suporte a NCPs baseados em linhas de execução, o Spinel foi projetado com uma abordagem em camadas que permite a adaptação fácil a outras tecnologias de rede no futuro. Ele é usado com os designs RCP e NCP.
Esse protocolo está incluído no OpenThread em
/src/lib/spinel
. Uma ferramenta da CLI do Python chamada Pyspinel está disponível para fins de teste.
Para mais informações, consulte Internet-Draft do protocolo Spinel Host-Controller (link em inglês).