До потребительского рынка наконец добрались микроконтроллеры с частотой до 1 ГГц, с открытой документацией, набором разнообразного софта, примерами полезного применения и наличием в стоках. Это семейство i.MX RT. Их называют кроссоверы, потому что они претендуют на ниши, где до недавнего времени доминировали малинки и одновременно легко могут заместить старшие 8-битники не увеличивая цены и потребления. Мир кроссоверов - малые встраиваемые системы, устройства для интернета вещей (IoT), промышленная автоматика, преобразовательная техника, роботы и т.п.

Не без труда, но удалось получить отладочную плату MIMXRT1170-EVK с наиболее мощным чипом из семейства. Теперь осталось понять особенности применения такого рода чипов.

Зачем вообще такие быстрые микроконтроллеры?

Чипы серии i.MX RT позволяют реализовать функции ранее доступные только для мощных процессорных систем и SoC. Например локальное голосовое управление, распознавание лиц, взаимодействие с сервисами типа Alexa Voice Service, предиктивная диагностика оборудования, насыщенные графические интерфейсы.

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

А можно на них сделать квадрокоптер с прямым векторным управлением 4-мя моторами и трансляцией зашифрованного видео в реальном времени или умную колонку с массивом микрофонов для пространственной селекцией источников звука.

Необычно сильны меры предпринятые в i.MХ RT от взлома хакерами. Cекретный ключ хранится в RAM и стирается если от чипа отрывают резервное питание или манипулируют питанием, если чип пытаются заморозить или раскалить, если манипулируют частотой, если пытаются отпаять, если пытаются разгадать ключ по импульсам тока потребления или по задержкам. Это даёт возможность применять чипы в современных интерактивных платёжных терминалах.

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

Отладочная плата.

Отладочная плата MIMXRT1170-EVK содержит чип PIMXRT1176DVMAA. Буква P в начале названия говорит, что это инженерный экземпляр для прототипирования, т.е. может иметь аппаратные баги. Но это тем не менее один из самых скоростных чипов в семействе i.MX и он двух ядерный, поэтому тестируем его.

Плата на первый взгляд выглядит сложно. Но в её основе чип на ядре семейства ARM-Cortex-M, вернее двух ядрах. Т.е. имеем дело с младшим и довольно простым семейством от ARM. Аналогичную архитектуру имеют всем известные STM32. Сложный вид придаёт множество периферии на плате, но не вся она может работать одновременно. Часто чтобы задействовать тут или иную периферию на плате необходимо перепаивать резисторы согласно мануалу на плату.

В коробке с платой поставляется адаптер питания и модуль камеры. Можно на плату пристроить дисплей, WiFi модули, LTE модули, но их надо покупать отдельно. Присутствует посадочное место для пайки WiFi модуля LBEE5KL1DX-883 на чипе CYW4343W, если кому-то захочется попробовать драйвера WICED.

На плате размещён отладочный адаптер реализованный на чипе LPC4322. Адаптер работает в стандарте OpenSDA через USB на основе опенсорсного проекта DAPLink. Кроме отладочного канала имеет COM порт и виртуальный диск для загрузки прошивок. Таким образом для начала отладки ничего дополнительно не нужно приобретать.

В дополнение на плате присутствует разъем JTAG/SWD, через который можно подключить к микроконтроллеру внешние более производительные JTAG/SWD адаптеры.

Основные узлы платы
Основные узлы платы

На плату можно подавать питание с одного из трех разъёмов. Найдите на диаграмме ниже из каких.

Основные разъёмы платы
Основные разъёмы платы

Переходим к тестам

Работаем из среды IAR Embedded Workbench for ARM v9.30.1.
Можно и из MCUXpresso IDE, но IAR традиционно предоставляет больше возможностей для отладки. Хотя надо признать, что если пользоваться встроенным в плату OpenSDA адаптером, то IAR сильных преимуществ не покажет.

Предварительно конфигурируем на сайте NXP и скачиваем пакет софта SDK_2_12_1_MIMXRT1170-EVK.zip для нашей платы. Там будут и все пакеты и все примеры и тесты.

Тест производительности Ethernet

