Внедрить API-интерфейсы уровня абстракции платформы, Внедрить API-интерфейсы уровня абстракции платформы

Посмотреть исходный код на GitHub

OpenThread не зависит от ОС и платформы и имеет узкий уровень абстракции платформы (PAL). Этот PAL определяет:

Портирование архитектуры
  • Интерфейс сигнализации для автономного таймера с сигнализацией
  • Интерфейсы шины (UART, SPI) для передачи сообщений CLI и Spinel.
  • Радиоинтерфейс для связи IEEE 802.15.4-2006
  • Процедуры инициализации, специфичные для GCC
  • Энтропия для генерации настоящих случайных чисел
  • Сервис настроек для энергонезависимого хранения конфигурации
  • Интерфейс журналирования для доставки сообщений журнала OpenThread.
  • Системные процедуры инициализации

Все API должны быть реализованы на основе базового пакета поддержки сборки (BSP) уровня абстракции оборудования (HAL).

Файлы API следует размещать в следующих каталогах:

Тип Каталог
Реализация PAL для конкретной платформы /openthread/examples/platforms/ platform-name
Заголовочные файлы — API энергонезависимого хранилища /openthread/examples/platforms/utils
Все остальные файлы заголовков /openthread/include/openthread/platform
ХАЛ БСП /openthread/third_party/ platform-name

Тревога

Декларация API:

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

API сигнализации предоставляет основные службы синхронизации и сигнализации для реализации таймера верхнего уровня.

Существует два типа сигналов тревоги: миллисекундные и микросекундные . Миллисекунда необходима для новой аппаратной платформы. Микросекунда не является обязательной.

УАРТ

Декларация API:

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

UART API реализует фундаментальную связь через последовательный порт через интерфейс UART.

Хотя надстройки OpenThread CLI и NCP зависят от интерфейса UART для взаимодействия со стороной хоста, поддержка UART API не является обязательной. Однако даже если вы не планируете использовать эти надстройки на примере вашей новой аппаратной платформы, мы настоятельно рекомендуем вам добавить поддержку по нескольким причинам:

  • CLI полезен для проверки правильности работы порта.
  • Инструмент автоматизации Harness использует интерфейс UART для управления OpenThread в целях тестирования и сертификации.

Если целевая аппаратная платформа поддерживает модуль USB CDC, а не UART, обязательно:

  • Установите правильный драйвер USB CDC на стороне хоста.
  • Замените реализацию UART API драйвером USB CDC (вместе с BSP) на стороне OpenThread, используя те же прототипы функций.

Радио

Декларация API:

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

Радио API определяет все необходимые функции, вызываемые верхним уровнем MAC IEEE 802.15.4. Радиочип должен полностью соответствовать спецификации IEEE 802.15.4-2006 2,4 ГГц.

Благодаря улучшенной функции низкого энергопотребления OpenThread требует, чтобы все платформы по умолчанию реализовали автоматическую ожидание кадра (косвенную передачу), а таблица соответствия адресов источника также должна быть реализована в исходном файле radio.h .

Однако если ваш пример новой аппаратной платформы ограничен в ресурсах, таблица адресов источника может быть определена как нулевая длина. Дополнительную информацию см. в разделе «Автоматическое ожидание кадра» .

Разное/Сброс

Декларация API:

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

API Misc/Reset предоставляет метод сброса программного обеспечения на чипе и запроса причины последнего сброса.

Энтропия

Декларация API:

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

Entropy API предоставляет настоящий генератор случайных чисел (TRNG) для верхнего уровня, который используется для поддержки ресурсов безопасности для всей сети OpenThread. API должен гарантировать, что для каждого вызова функции генерируется новое случайное число. Активы безопасности, на которые влияет TRNG, включают:

  • AES CCM одноразовый
  • Случайный задержанный джиттер
  • Расширенный адрес устройства
  • Начальный случайный период в таймере капельки
  • Идентификаторы токенов/сообщений CoAP

Обратите внимание, что многие платформы уже интегрировали генератор случайных чисел, предоставляя API в пакете BSP. Если целевая аппаратная платформа не поддерживает TRNG, рассмотрите возможность использования выборки модуля АЦП для генерации случайного числа фиксированной длины. При необходимости выполните несколько итераций выборки для удовлетворения требований 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 , необходимо реализовать Flash API. В противном случае необходимо реализовать API настроек.

Этот флаг должен быть установлен в файле /openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.h .

Ведение журнала

Декларация API:

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

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. В противном случае можно реализовать любой API для интеграции примеров драйверов платформы в вашу систему/RTOS.

