O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Implementar APIs de camada de abstração de plataforma

OpenThread é independente de sistema operacional e plataforma, com uma estreita Platform Abstraction Layer (PAL). Este PAL define:

Arquitetura de portabilidade

Todas as APIs devem ser implementadas com base no Pacote de Suporte de Compilação (BSP) da Camada de Abstração de Hardware (HAL).

Os arquivos da API devem ser colocados nos seguintes diretórios:

Tipo Diretório
Implementação PAL específica da plataforma /openthread/examples/platforms/ platform-name
Arquivos de cabeçalho - API de armazenamento não volátil /openthread/examples/platforms/utils
Todos os outros arquivos de cabeçalho /openthread/include/openthread/platform
HAL BSP /openthread/third_party/ platform-name

Alarme

Declaração de API:

/openthread/include/openthread/platform/alarm-milli.h

A API de alarme fornece serviços de temporização e alarme fundamentais para a implementação do temporizador da camada superior.

Existem dois tipos de serviço de alarme, milissegundo e microssegundo . Milissegundos são necessários para uma nova plataforma de hardware. O microssegundo é opcional.

UART

Declaração de API:

/openthread/include/openthread/platform/uart.h

A API UART implementa comunicação de porta serial fundamental por meio da interface UART.

Enquanto os add-ons OpenThread CLI e [NCP] / (https://github.com/openthread/openthread/tree/masterexamples/apps/ncp) dependem da interface UART para interagir com o lado do host, o suporte UART API é opcional . No entanto, mesmo se você não planeja usar esses complementos em seu novo exemplo de plataforma de hardware, é altamente recomendável adicionar suporte por alguns motivos:

  • A CLI é útil para validar se a porta funciona corretamente
  • A ferramenta Harness Automation usa a interface UART para controlar OpenThread para fins de teste e certificação

Se a plataforma de hardware de destino suportar um módulo USB CDC em vez de UART, certifique-se de:

  • Instale o driver USB CDC correto no host
  • Substitua a implementação da API UART pelo driver USB CDC (junto com BSP) no lado do OpenThread, usando os mesmos protótipos de função

Rádio

Declaração de API:

/openthread/include/openthread/platform/radio.h

A API de rádio define todas as funções necessárias chamadas pela camada MAC IEEE 802.15.4 superior. O chip de rádio deve ser totalmente compatível com a especificação 2.4 GHz IEEE 802.15.4-2006.

Devido ao seu recurso aprimorado de baixo consumo de energia, o OpenThread requer que todas as plataformas implementem o quadro automático pendente (transmissão indireta) por padrão, e a tabela de correspondência de endereço de origem também deve ser implementada no arquivo de origem radio.h .

No entanto, se seu novo exemplo de plataforma de hardware tiver recursos limitados, a tabela de endereços de origem pode ser definida como comprimento zero. Consulte Auto Frame Pending para obter mais informações.

Misc / Reset

Declaração de API:

/openthread/include/openthread/platform/misc.h

A API Misc / Reset fornece um método para reinicializar o software no chip e consultar o motivo da última reinicialização.

Entropia

Declaração de API:

/openthread/include/openthread/platform/entropy.h

A API Entropy fornece um verdadeiro gerador de números aleatórios (TRNG) para a camada superior, que é usado para manter ativos de segurança para toda a rede OpenThread. A API deve garantir que um novo número aleatório seja gerado para cada chamada de função. Ativos de segurança afetados pelo TRNG incluem:

  • AES CCM nonce
  • Jitter retardado aleatório
  • Endereço estendido dos dispositivos
  • O período inicial aleatório no temporizador de gotejamento
  • IDs de token / mensagem CoAP

Observe que muitas plataformas já integraram um gerador de números aleatórios, expondo a API em seu pacote BSP. No caso de a plataforma de hardware de destino não suportar TRNG, considere aproveitar a amostragem do módulo ADC para gerar um número aleatório de comprimento fixo. Faça a amostragem em várias iterações, se necessário, para atender aos requisitos de TRNG (uint32_t).

Quando a macro MBEDTLS_ENTROPY_HARDWARE_ALT é definida como 1 , esta API também deve fornecer um método para gerar a entropia de hardware usada na biblioteca mbedTLS.

Armazenamento não volátil

Declarações de API:

/openthread/include/openthread/platform/flash.h

ou

/openthread/include/openthread/platform/settings.h

O requisito de armazenamento não volátil pode ser satisfeito com a implementação de uma das duas APIs listadas acima. A API Flash implementa um driver de armazenamento flash, enquanto a API de configurações fornece funções para uma implementação de operação flash subjacente na camada superior.

Essas APIs expõem à camada superior:

  • O tamanho de armazenamento não volátil disponível usado para armazenar dados de aplicativo (por exemplo, conjunto de dados operacional ativo / pendente, parâmetros de rede atuais e credenciais de dispositivos de thread para reconexão após redefinição)
  • Ler, gravar, apagar e consultar operações de status do flash

Use OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE no arquivo de configuração principal de seu exemplo de plataforma para indicar qual API a plataforma deve usar. Se definido como 1 , a API do Flash deve ser implementada. Caso contrário, a API de configurações deve ser implementada.

Este sinalizador deve ser definido em seu /openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.h .

Exploração madeireira

Declaração de API:

/openthread/include/openthread/platform/logging.h

A API Logging implementa a funcionalidade de registro e depuração do OpenThread, com vários níveis de saída de depuração disponíveis. Esta API é opcional se você não planeja utilizar o log do OpenThread em seu novo exemplo de plataforma de hardware.

O nível mais alto e detalhado é OPENTHREAD_LOG_LEVEL_DEBG , que imprime todas as informações do pacote bruto e registra as linhas por meio da porta serial ou no terminal. Escolha um nível de depuração que melhor atenda às suas necessidades.

Específico do sistema

Declaração de API:

/openthread/examples/platforms/openthread-system.h

A API específica do sistema fornece principalmente operações de inicialização e desinicialização para a plataforma de hardware selecionada. Esta API não é chamada pela própria biblioteca OpenThread, mas pode ser útil para seu sistema / RTOS. Você também pode implementar a inicialização de outros módulos (por exemplo, UART, Radio, Random, Misc / Reset) neste arquivo de origem.

A implementação desta API depende do seu caso de uso. Se desejar usar os aplicativos CLI e NCP gerados para uma plataforma de exemplo , você deve implementar esta API. Caso contrário, qualquer API pode ser implementada para integrar os drivers de plataforma de exemplo em seu sistema / RTOS.