Муфты электромонтажные от производителя Fucon
РадиоЛоцман - Все об электронике

Удивительные различия между процессорными ядрами ARM, которые кажутся одинаковыми

Журнал РАДИОЛОЦМАН, март 2018

Uwe Knipping

New Electronics

Электромеханические реле Hongfa – надежность и качество 19 января 2023

Существует множество причин, по которым процессорные ядра ARM серии Cortex-M стали доминировать на рынке 32-разрядных микроконтроллеров (МК). Из множества представленных на рынке разновидностей процессорных ядер Cortex-M инженеры-разработчики могут выбирать МК с ядром ARM, наиболее подходящим по параметрам производительности, энергопотребления и возможностям обмена данными. И, стандартизируя семейство Cortex-M, OEM производители получают не только общий набор инструкций, но и экосистему библиотек, инструментов и прошивок, с которыми уже знакомы тысячи инженеров и разработчиков встраиваемых систем.

Удивительные различия между процессорными ядрами ARM, которые кажутся одинаковыми

Одним из основных аргументов, выдвигаемых в пользу выбора МК с ядром ARM Cortex-M, является их потенциал переносимости кода: общий набор инструкций Cortex-M и единый стандарт описания ресурсов МК ARM Cortex (Cortex Microcontroller Software Interface Standard, CMSIS) – это важные части усилий компании по акцентированию внимания мира встраиваемых систем на то, что код, разработанный для одного МК с ядром ARM, может быть легко перенесен на другой без существенной модификации.

В типичном сценарии ОЕМ производитель может захотеть обновить существующий продукт, добавив дополнительные функции, но для этих функций часто требуются новые периферийные устройства, например, контроллер сенсорного интерфейса или ЖК-дисплея, недоступные в имеющемся МК. Это может потребовать перехода к другому МК с ядром ARM Cortex-M3, и поэтому разработчики могут небезосновательно считать, что прошивка и код приложения, запущенные на первом устройстве, несомненно, будут работать и на втором. В конце концов, если оба ядра называются ARM Cortex-M3, почему они должны быть неодинаковыми?

Аналогично, инженер, разработавший систему на ARM Cortex-M0+, знает возможности, характеристики и особенности этого ядра. Этот разработчик вправе предполагать, что в новом проекте можно использовать МК с ядром ARM Cortex-M0+ любого производителя, будучи уверенным, что он имеет точно такие же возможности и особенности.

К сожалению, эти предположения верны не всегда. Обозначение «ARM Cortex-M3» не привязано к уникальной и воспроизводимой аппаратной части; на самом деле, это просто соглашение об именах. Обозначение «ARM Cortex-M3» ARM присваивает набору элементов интеллектуальной собственности, а лицензиаты затем могут конфигурировать эти элементы для использования в каждом производимом ими МК.

Ясно, что количество и степень изменений структуры процессорного ядра, на которые имеет право лицензиат, строго ограничены, и в значительной степени устанавливаются ARM. Как бы то ни было, лучше не думать об ARM Cortex-M3, например, как о едином ядре; скорее, рассматривайте его как платформу элементов интеллектуальной собственности, на которой каждый производитель МК строит свое собственное изделие.

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

Удивительные различия

Итак, каковы же некоторые из самых удивительных различий в реализациях ядер последних МК, основанных на Cortex-M?

  • Шина AXI (Advanced eXtensible Interface).
    Ядро Cortex-M7 снабжено шиной AXI для 64-разрядного обмена данными между блоками памяти и процессором. Однако в некоторых версиях Cortex-M7 ресурсы памяти и процессора подключаются через внешнюю шину, а не через AXI.
     
  • Модуль вычислений с плавающей точкой (FPU).
    Процессорные ядра Cortex-M4 и Cortex-M7 могут иметь или не иметь блок вычислений с плавающей точкой – это решение принимается лицензиатом МК. В ядре Cortex-M7 FPU может быть с одинарной (обычной) или двойной точностью – опять же, этот выбор делает производитель МК.
     
  • Контроллер пробуждения (Wakeup interrupt controller).
    Это замечательная функция энергосбережения, предоставляемая ARM для всех ядер серии Cortex-M. Она позволяет пробудить ядро из режима глубокого сна, если логический уровень на указанном внешнем выводе МК изменится с низкого на высокий. Контроллер не нуждается в каких-либо сигналах синхронизации и обычно экономит 99% мощности, потребляемой ядром в нормальном режиме работы. Функция отличная, но в некоторых МК с ядром Cortex-M она может отсутствовать. Производитель может отказаться от этого контроллера и, тем самым, немного сэкономить на размере кристалла и его стоимости, а также на энергопотреблении в нормальном режиме работы. Таким образом, несмотря на то, что контроллер пробуждения входит в набор стандартных опций ядер Cortex-M, пользователь должен потратить время на тщательное изучение технической документации, чтобы убедиться в его наличии у выбранной модели МК.
     
  • Блок защиты памяти.
    Эта функция позволяет защитить области памяти от перезаписи непривилегированными задачами. Такой модуль может быть реализован в любом ядре серии ARM Cortex-M, за исключением Cortex-M0. Но производитель МК может исключить ее в пользу других функций.
     
  • Подсистема трассировки Micro Trace Buffer.
    Эта функция ядра ARM Cortex-M0+ помогает разработчику отлаживать приложение в случае серьезной неисправности при прогоне программы. Но производители МК могут отказаться от нее. Аналогично технология отладки Embedded Trace Macrocell (ETM) в ядре Cortex-M3 обеспечивает полный просмотр данных и адресов во время выполнения, а также высокоскоростной интерфейс для внешнего отладчика. Вместо всего этого в ядре может быть реализован стандартный отладочный интерфейс – Serial Wire Debug или JTAG.
     
  • Приоритеты прерываний.
    Ядра серий Cortex-M3, M4 и M7 могут иметь от 8 до 256 уровней прерываний; количество поддерживаемых уровней приоритетов прерываний выбирается каждый раз, когда производитель МК разрабатывает новый прибор или его вариант. Таким образом, чрезвычайно сложное приложение с 256 уровнями приоритетов прерываний, работающее на процессоре Cortex-M7, может столкнуться с проблемами при переносе на другой МК Cortex-M7, поддерживающий только 16 уровней.

Сделайте правильный выбор

Это несколько примеров наиболее важных конфигураций параметров, которые определяют для себя производители МК при разработке каждого прибора. Они показывают, насколько важен правильный выбор ядра Corteх-M, независимо от того, чье семейство МК предпочел разработчик.

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

Несмотря на то, что прошлый опыт работы с ядром серии Cortex-M может служить руководством для будущего использования однотипных ядер, не следует забывать, что между ними могут быть различия. Если с самого начала работы над проектом не принимать эти различия во внимание, можно столкнуться с серьезными проблемами.

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: The surprising differences between ARM MCU cores that appear to be identical

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя