1. Введение

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).

Что вы узнаете
- Как настроить среду сборки Texas Instruments ot-ti.
- Как собрать и прошить бинарные файлы OpenThread CLI на платы LP-EM-CC2745R10-Q1.
- Как настроить Raspberry Pi в качестве пограничного маршрутизатора OpenThread (OTBR) с использованием ot-br-posix.
- Как создать сеть потоков на OTBR.
- Внеполосная настройка устройств для подключения к сети Thread.
- Как проверить обмен данными между узлами с помощью команды ping.
2. Предварительные требования
Аппаратное обеспечение
- Три платы LaunchPad LP-EM-CC2745R10-Q1 : одна сконфигурирована как RCP, подключенная к пограничному маршрутизатору, и две сконфигурированы как полнопоточные устройства (FTD).
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. - 3 отладочных зонда LP-XDS110ET : по одному на каждую плату LaunchPad, используются для программирования и отладки через USB.
LP-XDS110ET — это отдельный USB-отладочный зонд, необходимый для плат LaunchPad в форм-факторе LP-EM. Он поддерживает EnergyTrace для профилирования энергопотребления. LP-XDS110 — это более дешевая альтернатива, обеспечивающая те же возможности программирования и отладки, но не включающая EnergyTrace. В качестве дополнительной альтернативы, вместо платы LP-EM и отдельного отладочного зонда можно использовать плату LaunchPad со встроенным отладочным зондом XDS110 (например, LAUNCHXL-CC26X2R1). Подробности см. в руководстве по подключению отладочной платы LaunchPad . - Три кабеля micro-USB для подключения и питания плат LaunchPad и отладочных зондов.
- Для работы потребуется Raspberry Pi 4B или более поздняя версия с операционной системой Raspberry Pi OS, подключенная к интернету по Ethernet. Она будет настроена как хост OT Border Router.

- Для работы требуется хост-система Linux или macOS с как минимум двумя портами USB и доступом в интернет. Для среды сборки необходима оболочка, совместимая с Bash. Пользователям Windows следует использовать WSL2 (Windows Subsystem for Linux 2) с Ubuntu.
- Для подключения 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.
- ot-br-posix : https://github.com/openthread/ot-br-posix
- Последовательный терминал, например PuTTY (Windows), minicom (Linux) или screen (macOS/Linux).
3. Настройка оборудования
В этой практической работе используются три платы LP-EM-CC2745R10-Q1:
- Плата 1 (RCP): работает под управлением прошивки
ot-rcp. Подключена к Raspberry Pi через USB в качестве радиосопроцессора для пограничного маршрутизатора. - Плата 2 (FTD 1): запускает прошивку
ot-cli-ftdкак полнопоточное устройство. - Плата 3 (FTD 2): запускает прошивку
ot-cli-ftdкак полнопоточное устройство.

Подключите каждый 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
- Откройте UniFlash. Подключенные платы LaunchPad отображаются в разделе «Обнаруженные устройства» благодаря функции автоматического определения устройств. Если ваша плата не обнаружена автоматически, нажмите «Новая конфигурация» , выберите целевое устройство
LP-EM-CC2745R10-Q1и выберите отладочный USB-зонд XDS110.
- Выберите плату 1 (для прошивки которой будет использован файл
ot-rcp.out) и нажмите «Старт» . - Нажмите кнопку «Обзор» и перейдите к
ot-ti/build/bin/ot-rcp.out.
- Нажмите «Загрузить образ» , чтобы прошить микропрограмму. В области журнала отображается ход выполнения и подтверждается завершение процесса.
- Повторите шаги 2–4 для платы 2 и платы 3 , выбрав для каждой из них
ot-ti/build/bin/ot-cli-ftd.out.
Альтернативный вариант: использование Flash с помощью Code Composer Studio (CCS).
Code Composer Studio можно использовать в качестве альтернативы UniFlash, и, кроме того, он предоставляет полноценную среду отладки:
- Скачайте и установите Code Composer Studio .
- Создайте целевое соединение (CCXML) для LP-EM-CC2745R10-Q1 с помощью отладчика XDS110. См. Руководство пользователя CCS: Ручной метод .
- Запустите сеанс отладки без использования проекта, как описано в Руководстве пользователя CCS: Ручной запуск .
- Подключитесь к ядру 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:
- Откройте UniFlash и выберите свою плату LP-EM-CC2745R10-Q1 в списке обнаруженных устройств .
- Перейдите в панель программирования HSM и загрузите образ прошивки HSM, как показано ниже.

