Осваиваем чип с Arm Cortex-M85

d645e3fe65aa3656ef80dc941f5c62a5.png

Фирма Renesas вдруг стала раздавать бесплатно платы EK-RA8M1 со своим новейшим чипом R7FA8M1AHECBD. А чип этот является первым в индустрии коммерческим микроконтроллером с ядром Arm® Cortex®-M85. Работает ядро на 480 МГц, снабжено технологией M-Profile Vector Extension (MVE) под названием Helium™ и ускоряет работу AI в малых системах в 4 раза. Ну и другие DSP алгоритмы там тоже ускоряются примерно на столько же. По сути чип стал передовым DSP, но это не всё.

По свидетельству фирмы Segger новый чип позволил в три раза ускорить декодирование JPEG, c 12 мс до 3 мс. И добиться скорости воспроизведения JPEG изображений в 40 кадров в секунду при разрешении 800×400. Это в коммерческой библиотеке emWin. Но в открытом проекте Azure RTOS также уже присутствует декодер JPEG использующий возможности Helium™. В библиотеке CMSIS уже присутствуют функции оптимизированные под Helium™ и Armv8-M Security Extension (TrustZone). Технология TrustZone хорошо подходит под методику изолированной разработки приложений. Одна команда разрабатывает защищённое, надёжное ядро системы с RTOS. Затем блокирует память ядра от чтения и отладки, оставляя открытым API и передаёт другой команде, которая разрабатывает уже публичное приложение, возможно с багами и дырами. Но система остаётся по прежнему устойчивой к взлому.

Ещё чипы R7FA8 снабжены механизмом защиты прошивки на производстве с отсутствием доверия.

Допустим заказываем производство устройства в Китае. Там сами производители покупают чипы Renesas и их программируют нашей прошивкой. Как не дать прошивку дизассемблировать? Для этого в чипах R7FA8 есть спрятанный секрет, который знает только Renesas. Мы придумываем ключ для шифрации прошивки (Image Encription Key) и ключ для шифрации ключа прошивки User Factory Programming Key (UFPK). Потом посылаем в Renesas (на их сервер в автоматическом режиме через их утилиту) свой придуманный ключ UFPK, в ответ получаем зашифрованный ключ W-UFPK. Производителю передаём три вещи: W-UFPK, нами локально зашифрованный ключ прошивки (Wrapped Image Encription Key), и зашифрованную нашим ключом прошивку. В результате производитель работает только с зашифрованным материалом.

17f51d98ce99eebbd6defe62fd47f477.png

При загрузке всего этого в чип он там сам расшифровывает ключи и прошивку ничего не выдавая наружу.

Семейство чипов R7FA8 по периферии оказалось очень близким к к семейству Renesas Synergy. На Synergy мы уже разработали встраиваемый модуль. Большинство периферийных модулей R7FA8 практически идентичны Synergy. Разница в распиновке касается буквально нескольких выводов. Есть чипы в корпусе LQFP

495767ce203e821a3cdf754c3dfff615.png

И есть чипы в корпусе BGA.

4dc2b1377cac02f739124b6d9674ebed.png

Плата EK-RA8M1 содержит максимальный чип в корпусе BGA

f9a35bc53ed461564756d51cbbccf753.png

IDE для разработки для R7FA8

Конфигуратор

В независимости от IDE в первую очередь для R7FA8 нужно скачать Renesas RA Smart Configurator. Это программная утилита генерирующая исходники BSP, middleware и RTOS на основе заданной конфигурации. Все примеры от Renesas поставляются без полных исходников, но с файлами конфигурации configuration.xml. Загрузив такой файл в среду Renesas RA Smart Configurator и нажав кнопку Generate Project Content мы получаем недостающие исходники в проекте

a07de51736f5566ce105c9ccd50d2b1c.png

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

Интересно взглянуть на систему тактирования чипа в конфигураторе.

6b45ba41db855d9017029bd6e64f3062.png

Система тактирования стала сложней и гибче, чем в семействе Synergy.

А вот так выглядит схема распиновки чипа в корпусе BGA во время конфигурации одного из примеров

46a4070debcaceacf96a18659ae37bff.png

Большое значение имеет состав BSP и middleware поставляемом с конфигуратором. Renesas здесь один из лидеров. В то время как большинство поставщиков чипов таких как ST, Infineon, Microchip, NXP и т.д. ориентированы на сбор исходников из экосистемы FreeRTOS с разнообразным и фрагментированным софтом с нестабильными драйверами, Renesas один из первых выбрал экосистему Azure RTOS и её активно поддерживает качественными драйверами и софтом из одних рук с поддержкой Microsoft.

Вот несколько меню со списком middleware

Это список коммуникационного софта

Это список коммуникационного софта

Коммуникационное ПО у конфигуратора Renesas особенно богатое. Здесь есть такие протоколы, которых до сих пор нет ни у lwIP, ни у Zephyr, ни в mbed.

А вот меню со списком модулей для управления моторами

e7d81eb1c7eb6f714f31ddfb9fb2c723.png

Здесь достойная конкуренция с STM32CubeMX.
Управление двигателем на архитектуре Renesas было продемонстрировано в проекте серво контроллера

407e3db67cfa79fb09d10b81569a9d88.png

