Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

플랫폼 추상화 계층 API 구현

GitHub에서 소스 보기

OpenThread는 좁은 PAL(플랫폼 추상화 계층)을 사용하여 OS 및 플랫폼에 구애받지 않습니다. 이 PAL은 다음을 정의합니다.

포팅 아키텍처
  • 알람이 있는 자유 실행 타이머용 알람 인터페이스
  • CLI 및 Spinel 메시지 통신을 위한 버스 인터페이스(UART, SPI)
  • IEEE 802.15.4-2006 통신용 무선 인터페이스
  • GCC 관련 초기화 루틴
  • 진정한 난수 생성을 위한 엔트로피
  • 비휘발성 구성 저장을 위한 설정 서비스
  • OpenThread 로그 메시지 전달을 위한 로깅 인터페이스
  • 시스템별 초기화 루틴

모든 API는 기본 HAL(하드웨어 추상화 계층) BSP(빌드 지원 패키지)를 기반으로 구현되어야 합니다.

API 파일은 다음 디렉토리에 위치해야 합니다.

유형 예배 규칙서
플랫폼별 PAL 구현 /openthread/examples/platforms/ platform-name
헤더 파일 — 비휘발성 스토리지 API /openthread/examples/platforms/utils
기타 모든 헤더 파일 /openthread/include/openthread/platform
할 BSP /openthread/third_party/ platform-name

경보

API 선언:

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

알람 API는 상위 계층 타이머 구현을 위한 기본적인 타이밍 및 알람 서비스를 제공합니다.

이 개 알람 서비스 유형이 있습니다 밀리 초마이크로은 . 새 하드웨어 플랫폼에는 밀리초가 필요합니다. 마이크로초는 선택 사항입니다.

UART

API 선언:

/openthread/examples/platforms/utils/uart.h

UART API는 UART 인터페이스를 통해 기본적인 직렬 포트 통신을 구현합니다.

OpenThread 동안 CLINCP의 추가 기능은 호스트 측과 상호 작용하는 UART 인터페이스에 따라, UART API 지원은 선택 사항입니다. 그러나 새 하드웨어 플랫폼 예제에서 이러한 추가 기능을 사용할 계획이 없더라도 몇 가지 이유로 지원을 추가하는 것이 좋습니다.

  • CLI는 포트가 올바르게 작동하는지 확인하는 데 유용합니다.
  • Harness Automation Tool은 UART 인터페이스를 사용하여 테스트 및 인증 목적으로 OpenThread를 제어합니다.

대상 하드웨어 플랫폼이 UART가 아닌 USB CDC 모듈을 지원하는 경우 다음을 확인하십시오.

  • 호스트 측에 올바른 USB CDC 드라이버를 설치하십시오.
  • 동일한 기능 프로토타입을 사용하여 OpenThread 측에서 UART API 구현을 USB CDC 드라이버(BSP와 함께)로 교체합니다.

라디오

API 선언:

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

Radio API는 상위 IEEE 802.15.4 MAC 계층에서 호출하는 모든 필수 기능을 정의합니다. 라디오 칩은 2.4GHz IEEE 802.15.4-2006 사양을 완전히 준수해야 합니다.

자사의 향상된 저전력 기능으로 인해, OpenThread는 기본적으로 자동 프레임 출원 (간접 전송)를 구현하는 모든 플랫폼을 필요로하며, 소스 주소가 일치 테이블도 구현해야 radio.h 소스 파일.

그러나 새 하드웨어 플랫폼 예제가 리소스가 제한된 경우 소스 주소 테이블은 길이가 0으로 정의될 수 있습니다. 참조 자동 프레임 보류 자세한 내용은.

기타/재설정

API 선언:

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

Misc/Reset API는 칩의 소프트웨어를 재설정하고 마지막 재설정 이유를 쿼리하는 방법을 제공합니다.

엔트로피

API 선언:

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

Entropy API는 상위 계층을 위한 진정한 난수 생성기(TRNG)를 제공하며, 이는 전체 OpenThread 네트워크에 대한 보안 자산을 ​​유지하는 데 사용됩니다. API는 각 함수 호출에 대해 새로운 난수가 생성되도록 보장해야 합니다. TRNG의 영향을 받는 보안 자산은 다음과 같습니다.

  • AES CCM 논스
  • 무작위 지연 지터
  • 기기의 확장 주소
  • 트리클 타이머의 초기 임의 기간
  • CoAP 토큰/메시지 ID

많은 플랫폼이 이미 난수 생성기를 통합하여 BSP 패키지에 API를 노출하고 있습니다. 대상 하드웨어 플랫폼이 TRNG를 지원하지 않는 경우 ADC 모듈 샘플링을 활용하여 고정 길이 난수를 생성하는 것을 고려하십시오. TRNG 요구 사항(uint32_t)을 충족하기 위해 필요한 경우 여러 번 반복하여 샘플링합니다.

매크로 경우 MBEDTLS_ENTROPY_HARDWARE_ALT 설정되는 1 ,이 API는 또한 mbedTLS 라이브러리에 사용되는 하드웨어의 엔트로피를 생성하는 방법을 제공한다.

비휘발성 저장소

API 선언:

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

또는

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

비휘발성 저장소 요구 사항은 위에 나열된 두 API 중 하나를 구현하여 충족할 수 있습니다. Flash API는 플래시 스토리지 드라이버를 구현하는 반면 설정 API는 기본 플래시 작업 구현을 위한 기능을 상위 계층에 제공합니다.

이러한 API는 상위 계층에 노출됩니다.

  • 응용 프로그램 데이터를 저장하는 데 사용되는 사용 가능한 비휘발성 저장소 크기(예: 활성/보류 중인 운영 데이터 세트, 현재 네트워크 매개변수 및 재설정 후 재연결을 위한 스레드 장치의 자격 증명)
  • 플래시 상태 작업 읽기, 쓰기, 지우기 및 쿼리

사용 OPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE 플랫폼 예제의 핵심 설정 파일은 플랫폼을 사용해야하는 API 나타냅니다. 로 설정하면 1 , 플래시 API를 구현해야합니다. 그렇지 않으면 설정 API를 구현해야 합니다.

이 플래그는 사용자의 설정해야합니다 /openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.h 파일.

벌채 반출

API 선언:

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

Logging API는 여러 수준의 디버그 출력을 사용할 수 있는 OpenThread의 로깅 및 디버그 기능을 구현합니다. 이 API는 새 하드웨어 플랫폼 예제에서 OpenThread의 로깅을 활용하지 않으려는 경우 선택 사항입니다.

가장 높고 상세 레벨이다 OPENTHREAD_LOG_LEVEL_DEBG 시리얼 포트를 통해 또는 상기 단말기의 모든 원시 패킷 정보 및 기록 라인을 인쇄. 요구 사항에 가장 적합한 디버그 수준을 선택합니다.

시스템별

API 선언:

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

시스템별 API는 주로 선택한 하드웨어 플랫폼에 대한 초기화 및 초기화 해제 작업을 제공합니다. 이 API는 OpenThread 라이브러리 자체에서 호출되지 않지만 시스템/RTOS에 유용할 수 있습니다. 이 소스 파일에서 다른 모듈(예: UART, Radio, Random, Misc/Reset)의 초기화를 구현할 수도 있습니다.

이 API의 구현은 사용 사례에 따라 다릅니다. 당신이 생성 사용하려면 CLI와 NCP 애플리케이션을 에 대한 예를 플랫폼 ,이 API를 구현해야합니다. 그렇지 않으면 예제 플랫폼 드라이버를 시스템/RTOS에 통합하기 위해 모든 API를 구현할 수 있습니다.