Открыть сервис

ARM Cortex-M

ARM Cortex-M — это семейство 32-битных микроконтроллерных ядер, разработанных компанией ARM Holdings (ныне входит в состав SoftBank Group) на основе архитектуры ARMv7-M, ARMv8-M и ARMv8.1-M. Ядра предназначены для использования в энергоэффективных, недорогих и компактных встраиваемых системах, где требуются низкое энергопотребление, детерминированное время отклика на прерывания и малая занимаемая площадь на кристалле. В отличие от процессоров общего назначения (Cortex-A), Cortex-M не имеют блока управления памятью (MMU) и не поддерживают полноценные операционные системы общего назначения (например, Linux), однако могут работать с операционными системами реального времени (RTOS) и голым железом (bare-metal).

История

Предпосылки и появление

В начале 2000-х годов рынок микроконтроллеров был занят архитектурами 8051, AVR, PIC, а также 16- и 32-битными решениями на базе ARM7TDMI и ARM9. Однако ARM7TDMI, хотя и был популярен, имел устаревшую архитектуру (ARMv4T) с неоптимальной производительностью для встраиваемых приложений. В 2004 году ARM представила новое семейство Cortex-M3 на базе архитектуры ARMv7-M, которое стало первым ядром, специально спроектированным для микроконтроллеров. Оно предложило трёхступенчатый конвейер, поддержку Thumb-2 (смесь 16- и 32-битных инструкций), вложенный контроллер прерываний (NVIC) с фиксированной задержкой в 12 тактов, а также режим сна с низким энергопотреблением.

Развитие семейства

  • 2007выпуск Cortex-M0, самого компактного и энергоэффективного ядра (архитектура ARMv6-M), ориентированного на замену 8- и 16-битных микроконтроллеров.
  • 2009 — Cortex-M4, добавивший блок цифровой обработки сигналов (DSP) и модуль с плавающей запятой (FPU) одинарной точности.
  • 2012 — Cortex-M0+ (ARMv6-M), улучшенная версия M0 с пониженным энергопотреблением и возможностью вложенных прерываний.
  • 2015 — Cortex-M7, высокопроизводительное ядро с шестиступенчатым конвейером, FPU двойной точности и кэш-памятью.
  • 2016 — Cortex-M23 и Cortex-M33 на базе новой архитектуры ARMv8-M, которая ввела поддержку TrustZone (аппаратная изоляция для безопасности) и улучшенную обработку прерываний.
  • 2020 — Cortex-M55, первое ядро с поддержкой Helium (M-Profile Vector Extension, MVE) — векторных инструкций для машинного обучения и цифровой обработки сигналов.
  • 2022 — Cortex-M85, самое производительное ядро семейства, с поддержкой Helium и улучшенной архитектурой ARMv8.1-M.

Архитектура и общие характеристики

Процессорное ядро

Все ядра Cortex-M являются гарвардскими (раздельные шины для инструкций и данных) и используют набор инструкций Thumb/Thumb-2. Основные общие черты:

  • Режим работы: Thread mode (обычный) и Handler mode (обработка исключений). Переключение между ними происходит аппаратно.
  • Регистровый файл: 16 32-битных регистров (R0–R15), включая указатель стека (SP, R13), регистр связи (LR, R14) и счётчик команд (PC, R15).
  • Стек: Основной (MSP) и процессный (PSP) указатели стека, что позволяет разделять стеки для ядра ОС и приложений.
  • Прерывания: Встроенный контроллер NVIC поддерживает до 240 внешних прерываний с программируемыми приоритетами (от 8 до 256 уровней). Время входа в прерывание фиксировано и составляет 12 тактов для M3/M4 и 16 тактов для M0/M0+.
  • Системный таймер: SysTick — 24-битный таймер, используемый для генерации тиков ОСРВ.
  • Сброс: Векторная таблица с адресами начального стека и обработчиков исключений.

Энергопотребление

Ядра Cortex-M спроектированы для работы в режимах пониженного энергопотребления. Типичные значения:

  • Cortex-M0: около 12 мкВт/МГц на 90-нм техпроцессе.
  • Cortex-M4: около 30–40 мкВт/МГц.
  • Cortex-M7: около 50–60 мкВт/МГц.

Поддерживаются режимы сна (Sleep, Deep Sleep) с отключением периферии и тактового генератора.

Безопасность

Начиная с архитектуры ARMv8-M, в ядра Cortex-M (M23, M33, M55, M85) внедрена технология TrustZone — аппаратная изоляция между безопасным (Secure) и небезопасным (Non-Secure) миром. Это позволяет защищать криптографические ключи, загрузчик и конфиденциальные данные от вредоносного кода.

Классификация и модели

Семейство Cortex-M делится на три основные линейки по производительности и функциональности:

МодельАрхитектураКонвейерFPUDSPHeliumКэшТипичное применение
Cortex-M0ARMv6-M2 ступениНетНетНетНетЗамена 8-битных МК, датчики, простые контроллеры
Cortex-M0+ARMv6-M2 ступениНетНетНетНетУльтранизкое энергопотребление, IoT-устройства
Cortex-M3ARMv7-M3 ступениНетНетНетНетПромышленные контроллеры, автомобильная электроника
Cortex-M4ARMv7-M3 ступениОпционально (одинарная)ДаНетНетЦифровая обработка сигналов, аудио, управление двигателями
Cortex-M7ARMv7-M6 ступенейОпционально (двойная)ДаНетДа (L1)Высокопроизводительные встраиваемые системы, графика
Cortex-M23ARMv8-M2 ступениНетНетНетНетБезопасные IoT-устройства с TrustZone
Cortex-M33ARMv8-M3 ступениОпционально (одинарная)ДаНетНетБезопасные встраиваемые системы, автомобильная электроника
Cortex-M55ARMv8.1-M4 ступениОпционально (одинарная)ДаДаНетМашинное обучение на периферии, голосовое управление
Cortex-M85ARMv8.1-M6 ступенейОпционально (двойная)ДаДаДа (L1)Самые производительные встраиваемые системы, AI

Применение

Микроконтроллеры на базе Cortex-M

Ядра Cortex-M лицензируются производителями полупроводников, которые интегрируют их в свои микроконтроллеры (MCU) и системы на кристалле (SoC). Наиболее известные семейства:

  • STM32 (STMicroelectronics) — на базе Cortex-M0, M3, M4, M7, M33, M55. Широко используются в промышленности, робототехнике, потребительской электронике.
  • EFM32 (Silicon Labs) — на базе Cortex-M3, M4, ориентированы на сверхнизкое энергопотребление.
  • Kinetis (NXP) — на базе Cortex-M0+, M4, M7.
  • LPC (NXP) — на базе Cortex-M0, M3, M4.
  • MSP432 (Texas Instruments) — на базе Cortex-M4, M0+.
  • Raspberry Pi Pico — на базе RP2040 (два ядра Cortex-M0+).
  • GD32 (GigaDevice) — китайские аналоги STM32 на базе Cortex-M3, M4, M23, M33.

Отрасли

Программное обеспечение

Для разработки под Cortex-M используются:

  • Компиляторы: ARM GCC, Keil MDK (ARM Compiler), IAR EWARM, LLVM/Clang.
  • Отладчики: J-Link, ST-Link, OpenOCD, CMSIS-DAP.
  • Операционные системы реального времени: FreeRTOS, Zephyr, RT-Thread, Mbed OS, Azure RTOS ThreadX.
  • Библиотеки: CMSIS (Cortex Microcontroller Software Interface Standard) — стандартный набор API от ARM, HAL (Hardware Abstraction Layer) от производителей MCU.

Интересные факты

  • Ядро Cortex-M0 является самым маленьким ARM-ядром: его площадь составляет около 0,02 мм² на 90-нм техпроцессе, что позволяет размещать его в дешёвых микроконтроллерах стоимостью менее 0,10 доллара США.
  • Cortex-M3 использовался в первом микроконтроллере STM32 (STM32F103), выпущенном в 2007 году, который стал одним из самых популярных в мире.
  • В 2023 году компания Raspberry Pi выпустила микроконтроллер RP2040 с двумя ядрами Cortex-M0+, работающими на частоте до 133 МГц, что позволило создать недорогую платформу для обучения и прототипирования.
  • Ядра Cortex-M поддерживают технологию WIC (Wake-up Interrupt Controller), позволяющую пробуждать процессор из глубокого сна по сигналу от периферии без включения основного тактового генератора.
  • В России микроконтроллеры на базе Cortex-M активно используются в системах «Умный дом», промышленных контроллерах и встраиваемых решениях, в том числе в рамках импортозамещения (например, микроконтроллеры «Миландр» на базе Cortex-M3 и M4).

Критика и ограничения

  • Отсутствие MMU: ядра Cortex-M не могут запускать операционные системы с виртуальной памятью (Linux, Windows), что ограничивает их применение в сложных многозадачных средах.
  • Ограниченная производительность: даже самое мощное ядро Cortex-M85 уступает по производительности процессорам Cortex-A или x86, что делает их непригодными для задач, требующих высокой вычислительной мощности (например, рендеринг 3D-графики).
  • Зависимость от лицензирования: ARM взимает лицензионные отчисления с производителей, что увеличивает стоимость конечных микроконтроллеров по сравнению с открытыми архитектурами (например, RISC-V).
  • Сложность отладки: встроенные отладочные интерфейсы (SWD, JTAG) требуют специализированного оборудования, что может быть проблемой для начинающих разработчиков.
  • Экосистема: хотя CMSIS упрощает переносимость кода, реальная совместимость между разными производителями MCU ограничена из-за различий в периферии и адресации.

Источники

  • ARM Architecture Reference Manual ARMv7-M and ARMv8-M (ARM Limited)
  • Cortex-M Series Technical Reference Manuals (ARM Limited)
  • Joseph Yiu, «The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors» (Newnes, 2013)
  • Joseph Yiu, «The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors» (Newnes, 2015)
  • Документация STMicroelectronics на микроконтроллеры STM32
  • Документация NXP на семейства Kinetis и LPC
  • Официальный сайт ARM: developer.arm.com

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →