Создайте сеть потоков с помощью Texas Instruments SimpleLink F3 и OpenThread.

1. Введение

Логотип OpenThread

OpenThread (OT) от Google — это реализация Thread с открытым исходным кодом. Google выпустила OpenThread, чтобы сделать сетевую технологию, используемую в продуктах Google Nest, широко доступной для разработчиков, ускоряя разработку продуктов для «умного дома» и коммерческих зданий. Благодаря узкому уровню абстракции платформы и небольшому объему памяти, OpenThread обладает высокой переносимостью. Он поддерживает как системы на кристалле (SoC), так и сетевые сопроцессоры (NCP).

Спецификация Thread определяет надежный, безопасный и энергоэффективный протокол беспроводной связи между устройствами на основе IPv6 для использования в жилых и коммерческих зданиях.

Компания Texas Instruments реализовала OpenThread для семейства устройств SimpleLink™ CC27xx. Репозиторий ot-ti на GitHub содержит драйверы платформы и примеры приложений, необходимые для запуска OpenThread на микроконтроллерах Texas Instruments SimpleLink Connected. CC2745R10-Q1 — это беспроводной микроконтроллер автомобильного класса (соответствующий стандарту AEC-Q100), сертифицированный по протоколу Thread и работающий в семействе SimpleLink CC27xx компании TI.

В этом практическом занятии описывается, как начать разработку приложений OpenThread с использованием оценочной платы LP-EM-CC2745R10-Q1 LaunchPad и репозитория ot-ti. На изображении ниже показана аппаратная конфигурация, использованная в этом практическом занятии, с маршрутизатором OT Border Router (OTBR) и двумя устройствами Thread Full Thread Devices (FTD).

Настройка оборудования CC2745R10

Что вы узнаете

  • Как настроить среду сборки Texas Instruments ot-ti.
  • Как собрать и прошить бинарные файлы OpenThread CLI на платы LP-EM-CC2745R10-Q1.
  • Как настроить Raspberry Pi в качестве пограничного маршрутизатора OpenThread (OTBR) с использованием ot-br-posix.
  • Как создать сеть потоков на OTBR.
  • Внеполосная настройка устройств для подключения к сети Thread.
  • Как проверить обмен данными между узлами с помощью команды ping.

2. Предварительные требования

Аппаратное обеспечение

  1. Три платы LaunchPad LP-EM-CC2745R10-Q1 : одна сконфигурирована как RCP, подключенная к пограничному маршрутизатору, и две сконфигурированы как полнопоточные устройства (FTD).LP-EM-CC2745R10-Q1 Вид под углом CC2745R10-Q1 — это микроконтроллер автомобильного класса (соответствующий стандарту AEC-Q100), сертифицированный по протоколу Thread стандарта IEEE 802.15.4, входящий в семейство SimpleLink CC27xx компании TI. LP-EM-CC2745R10-Q1 — это соответствующий оценочный модуль LaunchPad, поддерживающий роли потоков RCP, FTD, MTD и NCP. CC2340R5 с модулем LaunchPad LP-EM-CC2340R5 — это вариант с меньшим объемом памяти, который может использоваться только в качестве RCP. Он не поддерживает роли FTD, MTD или NCP. Если вы замените плату 1 (RCP) на LP-EM-CC2340R5, то две платы FTD по-прежнему должны быть LP-EM-CC2745R10-Q1.
  2. 3 отладочных зонда LP-XDS110ET : по одному на каждую плату LaunchPad, используются для программирования и отладки через USB.LP-XDS110ET Вид под углом LP-XDS110ET — это отдельный USB-отладочный зонд, необходимый для плат LaunchPad в форм-факторе LP-EM. Он поддерживает EnergyTrace для профилирования энергопотребления. LP-XDS110 — это более дешевая альтернатива, обеспечивающая те же возможности программирования и отладки, но не включающая EnergyTrace. В качестве дополнительной альтернативы, вместо платы LP-EM и отдельного отладочного зонда можно использовать плату LaunchPad со встроенным отладочным зондом XDS110 (например, LAUNCHXL-CC26X2R1). Подробности см. в руководстве по подключению отладочной платы LaunchPad .
  3. Три кабеля micro-USB для подключения и питания плат LaunchPad и отладочных зондов.
  4. Для работы потребуется Raspberry Pi 4B или более поздняя версия с операционной системой Raspberry Pi OS, подключенная к интернету по Ethernet. Она будет настроена как хост OT Border Router.Raspberry Pi 4
  5. Для работы требуется хост-система Linux или macOS с как минимум двумя портами USB и доступом в интернет. Для среды сборки необходима оболочка, совместимая с Bash. Пользователям Windows следует использовать WSL2 (Windows Subsystem for Linux 2) с Ubuntu.
  6. Для подключения Raspberry Pi к интернету потребуется как минимум один кабель Ethernet . В качестве альтернативы можно подключить Raspberry Pi к Wi-Fi и использовать wlan0 в качестве интерфейса инфраструктуры — подробности см. в шаге настройки OTBR.

Программное обеспечение

  • Репозиторий TI ot-ti : https://github.com/TexasInstruments/ot-ti.
  • GNU ARM Embedded Toolchain 12.2 (устанавливается автоматически скриптом загрузки)
  • SysConfig 1.27.0 (устанавливается автоматически скриптом загрузки)
  • TI UniFlash : для прошивки микропрограмм на платы LaunchPad.

3. Настройка оборудования