Начинаем с теста производительности Ethernet интерфейса. Тест находится в ветке boards\evkmimxrt1170\azure_rtos_examples\netx_duo_iperf\iar
Из названия понятно что будет применяться Azure RTOS совместно со стеком TCP протоколов NETX Duo.

На компьютере запускаем утилиту iperf3 с командной строкой следующего вида:

iperf3  -s -p 5201 

А на плате компилируем и запускаем тест из рабочего пространства netx_duo_iperf.eww.

Подключаем кабелем плату в локальную 1G сеть и в терминале через последовательный порт организуемый OpenSDA адаптером смотрим на диагностику подключения. Должны появиться следующие надписи:

После этого запускаем броузер и в нем вводим строку с адресом полученным нашей платой от локальной сети: http://192.168.8.105/

В результате видим в браузере окно приглашающее к тесту:

Окно с выдачей WEB сервера работающего на отладочной плате
Окно с выдачей WEB сервера работающего на отладочной плате

По окончании теста видим фантастический результат:

Он говорит от том, что плата через интерфейс Ethernet 1G смогла выдать данные практически со скоростью 957 Mbps по протоколу UDP. Это очень круто для обычных микроконтроллеров.

Замеченные недостатки и баги.

Сразу было замечено несколько недостатков. Тест не работает с TCP и не работает из SDRAM. Загрузка и исполнение работают только из Quad SPI Flash. Но даже от туда при отладке по шагам происходит зависание на выполнении инициализации в следующей строке:

    /* Init System Pll2 pfd3. */
    CLOCK_InitPfd(kCLOCK_PllSys2, kCLOCK_Pfd3, 32);

После сброса питания тест начинает выполняться нормально.

i.MX RT явно не обещает лёгкого пути.

Тест производительности USB + SD диск

Тест расположен в ветке boards\evkmimxrt1170\usb_examples\usb_device_msc_disk\freertos\cm7\iar

Компилируем с опцией максимальной оптимизации по скорости и запускаем из Quad SPI Flash. В качестве SD карты используем Kingston CANVAS Select Plus 64GB. Используется FreeRTOS в качестве операционной системы на плате.

Скорость скачивания закачивания гигабайтных файлов оказалась в пределах 15-16 мегабайт в секунду.

При выполнении программы из SDRAM скорость доходила до 19.5 мегабайт в секунду. Это приблизительно в 5 раз медленней чем чтение аналогичной карты с помощью PC. Списываем это на 3-вольтовый SDIO и недостаточную оптимальность теста. Целостность файлов после пересылок была проверена.

Тест производительности криптографических функций

Тест расположен в ветке boards\evkmimxrt1170\mbedtls_examples\mbedtls_benchmark\cm7\iar

Компилируем с опцией максимальной оптимизации по скорости и запускаем из ITCM ARM т.е. из самой быстрой области выполнения программ. Используется аппаратный криптографический модуль чипа и тестовый набор функций из опенсорсного пакета Mbed TLS.
И были получены такие результаты:

