IoT маршрутизатор нужен для сбора и передачи данных в облака от различных проводных локальных шин (CAN, RS485, USB …) и беспроводных локальных сетей (Bluetooth, LoRa …).
Используя Azure RTOS сделать свой маршрутизатор достаточно просто. Нужно только правильно выбрать пару ингредиентов: Wi-Fi модуль и универсальный, быстрый, защищённый, экономичный микроконтроллер с открытой архитектурой.

  • Универсальный - потому что есть желание охватить как можно больше интерфейсов.

  • Быстрый - потому что много интерфейсов одновременно требуют большую производительность

  • Защищённый - потому что каналы связи надо на ходу шифровать, прошивку защищать от считывания, файлы тоже шифровать и подписывать. Иначе нельзя выходить в открытый интернет.

  • Экономичный - потому что иногда требуется работать от аккумулятора.

  • Открытый - потому что иначе я не мог бы писать статьи об этом.

Выбор микроконтроллера

И я выбрал платформу Renesas Synergy™, а в ней семейство S7G2, а конкретно чип R7FS7G27G2A01CBD. Платформа интересна тем, что под неё существует наиболее развитый пакет поддержки Azure RTOS. Там есть все - BSP с API под любую периферию имеющуюся в чипе, драйвера RTOS под USB, SDIO, Ethernet, RTC, SDRAM, NAND, Crypto и т.д. Экосистема настолько самобытная и уникальная, что ее нет в составе демо-проектов в репозитарии Azure RTOS. Интересующимся все исходники и документацию надо искать на сайте Renesas.
Сам микроконтроллер R7FS7G27G2A01CBD содержит ядро ARM Cortex-M4 c частотой до 240 МГц. Корпус 224-LFBGA. Выводов хватает и чтобы 16-бит SDRAM подключить, и еще с десяток интерфейсов вывести наружу, в том числе два SDIO для SD карты и для Wi-Fi модуля. Решено подключать Wi-Fi модуль по SDIO интерфейсу как наиболее быстрому. Интерфейс USB HS оставляем для подключения наружных устройств, в том числе USB-Ethernet адаптера.

Не буду пересказывать здесь спецификацию на микроконтроллер, отмечу только интересные моменты в контексте проекта маршрутизатора, которые могут оценить специалисты.

Главное - документация практически полностью открыты за исключением одного периферийного модуля. Это Secure Cryptographic Engine (SCE7). Но к нему идет библиотека с хорошим описанием API. Библиотека быстрая и надежная, проверено на практике.

Наличие на борту модуля Interrupt Controller Unit (ICU). Его необычность в том что он мультиплексирует все сигналы DMA и прерываний на одну шину событий. А затем эти события направляются как в NVIC ядра так и на модули DMA. Это сильно отличается от архитектуры большинства других микроконтроллеров, где сигналы DMA и прерываний строго разделены и одно не может использоваться вместо другого.

Следующая вытекающая особенность в том что векторам прерываний нет жестко назначенных линий прерываний от периферии. На любой вектор (а их есть 96 в чипе) можно послать любой ивент, будь то прерывание (внешнее или внутреннее) или запрос DMA.

И еще интересен модуль Data Transfer Controller (DTC). По принципу действия практически аналогичен DMA, но работать начинает по запросам прерываний, а не по запросам DMA. Т.е. периферии работающей с DTC не нужно иметь отдельно сигнала вызова DMA, достаточно сигналов прерываний. Модулю DTC доступно все адресное пространство чипа. Однако запросы модуль DTC отрабатывает последовательно и неразрывно, а не конкурентно и параллельно, как каналы DMA. Вследствие этого у DTC нет ограничения на количество обслуживаемых запросов, но скорость обслуживания падает из-за ожидания в очереди и зависимости от других запросов. DTC особенно удобно применять для обслуживания UART, I2C, SPI, SSI и других медленных интерфейсов. Этим экономятся каналы DMA для быстрых интерфейсов.

Есть в наличии защита прошивки от считывания с режимом, когда микроконтроллер вообще невозможно сбросить в дефолтное состояние со стиранием всей Flash. Присутствует также модуль для криптографического заворачивания ключей, т.е. ключи нигде в памяти в чистом виде не хранятся.

Надо сказать, что Renesas появился как результат слияния известных фирм Hitachi и Mitsubishi. Они и раньше делали весьма интересные микроконтроллеры. А микроконтроллеры Mitsubishi были базой для обкатки культовой RTOS uCOS-II.