,

Посмотреть исходный код на GitHub

OpenThread не зависит от ОС и платформы и имеет узкий уровень абстракции платформы (PAL). Этот PAL определяет:

Портирование архитектуры
  • Интерфейс сигнализации для автономного таймера с сигнализацией
  • Интерфейсы шины (UART, SPI) для передачи сообщений CLI и Spinel.
  • Радиоинтерфейс для связи IEEE 802.15.4-2006
  • Процедуры инициализации, специфичные для GCC
  • Энтропия для генерации настоящих случайных чисел
  • Сервис настроек для энергонезависимого хранения конфигурации
  • Интерфейс журналирования для доставки сообщений журнала OpenThread.
  • Системные процедуры инициализации

Все API должны быть реализованы на основе базового пакета поддержки сборки (BSP) уровня абстракции оборудования (HAL).

Файлы API следует размещать в следующих каталогах:

Тип Каталог
Реализация PAL для конкретной платформы /openthread/examples/platforms/ platform-name
Заголовочные файлы — API энергонезависимого хранилища /openthread/examples/platforms/utils
Все остальные файлы заголовков /openthread/include/openthread/platform
ХАЛ БСП /openthread/third_party/ platform-name

Тревога

Декларация API:

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

API сигнализации предоставляет основные службы синхронизации и сигнализации для реализации таймера верхнего уровня.

Существует два типа сигналов тревоги: миллисекундные и микросекундные . Миллисекунда необходима для новой аппаратной платформы. Микросекунда не является обязательной.

УАРТ

Декларация API:

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

UART API реализует фундаментальную связь через последовательный порт через интерфейс UART.

Хотя надстройки OpenThread CLI и NCP зависят от интерфейса UART для взаимодействия со стороной хоста, поддержка UART API не является обязательной. Однако даже если вы не планируете использовать эти надстройки на примере вашей новой аппаратной платформы, мы настоятельно рекомендуем вам добавить поддержку по нескольким причинам:

  • CLI полезен для проверки правильности работы порта.
  • Инструмент автоматизации Harness использует интерфейс UART для управления OpenThread в целях тестирования и сертификации.

Если целевая аппаратная платформа поддерживает модуль USB CDC, а не UART, обязательно:

  • Установите правильный драйвер USB CDC на стороне хоста.
  • Замените реализацию UART API драйвером USB CDC (вместе с BSP) на стороне OpenThread, используя те же прототипы функций.

Радио

Декларация API:

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

Радио API определяет все необходимые функции, вызываемые верхним уровнем MAC IEEE 802.15.4. Радиочип должен полностью соответствовать спецификации IEEE 802.15.4-2006 2,4 ГГц.

Благодаря улучшенной функции низкого энергопотребления OpenThread требует, чтобы все платформы по умолчанию реализовали автоматическую ожидание кадра (косвенную передачу), а таблица соответствия адресов источника также должна быть реализована в исходном файле radio.h .

Однако если ваш пример новой аппаратной платформы ограничен в ресурсах, таблица адресов источника может быть определена как нулевая длина. Дополнительную информацию см. в разделе «Автоматическое ожидание кадра» .

Разное/Сброс

Декларация API:

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

API-интерфейс Misc/Reset предоставляет метод сброса программного обеспечения на чипе и запроса причины последнего сброса.

Энтропия

Декларация API:

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

Entropy API предоставляет настоящий генератор случайных чисел (TRNG) для верхнего уровня, который используется для поддержки ресурсов безопасности для всей сети OpenThread. API должен гарантировать, что для каждого вызова функции генерируется новое случайное число. Активы безопасности, на которые влияет TRNG, включают:

  • AES CCM одноразовый
  • Случайный задержанный джиттер
  • Расширенный адрес устройства
  • Начальный случайный период в таймере капельки
  • Идентификаторы токенов/сообщений CoAP

Обратите внимание, что многие платформы уже интегрировали генератор случайных чисел, предоставляя API в пакете BSP. Если целевая аппаратная платформа не поддерживает TRNG, рассмотрите возможность использования выборки модуля АЦП для генерации случайного числа фиксированной длины. При необходимости выполните выборку из нескольких итераций для удовлетворения требований 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 , необходимо реализовать Flash API. В противном случае необходимо реализовать API настроек.

Этот флаг должен быть установлен в файле /openthread/examples/platforms/ platform-name /openthread-core- platform-name -config.h .

Ведение журнала

Декларация API:

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

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. В противном случае можно реализовать любой API для интеграции примеров драйверов платформы в вашу систему/RTOS.