В этой практической работе используются три платы LP-EM-CC2745R10-Q1:

  • Плата 1 (RCP): работает под управлением прошивки ot-rcp . Подключена к Raspberry Pi через USB в качестве радиосопроцессора для пограничного маршрутизатора.
  • Плата 2 (FTD 1): запускает прошивку ot-cli-ftd как полнопоточное устройство.
  • Плата 3 (FTD 2): запускает прошивку ot-cli-ftd как полнопоточное устройство.

LP-EM-CC2745R10-Q1 Вид сверху

Подключите каждый LaunchPad к компьютеру через micro-USB. USB-соединение обеспечивает как питание, так и возможность отладки/программирования через встроенный отладочный зонд XDS110.

Каждый модуль LP-EM-CC2745R10-Q1 отображается как два виртуальных последовательных порта при подключении через USB: один для отладочного интерфейса XDS110 и один для UART приложения. При открытии последовательной консоли подключайтесь к порту UART приложения/пользователя , а не к порту вспомогательных данных.

Схема подключения оборудования

4. Настройка и сборка репозитория

Система сборки ot-ti использует CMake и требует наличия оболочки Bash. Все команды в этом разделе выполняются на хосте Linux или macOS (или WSL2 в Windows).

1. Клонируйте репозиторий.

$ git clone https://github.com/TexasInstruments/ot-ti.git
$ cd ot-ti
$ git submodule update --init

2. Запустите скрипт начальной загрузки.

Скрипт начальной загрузки устанавливает необходимые зависимости, включая набор инструментов GNU ARM и SysConfig:

$ ./script/bootstrap

Для запуска скрипта требуются cmake , git , wget и стандартные инструменты сборки. В Ubuntu/Debian установите необходимые компоненты с помощью команды: sudo apt-get install -y cmake git make wget tar ninja-build

3. Сборка прошивки для LP_EM_CC2745R10_Q1

Соберите все образы прошивки для платы LP-EM-CC2745R10-Q1:

$ ./script/build LP_EM_CC2745R10_Q1

Целевая платформа сборки LP_EM_CC2745R10_Q1 соответствует устройству CC2745R10-Q1 из семейства CC27xx SimpleLink (ядро Arm Cortex-M33F). Чтобы увидеть все поддерживаемые платы, запустите ./script/build без аргументов.

После успешной сборки ELF-файлы находятся в build/bin/ :

$ ls build/bin/
ot-cli-ftd.out  ot-cli-mtd.out  ot-ncp-ftd.out  ot-rcp.out

В этом практическом занятии использовались два изображения:

  • ot-rcp.out : Прошивка радиопроцессора для платы пограничного маршрутизатора.
  • ot-cli-ftd.out : Прошивка командной строки для двух плат FTD, поддерживающая полнопоточный режим работы устройства.

Дополнительное минимальное устройство потоков: Если вы хотите изучить спящее конечное устройство вместо устройства с полным набором потоков, вы можете прошить ot-cli-mtd.out вместо ot-cli-ftd.out на платах 2 и 3. Устройство с минимальным набором потоков не маршрутизирует трафик потоков и может переходить в режимы сна с низким энергопотреблением, что делает его хорошо подходящим для приложений с питанием от батареи. Шаги по формированию сети потоков в этом практическом руководстве одинаковы для обоих типов устройств.

Дополнительный сетевой сопроцессор (NCP): бинарный файл ot-ncp-ftd.out реализует архитектуру NCP, где стек OpenThread работает на устройстве, а хост-процессор управляет им через протокол Spinel. Использование NCP выходит за рамки данного практического занятия; подробности см. в файле README, посвященном NCP .

5. Прошивка

Используйте TI UniFlash для прошивки образов ELF на платы LaunchPad.

Прошивка с помощью UniFlash

  1. Откройте UniFlash. Подключенные платы LaunchPad отображаются в разделе «Обнаруженные устройства» благодаря функции автоматического определения устройств. Если ваша плата не обнаружена автоматически, нажмите «Новая конфигурация» , выберите целевое устройство LP-EM-CC2745R10-Q1 и выберите отладочный USB-зонд XDS110. Устройства, обнаруженные UniFlash
  2. Выберите плату 1 (для прошивки которой будет использован файл ot-rcp.out ) и нажмите «Старт» .
  3. Нажмите кнопку «Обзор» и перейдите к ot-ti/build/bin/ot-rcp.out .Страница UniFlash Flash
  4. Нажмите «Загрузить образ» , чтобы прошить микропрограмму. В области журнала отображается ход выполнения и подтверждается завершение процесса.
  5. Повторите шаги 2–4 для платы 2 и платы 3 , выбрав для каждой из них ot-ti/build/bin/ot-cli-ftd.out .

Альтернативный вариант: использование Flash с помощью Code Composer Studio (CCS).

Code Composer Studio можно использовать в качестве альтернативы UniFlash, и, кроме того, он предоставляет полноценную среду отладки:

  1. Скачайте и установите Code Composer Studio .
  2. Создайте целевое соединение (CCXML) для LP-EM-CC2745R10-Q1 с помощью отладчика XDS110. См. Руководство пользователя CCS: Ручной метод .
  3. Запустите сеанс отладки без использования проекта, как описано в Руководстве пользователя CCS: Ручной запуск .
  4. Подключитесь к ядру Arm Cortex-M33 и нажмите кнопку «Загрузить» , чтобы загрузить образ ELF.

В конфигурации CCXML по умолчанию используется 2-проводной cJTAG, соответствующий конфигурации перемычек LP-EM-CC2745R10-Q1 по умолчанию. После программирования через JTAG перезагрузите плату, чтобы сбросить флаг остановки при загрузке.

6. Запрограммируйте HSM.