Движки хранения данных и файловые системы от Azure RTOS. Файловую систему exFAT из состава Azure RTOS мы тестировали здесь. Судя по даташиту у R7FA8 результаты будут приблизительно теже.
На плате EK-RA8M1 была отдельно протестирована скорость записи чтения из Octal SPI Flash. Были получены данные. Скорость записи для 64 Кбайт блока составила 6.5 Мбайт в сек. Скорость считывания составила 75 Mбайт в сек.

Раньше Renesas не рисковал конфигурировать USB стек, но теперь появились и элементы USB в конфигураторе.

28061fd03bae92db55e8561f4edb4e2a.png

В полном пакете Azure RTOS модулей стека USB по прежнему можно найти больше.

К использованию Cortex-M85 уже готовы среды разработки Renesas Eclipse e2 studio c компилятором GCC, Keil uVision с компилятором от ARM и IAR Embedded Workbench со своим компилятором IAR.

e2 studio

Renesas предлагает свою бесплатную адаптированную версию Eclipse под названием e2 studio.
Среда наполнена информационными сервисами для поддержки семейства из чипов: мануалами, апнотами, техническими замечаниями. Вплоть до того что можно наблюдать в реальном времени ответы на форуме по поводу чипов

91451994a732998ee20486a8874a4a2c.png

В среде e2 studio множество окон показывающих в разных видах статистку проекта, расход памяти, карту памяти, есть даже панель с графическими виджетами

2001e722e76a8eaeab3224bbb1e1fa6b.png

В рабочее пространство среды e2 studio прямо из меню можно загрузить все существующие примеры ПО. Тут же их скомпилировать, загрузить на плату через встроенный в плату отладочный адаптер и начать отладку. Все примеры от Renesas поддерживаются средой e2 studio.

Однако есть очень много проблем с этой средой.

Во-первых, это зависания в пошаговом режиме. Первый же пример _quickstart завис при попытке прохода по шагам в первой же задаче FreeRTOS.

Во-вторых, глючное окно дизассемблера. Оно просто остаётся пустым вскоре после начала отладки. Выключение и включение окна восстанавливает его содержимое. Но тут же при переходе к этом окну может выскочить ошибка такого рода:

ee2b8536d014e59d278078b2cfe6f1a5.png

В целом среда e2 studio достаточно долго открывается, не имеет плагинов для просмотра объектов Azure RTOS. Есть поддержка FreeRTOS, но малоинформативная. Нет средств просмотра данных анализа трассировки, нет ленты событий в реальном времени. Плохо структурирована информация в окнах с отображением состояния периферии.

Печальна и история с запуском демопроекта _quickstart в среде e2 studio. Тест шифрации и дешифрации файла на на внешнем USB носителе не прошёл. Сначала не прочиталась USB флешка с extFAT. C FAT32 флешка прочиталась, но файл зашифровался неправильно (заполнился некоей константой), расшифровка вообще не произошла. По HS USB в режиме хоста приложение работает. При тестировании WEB сервера при подключении напрямую к компьютеру приложение долго ожидает ответа DHCP сервера, потом переходит на статический адрес. Команда ping по адресу платы выполнилась успешно , но страница с WEB сервера в броузере не отображалась.

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

Keil uVision

Keil снабжается лучшим компилятором для ARM — AC6, от самой фирмы ARM. Поддерживает C++ 17.

fafaf750a707ddd79f2662f90dc9a43e.png

У Keil есть менеджер пакетов о очень богатым выбором софта и платформ.

83222a72bac0229c1d881bc69a3020e8.png

Но Keil имеет ряд существенных недостатков в нашем контексте. Во-первых не имеет плагина для отладки Azure RTOS, во-вторых у IDE весьма ограниченный редактор, в-третьих отладчик не отображает полосу событий в реальном времени, а она нам очень нужна при отладке. В целом отладочные возможности низки по сравнению с IAR embedded workbench.

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

IAR embedded workbench

Среда IAR embedded workbench обладает наиболее продвинутым отладчиком в упомянутой тройке инструментов. Отладчик IAR C-Spy хорошо согласован с отладочным адаптером Segger J-Link, который интегрирован на плату EK-RA8M1. Адаптер Segger J-Link сейчас в числе тех немногих адаптеров способных отлаживать Cortex-M85. Плата EK-RA8M1 снабжена двумя разъёмами для подключения внешнего JTAG адаптера и внешнего трассировщика. Однако адаптеры J-Link с аппаратной версией ниже 5 не могут подключаться к Cortex-M85. Т.е. внешний адаптер JTAG/SWD J-Link должен быть версии 5 и выше.

Компиляция в IAR 9.50 стала ещё быстрее. Полное перепостроение проекта из 3166 файлов занимает около 2 мин, хотя предыдущие версии компилировались на том же компьютере за 5 и более минут.

Но в IAR по прежнему очень мало функциональный редактор. Как вариант можно установить бесплатный плагин IAR в среду e2 studio и пользоваться всем тулчейном IAR из eclipse. Однако полный импорт в e2 studio проектов с Azure RTOS с неустановленной опцией Skip build step и установленной опцией Create links происходит очень медленно. Компиляция в среде e2 studio используя тулчейн IAR также выполняется медленно, поскольку опция компиляции одновременно нескольких файлов не работает.

Проблема решается другими не менее удобными чем eclipse редакторами, такими как Visual Studio Code.

Хорошим источником информации по инновациям ядра ARM-Cortex-M85 является книга:

Arm® Helium™ Technology. M-Profile Vector Extension (MVE) for Cortex-M Processors. Reference BookJon MARSH. Скачивается бесплатно.

© Habrahabr.ru