mbedTLS version 2.28.0
fsys=996000000
Using following implementations:
  SHA: CAAM HW accelerated
  AES: CAAM HW accelerated
  AES GCM: CAAM HW accelerated
  DES: CAAM HW accelerated
  Asymmetric cryptography: CAAM HW accelerated

  MD5                      :  18018.54 KB/s,   52.63 cycles/byte
  SHA-1                    :  88982.97 KB/s,    9.54 cycles/byte
  SHA-256                  :  98965.59 KB/s,    8.43 cycles/byte
  SHA-512                  :  8316.75 KB/s,  115.59 cycles/byte
  3DES                     :  63092.71 KB/s,   14.07 cycles/byte
  DES                      :  136480.34 KB/s,    5.78 cycles/byte
  AES-CBC-128              :  68448.75 KB/s,   12.85 cycles/byte
  AES-CBC-192              :  59808.27 KB/s,   14.90 cycles/byte
  AES-CBC-256              :  53108.29 KB/s,   16.95 cycles/byte
  AES-GCM-128              :  65207.48 KB/s,   13.51 cycles/byte
  AES-GCM-192              :  57023.80 KB/s,   15.66 cycles/byte
  AES-GCM-256              :  50648.39 KB/s,   17.80 cycles/byte
  AES-CCM-128              :  36921.58 KB/s,   24.91 cycles/byte
  AES-CCM-192              :  31850.54 KB/s,   29.10 cycles/byte
  AES-CCM-256              :  27932.44 KB/s,   33.39 cycles/byte
  Poly1305                 :  19653.65 KB/s,   48.16 cycles/byte
  CTR_DRBG (NOPR)          :  8856.47 KB/s,  108.45 cycles/byte
  CTR_DRBG (PR)            :  6607.61 KB/s,  145.82 cycles/byte
  HMAC_DRBG SHA-1 (NOPR)   :  2957.83 KB/s,  327.56 cycles/byte
  HMAC_DRBG SHA-1 (PR)     :  2748.29 KB/s,  352.68 cycles/byte
  HMAC_DRBG SHA-256 (NOPR) :  4241.30 KB/s,  227.94 cycles/byte
  HMAC_DRBG SHA-256 (PR)   :  4264.17 KB/s,  226.76 cycles/byte
  RSA-1024                 :  7861.00  public/s
  RSA-1024                 :  430.33 private/s
  DHE-2048                 :   26.67 handshake/s
  DH-2048                  :   50.00 handshake/s
  ECDSA-secp521r1          :  146.67 sign/s
  ECDSA-secp384r1          :  285.00 sign/s
  ECDSA-secp256r1          :  482.33 sign/s
  ECDSA-secp224r1          :  534.00 sign/s
  ECDSA-secp192r1          :  667.00 sign/s
  ECDSA-secp521r1          :   77.67 verify/s
  ECDSA-secp384r1          :  157.00 verify/s
  ECDSA-secp256r1          :  282.67 verify/s
  ECDSA-secp224r1          :  317.33 verify/s
  ECDSA-secp192r1          :  413.00 verify/s
  ECDHE-secp521r1          :   80.00 handshake/s
  ECDHE-secp384r1          :  162.67 handshake/s
  ECDHE-secp256r1          :  299.00 handshake/s
  ECDHE-secp224r1          :  338.67 handshake/s
  ECDHE-secp192r1          :  452.33 handshake/s
  ECDH-secp521r1           :  160.00 handshake/s
  ECDH-secp384r1           :  325.00 handshake/s
  ECDH-secp256r1           :  595.67 handshake/s
  ECDH-secp224r1           :  679.67 handshake/s
  ECDH-secp192r1           :  903.33 handshake/s
  ECDHE-secp521r1          :   40.00 full handshake/s
  ECDHE-secp384r1          :   81.67 full handshake/s
  ECDHE-secp256r1          :  150.33 full handshake/s
  ECDHE-secp224r1          :  170.33 full handshake/s
  ECDHE-secp192r1          :  225.00 full handshake/s

Результаты неплохие, но не фантастические. Чипы семейства Synergy при частоте в 4 раза меньшей уступают по скорости шифрования AES-GCM-256 с аппаратным ускорителем всего в 2.5 раза. Однако чисто программное шифрование AES-GCM-256 чипом Cortex-M4 на частоте 120 МГц ведётся на скорости около 94 KB/s т.е. в 500! раз медленнее.

В любом случае скорость у i.MX RT достаточна чтобы в реальном времени шифровать видеопоток MJPEG в 5 мегапикселей и сохранять на диск.

Нагрев микроконтроллера в течении выполнения этого теста:

Радиатор этом чипу точно не пригодится.