Плата CC2745R10-Q1 содержит аппаратный модуль безопасности (HSM), который необходимо активировать перед запуском Thread или другого защищенного приложения. Если на вашей плате LP-EM-CC2745R10-Q1 еще не запрограммирован HSM, выполните этот шаг сейчас.

Для программирования HSM с помощью UniFlash:

  1. Откройте UniFlash и выберите свою плату LP-EM-CC2745R10-Q1 в списке обнаруженных устройств .
  2. Перейдите в панель программирования HSM и загрузите образ прошивки HSM, как показано ниже.

Программирование UniFlash HSM

  1. Следуйте инструкциям на экране, чтобы завершить настройку HSM. Операция будет зарегистрирована в консоли вывода UniFlash.

Для получения полной информации о процедуре программирования HSM, включая необходимый путь к образу микропрограммы в комплекте SimpleLink Low Power F3 SDK, обратитесь к краткому руководству по началу работы с CC2745R10-Q1 в TI Resource Explorer.

7. Сводка по прошивке

На этом этапе необходимо прошить все три платы:

  • Плата 1: ot-rcp.out : Отключитесь от компьютера и подключитесь к Raspberry Pi через USB.
  • Плата 2: ot-cli-ftd.out : Поддерживайте соединение с главным компьютером.
  • Плата 3: ot-cli-ftd.out : Поддерживайте соединение с главным компьютером.

Ваша аппаратная конфигурация будет выглядеть так, как показано на схеме ниже. Плата 1 подключается к Raspberry Pi в качестве радиосопроцессора для OTBR, а платы 2 и 3 остаются подключенными к хост-компьютеру для доступа к последовательной консоли.

Настройка оборудования CC2745R10 с использованием FTD

8. Настройка последовательной консоли для устройств ot-cli-ftd.

Микросхема LP-EM-CC2745R10-Q1 предоставляет доступ к UART-интерфейсу приложения через USB со скоростью 921600 бод .

Откройте последовательный терминал, подключившись к COM-порту UART приложения (Windows) или устройству /dev/ttyACM* (Linux/macOS) для каждой платы FTD, используя следующие настройки:

Параметр

Ценить

Скорость (бод)

921600

Биты данных

8

Стоп-биты

1

Паритет

None

Регулирование потока

None

Совет (Linux/macOS): Чтобы определить правильный узел устройства, выполните команду ls /dev/ttyACM* до и после подключения платы и обратите внимание на то, какая запись отображается. Каждая плата LP-EM-CC2745R10-Q1 создает две записи: порт с меньшим номером — это отладочный UART XDS110, а порт с большим номером — это UART приложения. Например, если плата создает записи /dev/ttyACM0 и /dev/ttyACM1 , используйте /dev/ttyACM1 .

Совет (Windows): Откройте Диспетчер устройств и в разделе «Порты (COM и LPT)» найдите два новых COM-порта, когда плата подключена. Обычно первым отображается отладочный порт данных XDS110; для консоли приложений используйте второй (с большим номером) COM-порт.

Нажмите Enter в терминале, чтобы получить приглашение командной строки OpenThread ( > ). Полный список доступных команд см. в справочнике командной строки OpenThread . Убедитесь, что FTD работает:

> state
disabled
Done

Последовательный терминал FTD

Вам пока не нужно будет настраивать последовательную консоль для платы RCP. OTBR на Raspberry Pi взаимодействует с RCP напрямую. На следующем шаге вы настроите Raspberry Pi в качестве пограничного маршрутизатора OpenThread.

9. Настройте Raspberry Pi в качестве пограничного маршрутизатора.

OTBR создан на основе ot-br-posix , проекта OpenThread Border Router с открытым исходным кодом. Border Router работает на Raspberry Pi и использует плату 1 (RCP) в качестве радиомодуля 802.15.4 через USB.

Настройка Raspberry Pi

  1. Прошейте операционную систему Raspberry Pi OS (64-битную версию Lite или Desktop) на SD-карту с помощью Raspberry Pi Imager .
  2. Включите Raspberry Pi и откройте терминал (через SSH или напрямую).
  3. Обновите менеджер пакетов и выполните обновление установленных пакетов:
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

Перед продолжением перезагрузите Raspberry Pi после обновления: sudo reboot

Подключите плату 1 (RCP) к Raspberry Pi.

Подключите плату 1 (с прошивкой ot-rcp ) к Raspberry Pi через micro-USB. После подключения убедитесь, что узел устройства отображается:

$ ls /dev/ttyACM*
/dev/ttyACM0
/dev/ttyACM1

Обычно UART приложения на плате RCP — это /dev/ttyACM1 (UART отладки XDS110 — это /dev/ttyACM0 ). Проверьте, какой порт является UART приложения, убедившись, что он отвечает при запуске агента OTBR на более позднем этапе. Если подключены другие последовательные USB-устройства, номер узла устройства может отличаться. Соответственно скорректируйте путь в конфигурации OTBR.

Сборка и установка ot-br-posix

На Raspberry Pi клонируйте и соберите ot-br-posix:

$ git clone https://github.com/openthread/ot-br-posix.git
$ cd ot-br-posix
$ ./script/bootstrap

Запустите скрипт настройки, указав свой Ethernet-интерфейс в качестве магистрального (инфраструктурного) интерфейса:

$ INFRA_IF_NAME=eth0 ./script/setup

eth0 — это стандартное имя для проводного Ethernet-интерфейса. Если вы подключаете Raspberry Pi через Wi-Fi вместо Ethernet, замените eth0 на wlan0 (и убедитесь, что Pi уже подключен к вашей сети Wi-Fi). Проверьте имя активного интерфейса с помощью ip link show .

