Поддержка OpenThread для OTA на EFR32 - PullRequest
0 голосов
/ 06 февраля 2020

из-за прекращения работы стека SL-Thread в Silicon Labs мы рассматриваем возможность перехода на OT для нового устройства в системе, которая уже основана на EFR32.

Устройство будет относительно простым FTD с питанием от сети (подумайте «расширитель диапазона»).

Я пытаюсь оценить, какие будут усилия, и, в частности, я немного обеспокоен обновлениями прошивки OTA. Глядя на каталог EFR в репозитории GitHub, я вижу: никаких следов загрузчика Gecko. Означает ли это, что мы должны использовать обычную сборку загрузчика Gecko из SL SDK? Или мне не хватает загрузчика OT-speci c, который мне не хватает? нет никаких следов протокола OTA (в SL'Thread раньше была реализация TFTP и точка-точка) Есть ли план по использованию метода OpenTAread, определяющего c OTA? Или это официальный совет по использованию GeckoBootloader и реализации собственного протокола передачи?

Заранее спасибо, Matteo

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

У меня большой опыт работы с линейкой микроконтроллеров efr32 и, между прочим, я также пытаюсь перенести наши реализации Silicon Labs Thread на OpenThread. Поэтому я думаю, что могу помочь вам здесь ...

Если вам нужно только мощное (не сонное) устройство с полным потоком данных, это может быть не слишком большой проблемой. Вы можете создать демонстрационные проекты из командной строки (в подсистеме Linux или Windows для Linux) и просто изменить один из демонстрационных проектов в соответствии с вашими потребностями.

Если вам нужна IDE Сборка для расширенной функциональности отладки или просто общего удобства использования - это гораздо более сложная задача.

Хотя загрузчик может быть проблемой. OpenThread предназначен только для реализации протокола Thread и является обобщенным c, поэтому его можно использовать в множестве приложений. Вы не увидите там ничего о Gecko Bootloader или что-то в этом роде.

По сути, загрузчик Gecko - это приложение, которое запускается после сброса микроконтроллера и ищет образ загрузчика Gecko (.gbl ) либо во внешнем фла sh, либо во внутреннем фла sh. Если он находит изображение, он перезаписывает существующее приложение и загружается в него. Если он не находит изображение, он просто перейдет к приложению. Итак, у вас проблема с загрузчиком в два раза.

1) Приложение должно поместить образ .gbl в область памяти, которую ожидает загрузчик Gecko. Насколько я знаю, стандартного пути к этому нет, это зависит от приложения. Например, мое приложение неоднократно опрашивает конечную точку CoAP, чтобы получить куски изображения .gbl для вставки во внешний fla sh (именно там мой загрузчик ожидает изображение). Затем, когда он получает все изображение, он перезагружается.

В демонстрационном проекте для плат efr32 в openthread используется скрипт компоновщика, который не содержит места для загрузчика Gecko. Вам придется перепроектировать процесс компоновки, используемый в сборке Simplicity Studio. Он использует 2 файла компоновщика, а также некоторые #defines, чтобы поместить приложение в правильное местоположение. В зависимости от вашего уровня комфорта в процессе сборки это может быть или не быть сложным.

Предупреждение: Если вам нужно перенести существующий проект на основе стека Threads в Silicon Labs для проекта OpenThread вы находитесь за зверя проекта. Стек Threads в Silicon Labs объединяет простой планировщик, не основанный на rtos, и функции ожидания. OpenThread, даже демонстрационные проекты efr32, не содержат ничего из этого. Поскольку стек Silicon Labs Thread является закрытым исходным кодом, это значительно усложняет задачу. Я пытаюсь сделать это прямо сейчас, и это очень неприятно. Я бы не стал sh говорить о своем худшем враге.

0 голосов
/ 07 февраля 2020

Джонатан Хуэй, технический руководитель OpenThread, ответил в Google Group .

Цитируя его: «Основная цель проекта OpenThread - реализовать протокол Thread. Учитывая, что Thread это технология сетевого уровня, она не определяет протокол для OTA. Точно так же проект OpenThread не включает в свою область загрузчики и OTA. "

...