Выбор Wi-Fi модуля

Наш маршрутизатор связывается с интернетом через Wi-Fi. Поскольку полевые шины могут иметь скорость до десятков Мбит/с, то модуль должен как минимум с той же скоростью передавать по Wi-Fi . В репозитариях Azure RTOS и Renesas можно найти драйвера для следующих Wi-Fi модулей:

  • SX-ULPGN на чипсете Qualcomm QCA4010, 1x1 802.11 b/g/n. Есть подробнейший мануал как все запустить c Azure RTOS. Сам по себе чип быстрый, но связь в драйвере работает через UART. Это все портит. Через UART невозможно передавать данные с нужной маршрутизатору скоростью.

  • EMW3080, 1x1 802.11 b/g/n. Связь также через UART. Т.е. слишком медленная.

  • GT-202 на чипсете Qualcomm QCA4002, 1x1 802.11 b/g/n . Связь с хостом выполняется через SPI 10 МГц. Но этого все равно мало.

Как видно, здесь все не очень подходящее. Ещё есть сторонние решения потенциально годные для портирования:

  • Модули на чипе ESP32-C5, 1x1 802.11 a/b/g/n до 40 МГц полоса. Есть диапазон 5 ГГц, но c полосой только 20 МГц. Здесь также стандартный способ обмена через UART, но есть и SDIO. В целом неплохо, но обычно у ESP нет вариантов стека для хост контроллера, т.е. добавляется необходимость программирования самих модулей и это усложняет разработку. Чип только недавно анонсирован, и могут быть сложности с приобретением.

  • CC3135MOD на чипе CC3135, 1x1 802.11a/b/g/n. Связь через SPI 20 МГц. Пиковая скорость по TCP 13 Мбит/с. Есть диапазон 5 ГГц. Но скорость интерфейса с хостом все же низкая. Большие усилия потребуются для адаптации драйверов SimpleLink на Azure RTOS

  • ATWILC3000- MR110xA 1x1 IEEE 802.11 b/g/n. Обмен с хостом череp SDIO. Это то что надо. Пиковая скорость по TCP 28 Мбит/с. Есть драйвер для FreeRTOS под стек lwIP. В прошлых статьях я описывал как легко перенести API lwIP на Azure RTOS. Этот модуль можно было бы принять как кандидата в маршрутизатор если бы не было других вариантов.

Экосистема WICED

Решено выбрать Wi-Fi модуль из экосистемы WICED. Все быстро меняется, и теперь экосистема называется AIROC™. Ныне эта экосистема принадлежит Infineon, ранее принадлежала Cypress Semiconductor, а ещё раньше чипы этой экосистемы разрабатывались Broadcom Inc. Поэтому одни и те же чипы данной категории можно встреть под разными названиями и с длинной историей.
Я остался на платформе WICED, вернее сделал своё ответвление, ибо не хотелось получить vendor lock-in. А ещё было интересно то, что WICED базировался на ThreadX RTOS, а это ядро Azure RTOS. Infineon же после приобретения Cypress перешёл на поддержку Amazon FreeRTOS. Это, конечно, не сильное препятствие для интеграции в Azure, поскольку Azure полностью эмулирует сервисы FreeRTOS, но лишний раз доказывает как опасно доверяться вендорам.

Из всего многообразия Wi-Fi модулей на базе чипов Infineon можно выбрать для нашего маршрутизатора далеко не все. Не все имеют открытые драйвера для RTOS. Наиболее интересным показался чип CYW43340. А подходящий модуль на его основе был найден у малоизвестной фирмы Inventek Systems. Это модуль ISM43340-L77.

Wi-Fi модуль ISM43340-L77

Модуль для связи с хостом использует интерфейс SDIO, частота 25 МГц. Т.е. в пределе скорость передачи может достигать 100 Мбит/с. Модуль Работает в двух диапазонах: 2,4 ГГц и 5 ГГц. Поддержка двух антенн, с выбором лучшей. Полоса частот в обоих диапазонах может достигать 40 МГц.

Вид модуля со стороны пайки
Вид модуля со стороны пайки

Это обещает скорость передачи по эфиру в 150 Мбит/с. Модуль также содержит Bluetooth v4.0 работающий через отдельный интерфейс UART со скоростью до 4 Мегабит в сек. Некоторые версии модуля поддерживают ещё интерфейс NFC. Но в нашем случае он не используется. Модуль при включении требует загрузки фирмваре. Это делается через тот же SDIO интерфейс, длиться менее 0.5 сек. Фирмваре храниться во Flash памяти микроконтроллера и занимает около 370 КБайт. API предоставляемое в WICED для данных модулей довольно обширно. Можно организовывать и точку доступа и клиентскую станцию и оба варианта одновременно. Есть широкий выбор видов защиты канала связи: WEP, WPA, WPA2, WMM, TKIP, CKIP. Доступны MESH Networking и P2P connection. Можно менять MAC адрес, сканировать эфир, фильтровать пакеты, измерять и управлять мощностью канала, выбирать каналы и многое другое.

Коммуникационные каналы модуля
Коммуникационные каналы модуля

Подключение Wi-Fi модуля

Не все пины модуля требуют подключения, многие можно оставит неиспользуемыми. Например оставлены свободными пины NFC интерфейса и I2S цифрового аудио интерфейса. Снаружи только понадобился переключатель антенн на микросхеме SKY13351-378LF. И некоторые элементы согласования антенного тракта. Антенны предусматриваются выносные.

Подключение Wi-Fi модуля на плате
Подключение Wi-Fi модуля на плате

Модуль интересен ещё тем, что у него есть пины отключения питания. Причём отдельно для Wi-Fi и отдельно для Bluetooth. Остаточное потребление составит 220 мкА.

На схеме видны также линии соединения JTAG модуля. Чип CYW43340 содержит внутри себя ядро ARM Cortex-M4, т.е. такое же как и главный микроконтроллер, а значит их можно отлаживать в той же среде в которой разрабатывается главная программа.

Архитектура маршрутизатора

Маршрутизатор лучше делать модульным. Процессорная плата 6-слойная с более тонкой медью и плата питания и драйверов 4-слойная и с более толстой медью.

Структурная схема маршрутизатора
Структурная схема маршрутизатора

Интерфейсы RS-485 и CAN гальванически изолированы от системы и друг от друга.

Так приблизительно выглядит модульная структура маршрутизатора
Так приблизительно выглядит модульная структура маршрутизатора

Забегая вперёд скажу, что на модуле ISM43340-L77 в режиме станции была достигнута скорость пересылки файлов на удалённый FTP сервер в 45 Мбит/с на диапазоне 5 ГГц. А при использовании TLS c шифрованием AES-256 скорость была 27 Мбит/с.

На этом пока все.

Комментарии (4)


  1. progchip666
    30.10.2022 18:13

    Сама по себе идея достаточно интересна, но боюсь что для современной России не слишком актуальна. Дело даже не столько в цене чипа(34 евро на маусере), сколько в его доступности в пределах России. Тут с обычными Cortex4 уже серьёзнейшие проблемы...

    Ну и цена комплектации заставляет сомневаться в перспективах коммерческой реализации данного проекта...


    1. Indemsys Автор
      30.10.2022 18:42
      +1

      Доступность дело временное.
      По поводу спроса на такое, то я придерживаюсь точки зрения приоритета функциональности.
      Т.е. функциональность определяет спрос. Если дивайс реализует нечто дефицитное, то цена комплектации не будет препятствием. А дефицит он скрывается в специализации.


      1. order227
        01.11.2022 01:58

        По поводу спроса на такое

        Спрос есть и будет расти. Всякие сименсы и прочие западные компании плавно пропадают со складов, а китайцы в основном делают сырую дрянь с нулевым саппортом. В итоге востребованным стало свое железо с разработчиками и поддержкой на расстоянии вытянутой руки. И наконец-то эта потребность появилась у частного бизнеса, где можно работать и при этом не пачкаться. Однако есть главный фактор - рынок России достаточно маленький и серий типа "миллионы штук" тут возможны разве что на электросчетчиках


    1. order227
      01.11.2022 01:55

      сколько в его доступности в пределах России. Тут с обычными Cortex4 уже серьёзнейшие проблемы

      Не выдумывайте, просто учитесь закупаться у азиатских дистрибьютеров, а не в комэлах и прочих чидах, которые 300% накручивают. Да и какие проблемы то кроме цены? STM32F4 тысячами штук даже в ЧиДе есть...

      Ну и цена комплектации заставляет сомневаться в перспективах коммерческой реализации данного проекта...

      Перспектив и раньше не было, если вы закупались в РФ. Только в случае если заказчик это госкомпания или компания, работающая на ресурсах или госбабках, они были готовы оплатить все то, что накрутили российские дистрибьютеры компонентов. Нормальный же бизнес никогда не закупался у местных барыг, т.к. автоматом становился неконкурентоспособным.