Скрипт установки собирает ot-br-posix из исходного кода, устанавливает системные службы otbr-agent и otbr-web , а также настраивает сетевой стек. Этот процесс обычно занимает 10–20 минут на Raspberry Pi 4B.

Настройте агент OTBR.

Отредактируйте файл конфигурации агента OTBR, чтобы указать путь к устройству RCP и скорость передачи данных:

$ sudo nano /etc/default/otbr-agent

Найдите строку OTBR_AGENT_OPTS и обновите её, указав ссылку на UART приложения RCP:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

Замените eth0 на wlan0 , если ваш Raspberry Pi подключен через Wi-Fi.

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

Интерфейс UART приложения LP-EM-CC2745R10-Q1 RCP работает на скорости 921600 бод . Убедитесь, что путь к устройству (в этом примере /dev/ttyACM1 ) соответствует интерфейсу UART приложения вашей платы RCP.

Перезапустите агент OTBR, чтобы применить конфигурацию:

$ sudo systemctl restart otbr-agent
$ sudo systemctl enable otbr-agent

Убедитесь, что агент запущен:

$ sudo systemctl status otbr-agent

Взаимодействие с узлом RCP

Для связи с узлом RCP используйте инструмент ot-ctl :

$ sudo ot-ctl state
disabled
Done

Вы можете отслеживать журнал агента OTBR на предмет сообщений о подключении и состоянии:

$ sudo journalctl -u otbr-agent -f

При желании веб-интерфейс OTBR доступен по адресу http:// :80 и предоставляет графическое представление сети Thread.

Чтобы остановить или перезапустить агент OTBR:

$ sudo systemctl stop otbr-agent
$ sudo systemctl start otbr-agent

На этом этапе у вас должно быть три активных консоли:

  1. Последовательный терминал для платы 2 ( ot-cli-ftd 1 ) на главном компьютере.
  2. Последовательный терминал для платы 3 ( ot-cli-ftd 2 ) на главном компьютере.
  3. Для работы ot-ctl (OTBR/RCP) используйте SSH или терминальную сессию на Raspberry Pi.

Теперь вы готовы сформировать сеть Thread.

10. Создайте сеть потоков.

Настройка RCP (OTBR)

Создайте новую сеть Thread из командной оболочки ot-ctl на Raspberry Pi. Введите следующие команды в указанном порядке:

Индекс

Командование

Описание

Ожидаемый ответ

1

dataset init new

Создайте новую конфигурацию сети.

Сделанный

2

dataset commit active

Зафиксируйте новый набор данных в активном операционном наборе данных.

Сделанный

3

ifconfig up

Включить интерфейс потоков.

Сделанный

4

thread start

Включить и подключить работу по протоколу Thread.

Сделанный

Подождите 10 секунд, пока не появится интерфейс Thread.

5

state

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

лидер
Сделанный

6

dataset

Просмотрите конфигурацию сети. Ваши значения будут отличаться. Запишите номер канала, сетевой ключ, имя сети и идентификатор PAN — они необходимы для подключения FTD к сети.

Временная метка активности: 1
Канал: 20
Маска канала: 0x07fff800
Идентификатор PAN: 39ba71f7fc367160
Локальный префикс сетки: fd5c:c6b:3a17:40b9::/64
Сетевой ключ: 81ae2c2c17368d585dee71eaa8cf1e90
Название сети: OpenThread-008c
ИНН: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Политика безопасности: 0, onrcb
Сделанный

Добавление FTD в сеть потоков (внеполосный метод)

При использовании метода внеполосной настройки вы напрямую указываете сетевые учетные данные. В последовательном терминале каждой платы FTD введите следующие команды, используя ключ канала и сети из выходных данных набора данных OTBR, приведенных выше:

Индекс

Командование

Описание

Ожидаемый ответ

1

dataset channel 20

Установите канал в соответствии с OTBR. Замените 20 на значение канала вашего OTBR.

Сделанный

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Установите сетевой ключ. Замените на сетевой ключ вашего OTBR. Для подключения требуется только этот ключ.

Сделанный

3

dataset commit active

Зафиксируйте новый набор данных в активном операционном наборе данных.

Сделанный

4

ifconfig up

Включить интерфейс потоков.

Сделанный

5

thread start

Включить и подключить работу по протоколу Thread.

Сделанный

Подождите 20 секунд, пока устройство подключится и настроится.

6

state

Проверьте состояние устройства.

ребенок
Сделанный

Ввиду самоконфигурирующейся природы сетей Thread и того, что это устройства Full Thread Devices (FTD), одно или оба устройства FTD могут в конечном итоге стать маршрутизаторами. Вы можете в любое время проверить текущую роль с помощью команды state .

Взаимодействие между нитевидными устройствами

Используйте команду ping , чтобы убедиться, что устройства могут взаимодействовать. Получите IPv6-адреса каждого устройства с помощью ipaddr :

> ipaddr
fd5c:c6b:3a17:40b9:0:ff:fe00:fc00		# Leader Anycast Locator (ALOC)
fd5c:c6b:3a17:40b9:0:ff:fe00:1800		# Routing Locator (RLOC)
fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03		# Mesh-Local EID (ML-EID)
fe80:0:0:0:c449:ca4a:101f:5d16			# Link-Local Address (LLA)
Done

С обоих FTD выполните пинг OTBR, используя его RLOC-адрес:

> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800
Done
>
> 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms
16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms

Успешный ответ подтверждает, что сеть Thread работает и устройства могут взаимодействовать. Повторите процесс, чтобы проверить связь с каждым FTD с OTBR ( sudo ot-ctl ping ).

11. Поздравляем!

Вы создали сеть Thread с платами TI CC2745R10-Q1!

Теперь вы знаете:

  • Как настроить среду сборки Texas Instruments ot-ti.
  • Как собрать и прошить бинарные файлы OpenThread CLI на плату LaunchPad LP-EM-CC2745R10-Q1.
  • Как настроить Raspberry Pi в качестве пограничного маршрутизатора OpenThread (OTBR) с использованием ot-br-posix.
  • Как создать сеть потоков на OTBR.
  • Внеполосная настройка устройств для подключения к сети Thread.
  • Как проверить обмен данными между узлами с помощью команды ping.

Дополнительная литература

Посетите openthread.io и GitHub , чтобы найти множество ресурсов по OpenThread, в том числе:

,

1. Введение

Логотип OpenThread

OpenThread (OT) от Google — это реализация Thread с открытым исходным кодом. Google выпустила OpenThread, чтобы сделать сетевую технологию, используемую в продуктах Google Nest, широко доступной для разработчиков, ускоряя разработку продуктов для «умного дома» и коммерческих зданий. Благодаря узкому уровню абстракции платформы и небольшому объему памяти, OpenThread обладает высокой переносимостью. Он поддерживает как системы на кристалле (SoC), так и сетевые сопроцессоры (NCP).

Спецификация Thread определяет надежный, безопасный и энергоэффективный протокол беспроводной связи между устройствами на основе IPv6 для использования в жилых и коммерческих зданиях.

Компания Texas Instruments реализовала OpenThread для семейства устройств SimpleLink™ CC27xx. Репозиторий ot-ti на GitHub содержит драйверы платформы и примеры приложений, необходимые для запуска OpenThread на микроконтроллерах Texas Instruments SimpleLink Connected. CC2745R10-Q1 — это беспроводной микроконтроллер автомобильного класса (соответствующий стандарту AEC-Q100), сертифицированный по протоколу Thread и работающий в семействе SimpleLink CC27xx компании TI.

В этом практическом занятии описывается, как начать разработку приложений OpenThread с использованием оценочной платы LP-EM-CC2745R10-Q1 LaunchPad и репозитория ot-ti. На изображении ниже показана аппаратная конфигурация, использованная в этом практическом занятии, с маршрутизатором OT Border Router (OTBR) и двумя устройствами Thread Full Thread Devices (FTD).

Настройка оборудования CC2745R10

Что вы узнаете

  • Как настроить среду сборки Texas Instruments ot-ti.
  • Как собрать и прошить бинарные файлы OpenThread CLI на платы LP-EM-CC2745R10-Q1.
  • Как настроить Raspberry Pi в качестве пограничного маршрутизатора OpenThread (OTBR) с использованием ot-br-posix.
  • Как создать сеть потоков на OTBR.
  • Внеполосная настройка устройств для подключения к сети Thread.
  • Как проверить обмен данными между узлами с помощью команды ping.

2. Предварительные требования

Аппаратное обеспечение

  1. Три платы LaunchPad LP-EM-CC2745R10-Q1 : одна сконфигурирована как RCP, подключенная к пограничному маршрутизатору, и две сконфигурированы как полнопоточные устройства (FTD).LP-EM-CC2745R10-Q1 Вид под углом CC2745R10-Q1 — это микроконтроллер автомобильного класса (соответствующий стандарту AEC-Q100), сертифицированный по протоколу Thread стандарта IEEE 802.15.4, входящий в семейство SimpleLink CC27xx компании TI. LP-EM-CC2745R10-Q1 — это соответствующий оценочный модуль LaunchPad, поддерживающий роли потоков RCP, FTD, MTD и NCP. CC2340R5 с модулем LaunchPad LP-EM-CC2340R5 — это вариант с меньшим объемом памяти, который может использоваться только в качестве RCP. Он не поддерживает роли FTD, MTD или NCP. Если вы замените плату 1 (RCP) на LP-EM-CC2340R5, то две платы FTD по-прежнему должны быть LP-EM-CC2745R10-Q1.
  2. 3 отладочных зонда LP-XDS110ET : по одному на каждую плату LaunchPad, используются для программирования и отладки через USB.LP-XDS110ET Вид под углом LP-XDS110ET — это отдельный USB-отладочный зонд, необходимый для плат LaunchPad в форм-факторе LP-EM. Он поддерживает EnergyTrace для профилирования энергопотребления. LP-XDS110 — это более дешевая альтернатива, обеспечивающая те же возможности программирования и отладки, но не включающая EnergyTrace. В качестве дополнительной альтернативы, вместо платы LP-EM и отдельного отладочного зонда можно использовать плату LaunchPad со встроенным отладочным зондом XDS110 (например, LAUNCHXL-CC26X2R1). Подробности см. в руководстве по подключению отладочной платы LaunchPad .
  3. Три кабеля micro-USB для подключения и питания плат LaunchPad и отладочных зондов.
  4. Для работы потребуется Raspberry Pi 4B или более поздняя версия с операционной системой Raspberry Pi OS, подключенная к интернету по Ethernet. Она будет настроена как хост OT Border Router.Raspberry Pi 4
  5. Для работы требуется хост-система Linux или macOS с как минимум двумя портами USB и доступом в интернет. Для среды сборки необходима оболочка, совместимая с Bash. Пользователям Windows следует использовать WSL2 (Windows Subsystem for Linux 2) с Ubuntu.
  6. Для подключения Raspberry Pi к интернету потребуется как минимум один кабель Ethernet . В качестве альтернативы можно подключить Raspberry Pi к Wi-Fi и использовать wlan0 в качестве интерфейса инфраструктуры — подробности см. в шаге настройки OTBR.

Программное обеспечение

  • Репозиторий TI ot-ti : https://github.com/TexasInstruments/ot-ti.
  • GNU ARM Embedded Toolchain 12.2 (устанавливается автоматически скриптом загрузки)
  • SysConfig 1.27.0 (устанавливается автоматически скриптом загрузки)
  • TI UniFlash : для прошивки микропрограмм на платы LaunchPad.

3. Настройка оборудования

В этой практической работе используются три платы LP-EM-CC2745R10-Q1:

  • Плата 1 (RCP): работает под управлением прошивки ot-rcp . Подключена к Raspberry Pi через USB в качестве радиосопроцессора для пограничного маршрутизатора.
  • Плата 2 (FTD 1): запускает прошивку ot-cli-ftd как полнопоточное устройство.
  • Плата 3 (FTD 2): запускает прошивку ot-cli-ftd как полнопоточное устройство.

LP-EM-CC2745R10-Q1 Вид сверху

Подключите каждый LaunchPad к компьютеру через micro-USB. USB-соединение обеспечивает как питание, так и возможность отладки/программирования через встроенный отладочный зонд XDS110.

Каждый модуль LP-EM-CC2745R10-Q1 отображается как два виртуальных последовательных порта при подключении через USB: один для отладочного интерфейса XDS110 и один для UART приложения. При открытии последовательной консоли подключайтесь к порту UART приложения/пользователя , а не к порту вспомогательных данных.

Схема подключения оборудования

4. Настройка и сборка репозитория

Система сборки ot-ti использует CMake и требует наличия оболочки Bash. Все команды в этом разделе выполняются на хосте Linux или macOS (или WSL2 в Windows).

1. Клонируйте репозиторий.

$ git clone https://github.com/TexasInstruments/ot-ti.git
$ cd ot-ti
$ git submodule update --init

2. Запустите скрипт начальной загрузки.

Скрипт начальной загрузки устанавливает необходимые зависимости, включая набор инструментов GNU ARM и SysConfig:

$ ./script/bootstrap

Для запуска скрипта требуются cmake , git , wget и стандартные инструменты сборки. В Ubuntu/Debian установите необходимые компоненты с помощью команды: sudo apt-get install -y cmake git make wget tar ninja-build

3. Сборка прошивки для LP_EM_CC2745R10_Q1

Соберите все образы прошивки для платы LP-EM-CC2745R10-Q1:

$ ./script/build LP_EM_CC2745R10_Q1

Целевая платформа сборки LP_EM_CC2745R10_Q1 соответствует устройству CC2745R10-Q1 из семейства CC27xx SimpleLink (ядро Arm Cortex-M33F). Чтобы увидеть все поддерживаемые платы, запустите ./script/build без аргументов.

После успешной сборки ELF-файлы находятся в build/bin/ :

$ ls build/bin/
ot-cli-ftd.out  ot-cli-mtd.out  ot-ncp-ftd.out  ot-rcp.out

В этом практическом занятии использовались два изображения:

  • ot-rcp.out : Прошивка радиопроцессора для платы пограничного маршрутизатора.
  • ot-cli-ftd.out : Прошивка командной строки для двух плат FTD, поддерживающая полнопоточный режим работы устройства.

Дополнительное минимальное устройство потоков: Если вы хотите изучить спящее конечное устройство вместо устройства с полным набором потоков, вы можете прошить ot-cli-mtd.out вместо ot-cli-ftd.out на платах 2 и 3. Устройство с минимальным набором потоков не маршрутизирует трафик потоков и может переходить в режимы сна с низким энергопотреблением, что делает его хорошо подходящим для приложений с питанием от батареи. Шаги по формированию сети потоков в этом практическом руководстве одинаковы для обоих типов устройств.

Дополнительный сетевой сопроцессор (NCP): бинарный файл ot-ncp-ftd.out реализует архитектуру NCP, где стек OpenThread работает на устройстве, а хост-процессор управляет им через протокол Spinel. Использование NCP выходит за рамки данного практического занятия; подробности см. в файле README, посвященном NCP .

5. Прошивка

Используйте TI UniFlash для прошивки образов ELF на платы LaunchPad.

Прошивка с помощью UniFlash

  1. Откройте UniFlash. Подключенные платы LaunchPad отображаются в разделе «Обнаруженные устройства» благодаря функции автоматического определения устройств. Если ваша плата не обнаружена автоматически, нажмите «Новая конфигурация» , выберите целевое устройство LP-EM-CC2745R10-Q1 и выберите отладочный USB-зонд XDS110. Устройства, обнаруженные UniFlash
  2. Выберите плату 1 (для прошивки которой будет использован файл ot-rcp.out ) и нажмите «Старт» .
  3. Нажмите кнопку «Обзор» и перейдите к ot-ti/build/bin/ot-rcp.out .Страница UniFlash Flash
  4. Нажмите «Загрузить образ» , чтобы прошить микропрограмму. В области журнала отображается ход выполнения и подтверждается завершение процесса.
  5. Повторите шаги 2–4 для платы 2 и платы 3 , выбрав для каждой из них ot-ti/build/bin/ot-cli-ftd.out .

Альтернативный вариант: использование Flash с помощью Code Composer Studio (CCS).

Code Composer Studio можно использовать в качестве альтернативы UniFlash, и, кроме того, он предоставляет полноценную среду отладки:

  1. Скачайте и установите Code Composer Studio .
  2. Создайте целевое соединение (CCXML) для LP-EM-CC2745R10-Q1 с помощью отладчика XDS110. См. Руководство пользователя CCS: Ручной метод .
  3. Запустите сеанс отладки без использования проекта, как описано в Руководстве пользователя CCS: Ручной запуск .
  4. Подключитесь к ядру Arm Cortex-M33 и нажмите кнопку «Загрузить» , чтобы загрузить образ ELF.