- Следуйте инструкциям на экране, чтобы завершить настройку 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 остаются подключенными к хост-компьютеру для доступа к последовательной консоли.

8. Настройка последовательной консоли для устройств ot-cli-ftd.
Микросхема LP-EM-CC2745R10-Q1 предоставляет доступ к UART-интерфейсу приложения через USB со скоростью 921600 бод .
Откройте последовательный терминал, подключившись к COM-порту UART приложения (Windows) или устройству /dev/ttyACM* (Linux/macOS) для каждой платы FTD, используя следующие настройки:
Параметр | Ценить |
Скорость (бод) | |
Биты данных | |
Стоп-биты | |
Паритет | |
Регулирование потока | |
Совет (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

Вам пока не нужно будет настраивать последовательную консоль для платы 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
- Прошейте операционную систему Raspberry Pi OS (64-битную версию Lite или Desktop) на SD-карту с помощью Raspberry Pi Imager .
- Включите Raspberry Pi и откройте терминал (через SSH или напрямую).
- Обновите менеджер пакетов и выполните обновление установленных пакетов:
$ 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:// и предоставляет графическое представление сети Thread.
Чтобы остановить или перезапустить агент OTBR:
$ sudo systemctl stop otbr-agent $ sudo systemctl start otbr-agent
На этом этапе у вас должно быть три активных консоли:
- Последовательный терминал для платы 2 (
ot-cli-ftd 1) на главном компьютере. - Последовательный терминал для платы 3 (
ot-cli-ftd 2) на главном компьютере. - Для работы
ot-ctl(OTBR/RCP) используйте SSH или терминальную сессию на Raspberry Pi.
Теперь вы готовы сформировать сеть Thread.
10. Создайте сеть потоков.
Настройка RCP (OTBR)
Создайте новую сеть Thread из командной оболочки ot-ctl на Raspberry Pi. Введите следующие команды в указанном порядке:
Индекс | Командование | Описание | Ожидаемый ответ | ||
1 | | Создайте новую конфигурацию сети. | Сделанный | ||
2 | | Зафиксируйте новый набор данных в активном операционном наборе данных. | Сделанный | ||
3 | | Включить интерфейс потоков. | Сделанный | ||
4 | | Включить и подключить работу по протоколу Thread. | Сделанный | ||
Подождите 10 секунд, пока не появится интерфейс Thread. | |||||
5 | | Проверьте состояние устройства. Оно должно быть «лидер» . Другие возможные состояния: «офлайн», «отключено», «отсоединено», «дочернее», «маршрутизатор» или «лидер». | лидер | ||
6 | | Просмотрите конфигурацию сети. Ваши значения будут отличаться. Запишите номер канала, сетевой ключ, имя сети и идентификатор PAN — они необходимы для подключения FTD к сети. | Временная метка активности: 1 | ||
Добавление FTD в сеть потоков (внеполосный метод)
При использовании метода внеполосной настройки вы напрямую указываете сетевые учетные данные. В последовательном терминале каждой платы FTD введите следующие команды, используя ключ канала и сети из выходных данных набора данных OTBR, приведенных выше:
Индекс | Командование | Описание | Ожидаемый ответ | ||
1 | | Установите канал в соответствии с OTBR. Замените | Сделанный | ||
2 | | Установите сетевой ключ. Замените на сетевой ключ вашего OTBR. Для подключения требуется только этот ключ. | Сделанный | ||
3 | | Зафиксируйте новый набор данных в активном операционном наборе данных. | Сделанный | ||
4 | | Включить интерфейс потоков. | Сделанный | ||
5 | | Включить и подключить работу по протоколу Thread. | Сделанный | ||
Подождите 20 секунд, пока устройство подключится и настроится. | |||||
6 | | Проверьте состояние устройства. | ребенок | ||
Ввиду самоконфигурирующейся природы сетей 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, в том числе:
- Поддерживаемые платформы — узнайте обо всех платформах, поддерживающих OpenThread.
- Сборка OpenThread — подробная информация о сборке и настройке OpenThread.
- Введение в потоки — охватывает все концепции потоков, представленные в этом практическом занятии.
- Репозиторий TI ot-ti — реализация OpenThread от TI для устройств SimpleLink, с инструкциями по сборке и примечаниями к выпуску.
- Страница продукта CC2745R10-Q1 — техническое описание устройства, типовые проекты и другая документация.
- LP-EM-CC2745R10-Q1 LaunchPad — руководство пользователя и файлы оборудования для оценочной платы.
- Справочник по интерфейсу командной строки OpenThread — обзор интерфейса командной строки OpenThread и его использования.
- Команды командной строки OpenThread — полный справочник по всем командам командной строки OpenThread.
- Сообщество TI E2E — Thread и Zigbee — сообщество технической поддержки продуктов беспроводной связи от Texas Instruments.
1. Введение

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).

Что вы узнаете
- Как настроить среду сборки Texas Instruments ot-ti.
- Как собрать и прошить бинарные файлы OpenThread CLI на платы LP-EM-CC2745R10-Q1.
- Как настроить Raspberry Pi в качестве пограничного маршрутизатора OpenThread (OTBR) с использованием ot-br-posix.
- Как создать сеть потоков на OTBR.
- Внеполосная настройка устройств для подключения к сети Thread.
- Как проверить обмен данными между узлами с помощью команды ping.
2. Предварительные требования
Аппаратное обеспечение
- Три платы LaunchPad LP-EM-CC2745R10-Q1 : одна сконфигурирована как RCP, подключенная к пограничному маршрутизатору, и две сконфигурированы как полнопоточные устройства (FTD).
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. - 3 отладочных зонда LP-XDS110ET : по одному на каждую плату LaunchPad, используются для программирования и отладки через USB.
LP-XDS110ET — это отдельный USB-отладочный зонд, необходимый для плат LaunchPad в форм-факторе LP-EM. Он поддерживает EnergyTrace для профилирования энергопотребления. LP-XDS110 — это более дешевая альтернатива, обеспечивающая те же возможности программирования и отладки, но не включающая EnergyTrace. В качестве дополнительной альтернативы, вместо платы LP-EM и отдельного отладочного зонда можно использовать плату LaunchPad со встроенным отладочным зондом XDS110 (например, LAUNCHXL-CC26X2R1). Подробности см. в руководстве по подключению отладочной платы LaunchPad . - Три кабеля micro-USB для подключения и питания плат LaunchPad и отладочных зондов.
- Для работы потребуется Raspberry Pi 4B или более поздняя версия с операционной системой Raspberry Pi OS, подключенная к интернету по Ethernet. Она будет настроена как хост OT Border Router.

- Для работы требуется хост-система Linux или macOS с как минимум двумя портами USB и доступом в интернет. Для среды сборки необходима оболочка, совместимая с Bash. Пользователям Windows следует использовать WSL2 (Windows Subsystem for Linux 2) с Ubuntu.
- Для подключения 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.
- ot-br-posix : https://github.com/openthread/ot-br-posix
- Последовательный терминал, например PuTTY (Windows), minicom (Linux) или screen (macOS/Linux).
3. Настройка оборудования
В этой практической работе используются три платы LP-EM-CC2745R10-Q1:
- Плата 1 (RCP): работает под управлением прошивки
ot-rcp. Подключена к Raspberry Pi через USB в качестве радиосопроцессора для пограничного маршрутизатора. - Плата 2 (FTD 1): запускает прошивку
ot-cli-ftdкак полнопоточное устройство. - Плата 3 (FTD 2): запускает прошивку
ot-cli-ftdкак полнопоточное устройство.

Подключите каждый 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
- Откройте UniFlash. Подключенные платы LaunchPad отображаются в разделе «Обнаруженные устройства» благодаря функции автоматического определения устройств. Если ваша плата не обнаружена автоматически, нажмите «Новая конфигурация» , выберите целевое устройство
LP-EM-CC2745R10-Q1и выберите отладочный USB-зонд XDS110.
- Выберите плату 1 (для прошивки которой будет использован файл
ot-rcp.out) и нажмите «Старт» . - Нажмите кнопку «Обзор» и перейдите к
ot-ti/build/bin/ot-rcp.out.
- Нажмите «Загрузить образ» , чтобы прошить микропрограмму. В области журнала отображается ход выполнения и подтверждается завершение процесса.
- Повторите шаги 2–4 для платы 2 и платы 3 , выбрав для каждой из них
ot-ti/build/bin/ot-cli-ftd.out.
Альтернативный вариант: использование Flash с помощью Code Composer Studio (CCS).
Code Composer Studio можно использовать в качестве альтернативы UniFlash, и, кроме того, он предоставляет полноценную среду отладки:
- Скачайте и установите Code Composer Studio .
- Создайте целевое соединение (CCXML) для LP-EM-CC2745R10-Q1 с помощью отладчика XDS110. См. Руководство пользователя CCS: Ручной метод .
- Запустите сеанс отладки без использования проекта, как описано в Руководстве пользователя CCS: Ручной запуск .
- Подключитесь к ядру 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:
- Откройте UniFlash и выберите свою плату LP-EM-CC2745R10-Q1 в списке обнаруженных устройств .
- Перейдите в панель программирования HSM и загрузите образ прошивки HSM, как показано ниже.

- Следуйте инструкциям на экране, чтобы завершить настройку 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 остаются подключенными к хост-компьютеру для доступа к последовательной консоли.

8. Настройка последовательной консоли для устройств ot-cli-ftd.
Микросхема LP-EM-CC2745R10-Q1 предоставляет доступ к UART-интерфейсу приложения через USB со скоростью 921600 бод .
Откройте последовательный терминал, подключившись к COM-порту UART приложения (Windows) или устройству /dev/ttyACM* (Linux/macOS) для каждой платы FTD, используя следующие настройки:
Параметр | Ценить |
Скорость (бод) | |
Биты данных | |
Стоп-биты | |
Паритет | |
Регулирование потока | |
Совет (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

Вам пока не нужно будет настраивать последовательную консоль для платы 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
- Прошейте операционную систему Raspberry Pi OS (64-битную версию Lite или Desktop) на SD-карту с помощью Raspberry Pi Imager .
- Включите Raspberry Pi и откройте терминал (через SSH или напрямую).
- Обновите менеджер пакетов и выполните обновление установленных пакетов:
$ 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:// 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:
- Serial terminal for Board 2 (
ot-cli-ftd 1) on the host computer. - Serial terminal for Board 3 (
ot-cli-ftd 2) on the host computer. - 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 | | Create a new network configuration. | Сделанный | ||
2 | | Commit new dataset to the Active Operational Dataset. | Сделанный | ||
3 | | Enable Thread interface. | Сделанный | ||
4 | | Enable and attach Thread protocol operation. | Сделанный | ||
Wait 10 seconds for the Thread interface to come up. | |||||
5 | | Check the device state. It should be leader . Other possible states: offline, disabled, detached, child, router, or leader. | лидер | ||
6 | | 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 | ||
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 | | Set the channel to match the OTBR. Replace | Сделанный | ||
2 | | Set the network key. Replace with your OTBR's network key. Only this key is required to attach. | Сделанный | ||
3 | | Commit new dataset to the Active Operational Dataset. | Сделанный | ||
4 | | Enable Thread interface. | Сделанный | ||
5 | | Enable and attach Thread protocol operation. | Сделанный | ||
Wait 20 seconds while the device joins and configures itself. | |||||
6 | | 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:
- Supported Platforms — discover all the platforms that support OpenThread
- Build OpenThread — further details on building and configuring OpenThread
- Thread Primer — covers all the Thread concepts featured in this codelab
- TI ot-ti Repository — TI's OpenThread implementation for SimpleLink devices, with build instructions and release notes
- CC2745R10-Q1 Product Page — device datasheet, reference designs, and other documentation
- LP-EM-CC2745R10-Q1 LaunchPad — evaluation board user guide and hardware files
- OpenThread CLI Reference — overview of the OpenThread CLI and its usage
- OpenThread CLI Commands — complete reference for all OpenThread CLI commands
- TI E2E Community — Thread & Zigbee — technical support community for Texas Instruments wireless connectivity products