Всего в комплекте программного обеспечения из SDK_2_12_1_MIMXRT1170-EVK находится 674 демонстрационных проекта. И тестирование только начинается.
Впереди тестирование Wi-Fi, Bluetooth, ускорителей GUI, FlexPWM для управления двигателями и прочих модулей.

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


  1. ermouth
    25.11.2022 19:36
    +4

    А главное доступны для простых разработчиков, без NDA и прочих сложностей

    Сайт nxp.com для РФ отвечает Access Denied.


    1. halfhope
      25.11.2022 19:39
      +5

      - "First time?"


  1. DinoZavr3
    25.11.2022 19:43

    Кстати, реально полезная статья


  1. aamonster
    25.11.2022 19:58
    +2

    А они добрались? Навскидку гуглятся только Evaluation Kit по 189 долларов, это ни разу не замена 8-битникам.


    1. gagarinas
      25.11.2022 20:08

      Через дилера Авнет цена 522 :), у других stock = 0. https://www.avnet.com/shop/emea/products/nxp/mimxrt1170-evk-3074457345644639200. У производителя надо регатся, лень :)


    1. nafikovr
      25.11.2022 21:30
      +1

      не знаю что там с сабжем, но stm32h7 вполне себе добрались. правда тоже стоят дороже гораздо более производительных cortex a7 и им подобных. говорят реалтайм того стоит, но это не точно


  1. zurabob
    26.11.2022 00:14
    +2

    без NDA и прочих сложностей

    Вам удалось достать Security Reference Manual без NDA? А ведь только в нем нормальным языком описано все, касающееся шифрования и безопасности. И даже генератор случайных чисел только там описан. Да, по открытым драйверам можно понять работу блоков, можно просто использовать готовые драйвера, но без RM неудобно.

    Хотя сам чип очень понравился - мощный, холодный, не требует внешних трансиверов для USB и SD, в отличие от STM32H7. Периферия богатая и удобная, хотя те-же FlexPWM очень непривычны и отличаются от обычных модулей в других процессорах. НО, нет внутреннего флеша, есть только двухчиповый 1064, где на одной подложке процессор и Serial FLASH с всего-лишь 4битным доступом и медленными командами на выборку.


    1. Indemsys Автор
      26.11.2022 13:00
      +1

      Изучение i.MX только начал. До DryICE еще не дошел. Но думаю он мне и не понадобиться. Это для торговых терминалов.

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


      1. zurabob
        26.11.2022 17:46

        Вы не закрываете прошивку? ИМХО, без SRM невозможно разобраться с расшифровкой на лету из внешнего флеша.


  1. nixtonixto
    26.11.2022 11:55
    +2

    NXP сильно опоздали с этим семейством, и кризис полупроводников их сильно подкосил. Сейчас на рынке правят бал Аллвиннеры — при той же паре гигагерцных ядер они ещё имеют встроенную DDR-память, открытую документацию, стоят в районе 5 долларов и доступны прямо сейчас макетками за 20...30 долларов и сотнями тысяч штук чипов без квот. И у них есть выводные LQFP-корпуса, что сильно облегчает оптический контроль на конвейере: под BGA нужен рентген, что может позволить себе не каждый сборочный цех.


    1. Indemsys Автор
      26.11.2022 12:56
      +1

      Найти потенциальных конкурентов i.MX не сложно.
      Достаточно зайти на сайте производителя типа Olimex

      Интересны, например, STM32MP157F , их много в продаже.
      Очень мощно выглядят AM335X, тоже продаются. У всех этих чипов целые экосистемы. Мануалы на много тысяч страниц.

      Но это все же не кроссоверы. Область их применения значительно уже. В микро устройства их не вставишь.

      А например для Allwinner A20 весь юзер мануал умещается в 800 страниц. Это не серьезно.
      И Allwinner еще менее кроссоверы чем AM335X или STM32MP.


  1. GarryC
    26.11.2022 14:03

    По поводу производительности - надо бы посмотреть сырки теста передачи по сети, если там каждый пакет формируется заново, то круто, а если меняется только заголовок в пакете из 1К+ (1400) байт, то не очень.


    1. Indemsys Автор
      26.11.2022 15:33
      +1

      Там все довольно честно.

      Единственное упрощение - отключение контрольной суммы. Но это фича самого стека Netx Duo.

      Исходники эти часть Azure RTOS лежат в открытом доступе тут
      В цикле для каждого следующего пакета сначала выделяется память под пакет, потом пакет формируется, потом отправляется, потом память освобождается.

      Кстати, обновил в статье диаграмму узлов. Оказалось что чип NAND и HyperFlash не подключены на плате