В конфигурации CCXML по умолчанию используется 2-проводной cJTAG, соответствующий конфигурации перемычек LP-EM-CC2745R10-Q1 по умолчанию. После программирования через JTAG перезагрузите плату, чтобы сбросить флаг остановки при загрузке.

6. Запрограммируйте HSM.

Плата CC2745R10-Q1 содержит аппаратный модуль безопасности (HSM), который необходимо активировать перед запуском Thread или другого защищенного приложения. Если на вашей плате LP-EM-CC2745R10-Q1 еще не запрограммирован HSM, выполните этот шаг сейчас.

Для программирования HSM с помощью UniFlash:

  1. Откройте UniFlash и выберите свою плату LP-EM-CC2745R10-Q1 в списке обнаруженных устройств .
  2. Перейдите в панель программирования HSM и загрузите образ прошивки HSM, как показано ниже.

Программирование UniFlash HSM

  1. Следуйте инструкциям на экране, чтобы завершить настройку HSM. Операция будет зарегистрирована в консоли вывода UniFlash.

Для получения полной информации о процедуре программирования HSM, включая необходимый путь к образу микропрограммы в комплекте SimpleLink Low Power F3 SDK, обратитесь к краткому руководству по началу работы с CC2745R10-Q1 в TI Resource Explorer.

7. Сводка по прошивке

На этом этапе необходимо прошить все три платы:

  • Плата 1: ot-rcp.out : Отключитесь от компьютера и подключитесь к Raspberry Pi через USB.
  • Плата 2: ot-cli-ftd.out : Поддерживайте соединение с главным компьютером.
  • Плата 3: ot-cli-ftd.out : Поддерживайте соединение с главным компьютером.

Ваша аппаратная конфигурация будет выглядеть так, как показано на схеме ниже. Плата 1 подключается к Raspberry Pi в качестве радиосопроцессора для OTBR, а платы 2 и 3 остаются подключенными к хост-компьютеру для доступа к последовательной консоли.

Настройка оборудования CC2745R10 с использованием FTD

8. Настройка последовательной консоли для устройств ot-cli-ftd.

Микросхема LP-EM-CC2745R10-Q1 предоставляет доступ к UART-интерфейсу приложения через USB со скоростью 921600 бод .

Откройте последовательный терминал, подключившись к COM-порту UART приложения (Windows) или устройству /dev/ttyACM* (Linux/macOS) для каждой платы FTD, используя следующие настройки:

Параметр

Ценить

Скорость (бод)

921600

Биты данных

8

Стоп-биты

1

Паритет

None

Регулирование потока

None

Совет (Linux/macOS): Чтобы определить правильный узел устройства, выполните команду ls /dev/ttyACM* до и после подключения платы и обратите внимание на то, какая запись отображается. Каждая плата LP-EM-CC2745R10-Q1 создает две записи: порт с меньшим номером — это отладочный UART XDS110, а порт с большим номером — это UART приложения. Например, если плата создает записи /dev/ttyACM0 и /dev/ttyACM1 , используйте /dev/ttyACM1 .

Совет (Windows): Откройте Диспетчер устройств и в разделе «Порты (COM и LPT)» найдите два новых COM-порта, когда плата подключена. Обычно первым отображается отладочный порт данных XDS110; для консоли приложений используйте второй (с большим номером) COM-порт.

Нажмите Enter в терминале, чтобы получить приглашение командной строки OpenThread ( > ). Полный список доступных команд см. в справочнике командной строки OpenThread . Убедитесь, что FTD работает:

> state
disabled
Done

Последовательный терминал FTD

Вам пока не нужно будет настраивать последовательную консоль для платы RCP. OTBR на Raspberry Pi взаимодействует с RCP напрямую. На следующем шаге вы настроите Raspberry Pi в качестве пограничного маршрутизатора OpenThread.

9. Настройте Raspberry Pi в качестве пограничного маршрутизатора.

OTBR создан на основе ot-br-posix , проекта OpenThread Border Router с открытым исходным кодом. Border Router работает на Raspberry Pi и использует плату 1 (RCP) в качестве радиомодуля 802.15.4 через USB.

Настройка Raspberry Pi

  1. Прошейте операционную систему Raspberry Pi OS (64-битную версию Lite или Desktop) на SD-карту с помощью Raspberry Pi Imager .
  2. Включите Raspberry Pi и откройте терминал (через SSH или напрямую).
  3. Обновите менеджер пакетов и выполните обновление установленных пакетов:
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

Перед продолжением перезагрузите Raspberry Pi после обновления: sudo reboot

Подключите плату 1 (RCP) к Raspberry Pi.

Подключите плату 1 (с прошивкой ot-rcp ) к Raspberry Pi через micro-USB. После подключения убедитесь, что узел устройства отображается:

$ ls /dev/ttyACM*
/dev/ttyACM0
/dev/ttyACM1

Обычно UART приложения на плате RCP — это /dev/ttyACM1 (UART отладки XDS110 — это /dev/ttyACM0 ). Проверьте, какой порт является UART приложения, убедившись, что он отвечает при запуске агента OTBR на более позднем этапе. Если подключены другие последовательные USB-устройства, номер узла устройства может отличаться. Соответственно скорректируйте путь в конфигурации OTBR.

Сборка и установка ot-br-posix

On the Raspberry Pi, clone and build ot-br-posix:

$ git clone https://github.com/openthread/ot-br-posix.git
$ cd ot-br-posix
$ ./script/bootstrap

Run the setup script, specifying your Ethernet interface as the backbone (infrastructure) interface:

$ INFRA_IF_NAME=eth0 ./script/setup

eth0 is the typical name for the wired Ethernet interface. If you are connecting the Raspberry Pi via Wi-Fi instead of Ethernet, replace eth0 with wlan0 (and ensure the Pi is already connected to your Wi-Fi network). Verify the active interface name with ip link show .

The setup script builds ot-br-posix from source, installs the otbr-agent and otbr-web system services, and configures the networking stack. This process typically takes 10–20 minutes on a Raspberry Pi 4B.

Configure the OTBR Agent

Edit the OTBR agent configuration file to specify the RCP device path and baud rate:

$ sudo nano /etc/default/otbr-agent

Locate the OTBR_AGENT_OPTS line and update it to reference the RCP Application UART:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

Replace eth0 with wlan0 if your Raspberry Pi is connected via Wi-Fi.

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

The LP-EM-CC2745R10-Q1 RCP Application UART operates at 921600 baud . Verify the device path ( /dev/ttyACM1 in this example) matches the Application UART of your RCP board.

Restart the OTBR agent to apply the configuration:

$ sudo systemctl restart otbr-agent
$ sudo systemctl enable otbr-agent

Verify the agent is running:

$ sudo systemctl status otbr-agent

Interact with the RCP Node

Communicate with the RCP node using the ot-ctl tool:

$ sudo ot-ctl state
disabled
Done

You can monitor the OTBR agent log for connection and status messages:

$ sudo journalctl -u otbr-agent -f

Optionally, the OTBR web interface is available at http:// :80 and provides a graphical view of the Thread network.

To stop or restart the OTBR agent:

$ sudo systemctl stop otbr-agent
$ sudo systemctl start otbr-agent

At this point you should have three active consoles:

  1. Serial terminal for Board 2 ( ot-cli-ftd 1 ) on the host computer.
  2. Serial terminal for Board 3 ( ot-cli-ftd 2 ) on the host computer.
  3. SSH or terminal session on the Raspberry Pi for ot-ctl (OTBR/RCP).

You are now ready to form a Thread network.

10. Create a Thread Network

Set Up RCP (OTBR)

Create a new Thread network from the ot-ctl shell on the Raspberry Pi. Enter the following commands in order:

Индекс

Командование

Описание

Expected Response

1

dataset init new

Create a new network configuration.

Сделанный

2

dataset commit active

Commit new dataset to the Active Operational Dataset.

Сделанный

3

ifconfig up

Enable Thread interface.

Сделанный

4

thread start

Enable and attach Thread protocol operation.

Сделанный

Wait 10 seconds for the Thread interface to come up.

5

state

Check the device state. It should be leader . Other possible states: offline, disabled, detached, child, router, or leader.

лидер
Сделанный

6

dataset

View the network configuration. Your values will differ. Note the channel, network key, network name, and PAN ID — these are needed to join FTDs to the network.

Active Timestamp: 1
Channel: 20
Channel Mask: 0x07fff800
Ext PAN ID: 39ba71f7fc367160
Mesh Local Prefix: fd5c:c6b:3a17:40b9::/64
Network Key: 81ae2c2c17368d585dee71eaa8cf1e90
Network Name: OpenThread-008c
PAN ID: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Security Policy: 0, onrcb
Сделанный

Add FTDs to the Thread Network (Out-of-Band Method)

Using the out-of-band commissioning method, you provide the network credentials directly. In the serial terminal for each FTD board , enter the following commands using the channel and network key from the OTBR dataset output above:

Индекс

Командование

Описание

Expected Response

1

dataset channel 20

Set the channel to match the OTBR. Replace 20 with your OTBR's channel value.

Сделанный

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Set the network key. Replace with your OTBR's network key. Only this key is required to attach.

Сделанный

3

dataset commit active

Commit new dataset to the Active Operational Dataset.

Сделанный

4

ifconfig up

Enable Thread interface.

Сделанный

5

thread start

Enable and attach Thread protocol operation.

Сделанный

Wait 20 seconds while the device joins and configures itself.

6

state

Check device state.

ребенок
Сделанный

Because of the self-configuring nature of Thread networks and these being Full Thread Devices, either or both FTDs may eventually become routers. You can verify the current role at any time with the state command.

Communication Between Thread Devices

Use the ping command to verify that devices can communicate. Get the IPv6 addresses of each device with ipaddr :

> ipaddr
fd5c:c6b:3a17:40b9:0:ff:fe00:fc00		# Leader Anycast Locator (ALOC)
fd5c:c6b:3a17:40b9:0:ff:fe00:1800		# Routing Locator (RLOC)
fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03		# Mesh-Local EID (ML-EID)
fe80:0:0:0:c449:ca4a:101f:5d16			# Link-Local Address (LLA)
Done

From both FTDs, ping the OTBR using its RLOC address:

> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800
Done
>
> 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms
16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms

A successful response confirms the Thread network is operating and devices can communicate. Repeat the process to ping each FTD from the OTBR ( sudo ot-ctl ping ).

11. Поздравляем!

You've created a Thread network with TI CC2745R10-Q1 boards!

You now know:

  • How to set up the Texas Instruments ot-ti build environment.
  • How to build and flash OpenThread CLI binaries to the LP-EM-CC2745R10-Q1 LaunchPad.
  • How to set up a Raspberry Pi as an OpenThread Border Router (OTBR) using ot-br-posix.
  • How to create a Thread network on the OTBR.
  • Out-of-band commissioning of devices onto a Thread network.
  • How to verify Thread communication between nodes using the ping command.

Дополнительная литература

Check out openthread.io and GitHub for a variety of OpenThread resources, including: