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

Cortex-M

Cortex-M — это семейство 32-битных микроконтроллерных ядер, разработанных компанией ARM Holdings (ARM Ltd. — британская компания, не подпадающая под ограничения в РФ, однако её продукция используется в российской электронике). Ядра Cortex-M предназначены для встраиваемых систем с низким энергопотреблением, жёсткими требованиями к стоимости и реальному времени. Они являются частью более широкой архитектуры ARMv7-M (и её модификаций ARMv8-M, ARMv8.1-M) и представляют собой наиболее массовое семейство процессорных ядер в мире для микроконтроллеров.

История

Разработка семейства Cortex-M началась в середине 2000-х годов как ответ на растущую потребность в унифицированной, энергоэффективной и легко программируемой архитектуре для микроконтроллеров. До этого ARM предлагала ядра ARM7TDMI (архитектура ARMv4T) и ARM9E (ARMv5TE), которые были ориентированы на приложения общего назначения и не имели специализированных средств для работы с прерываниями в реальном времени.

Первое ядро семейства, Cortex-M3, было анонсировано в 2004 году и выпущено в 2005 году. Оно базировалось на новой архитектуре ARMv7-M, которая ввела:

  • Гарвардскую архитектуру памяти (раздельные шины для инструкций и данных) с единым адресным пространством.
  • Встроенный контроллер прерываний (NVIC — Nested Vectored Interrupt Controller) с аппаратной поддержкой приоритетов и вложенности.
  • Режим Thumb-2, позволяющий выполнять смесь 16- и 32-битных инструкций без переключения режимов, что повысило плотность кода.
  • Системный таймер SysTick для операционных систем реального времени.

Cortex-M3 стал революционным для рынка микроконтроллеров, обеспечив производительность на уровне 1,25 DMIPS/МГц при низком энергопотреблении. Первыми лицензиатами стали компании STMicroelectronics (серия STM32F1), NXP (LPC1700) и Texas Instruments (Stellaris, позже — Tiva).

В 2009 году было выпущено ядро Cortex-M0 — самое энергоэффективное и компактное в семействе. Оно базировалось на архитектуре ARMv6-M (упрощённой версии ARMv7-M) и занимало всего около 12 000 логических вентилей. Cortex-M0 предназначался для замены 8-битных и 16-битных микроконтроллеров (например, 8051, PIC, AVR) в простых устройствах. В 2012 году появилась его улучшенная версия Cortex-M0+ с ещё более низким энергопотреблением и поддержкой микроконтроллерных периферийных интерфейсов.

В 2010 году вышло ядро Cortex-M4, которое добавило к возможностям Cortex-M3 блок цифровой обработки сигналов (DSP) и опциональный блок операций с плавающей запятой (FPU) одинарной точности (IEEE 754). Это позволило использовать Cortex-M4 в задачах аудиообработки, управления двигателями и промышленной автоматики.

В 2015 году ARM представила архитектуру ARMv8-M, которая легла в основу ядер Cortex-M23 и Cortex-M33. Главным нововведением стала поддержка TrustZone — аппаратной технологии изоляции кода и данных для обеспечения безопасности (например, для защиты ключей шифрования или выполнения критических функций). Cortex-M23 — это преемник Cortex-M0/M0+, а Cortex-M33 — преемник Cortex-M3/M4. В 2019 году вышло ядро Cortex-M55 (архитектура ARMv8.1-M), которое впервые в семействе получило блок векторных вычислений Helium (MVE — M-Profile Vector Extension) для ускорения задач машинного обучения и цифровой обработки сигналов.

В 2020 году было анонсировано ядро Cortex-M85 — самое производительное в семействе на момент 2024 года, сочетающее возможности Cortex-M55 с улучшенной архитектурой и поддержкой кэш-памяти.

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

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

  • NVIC (Nested Vectored Interrupt Controller): аппаратный контроллер прерываний с поддержкой до 240 внешних прерываний, вложенности (до 256 уровней приоритета) и автоматической векторизации (адрес обработчика берётся из таблицы векторов).
  • SysTick: 24-битный системный таймер, используемый для генерации тактов операционной системы.
  • Режимы работы: Thread (обычный) и Handler (обработчик прерываний). В режиме Handler доступен только привилегированный доступ.
  • Стек: два стека — основной (MSP) и процессный (PSP), что упрощает реализацию ОСРВ.
  • Спящие режимы: поддержка режимов Sleep (остановка ядра) и Deep Sleep (с отключением тактирования периферии).
  • Bit-Banding: в некоторых ядрах (Cortex-M3, M4) — механизм, позволяющий адресовать отдельные биты в памяти через псевдо-адреса, упрощая работу с флагами и регистрами.

Все ядра Cortex-M имеют фиксированную карту памяти, где первые 512 байт зарезервированы под таблицу векторов (содержит адреса начального стека и обработчиков прерываний).

Классификация ядер

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

ЯдроАрхитектураГод выпускаПроизводительность (DMIPS/МГц)Особенности
Cortex-M0ARMv6-M20090,84Минимальная площадь (12k вентилей), низкое энергопотребление
Cortex-M0+ARMv6-M20120,95Улучшенная энергоэффективность, микроконтроллерный интерфейс
Cortex-M1ARMv6-M20070,8Оптимизирован для FPGA (Xilinx, Altera)
Cortex-M3ARMv7-M20051,25Базовое ядро с NVIC, Thumb-2, SysTick
Cortex-M4ARMv7E-M20101,25DSP-инструкции, опциональный FPU (одинарная точность)
Cortex-M7ARMv7E-M20142,14Кэш-память L1, FPU двойной точности, 6-стадийный конвейер
Cortex-M23ARMv8-M20160,9TrustZone, преемник M0/M0+
Cortex-M33ARMv8-M20161,5TrustZone, DSP, опциональный FPU, преемник M3/M4
Cortex-M35PARMv8-M20181,5TrustZone, защита от побочных каналов (Side-Channel)
Cortex-M55ARMv8.1-M20201,8Helium (MVE), векторные вычисления, машинное обучение
Cortex-M85ARMv8.1-M20222,4Helium, кэш, улучшенная производительность, преемник M7

Применение

Ядра Cortex-M используются в подавляющем большинстве современных микроконтроллеров. Основные области применения:

Производители и популярные серии

Микроконтроллеры на ядрах Cortex-M выпускают десятки компаний. Наиболее известные:

  • STMicroelectronics: серия STM32 (Cortex-M0, M3, M4, M33, M7) — самая массовая и популярная на рынке.
  • NXP Semiconductors: серии LPC (Cortex-M0, M3, M4), i.MX RT (Cortex-M7) и Kinetis (Cortex-M0+, M4).
  • Texas Instruments: серии Tiva C (Cortex-M4), MSP432 (Cortex-M4) и SimpleLink (Cortex-M4, M33).
  • Microchip Technology: серии SAM (Cortex-M0+, M4, M7) и AVR DA (Cortex-M0+).
  • Renesas Electronics: серии RA (Cortex-M23, M33, M4) и Synergy (Cortex-M0+, M4).
  • Analog Devices: серии ADuCM (Cortex-M3, M4) для промышленных измерений.
  • Nordic Semiconductor: серии nRF52 (Cortex-M4) и nRF53 (Cortex-M33) для Bluetooth Low Energy и IoT.
  • Infineon Technologies: серии PSoC 6 (Cortex-M0+ и M4) и XMC (Cortex-M0, M4).

В России микроконтроллеры на ядрах Cortex-M производятся, в частности, компанией «Микрон» (серия 1986ВЕ9х — на ядре Cortex-M3) и «ЭЛВИС-НеоТек» (серия Мультикор — на ядрах Cortex-M4 и M7).

Инструменты разработки

Для программирования ядер Cortex-M используются:

  • Компиляторы: ARM Compiler (Keil), GCC (GNU Arm Embedded Toolchain), IAR Embedded Workbench, LLVM/Clang.
  • Среды разработки: Keil MDK, IAR Embedded Workbench, STM32CubeIDE, MCUXpresso, Arduino IDE (для некоторых плат).
  • Отладчики: J-Link (SEGGER), ST-Link (STMicroelectronics), U-Link (Keil), CMSIS-DAP (открытый стандарт).
  • Библиотеки и фреймворки: CMSIS (Cortex Microcontroller Software Interface Standard) — стандартный набор API от ARM, HAL (Hardware Abstraction Layer) от производителей, FreeRTOS, Zephyr, Mbed OS.

Преимущества и ограничения

Преимущества:

  • Широкая экосистема: огромное количество совместимых микроконтроллеров, инструментов и библиотек.
  • Низкое энергопотребление: ядра Cortex-M0+ потребляют менее 10 мкА/МГц в активном режиме.
  • Масштабируемость: от простых датчиков (Cortex-M0) до сложных систем управления (Cortex-M85).
  • Аппаратная безопасность: TrustZone на ядрах ARMv8-M.
  • Реальное время: предсказуемое время обработки прерываний (12 циклов для Cortex-M3).

Ограничения:

  • Отсутствие поддержки виртуальной памяти (MMU) — не подходят для полноценных операционных систем общего назначения (Linux, Windows).
  • Ограниченная производительность по сравнению с ядрами Cortex-A (до 2,4 DMIPS/МГц против 2,5–5 DMIPS/МГц у Cortex-A).
  • Зависимость от лицензирования ARM — производители платят роялти за каждое ядро.

Сравнение с конкурентами

Основные конкуренты Cortex-M на рынке микроконтроллеров:

  • RISC-V: открытая архитектура, набирающая популярность. Ядра RISC-V (например, SiFive E2/E3/E7) предлагают сравнимую производительность и энергопотребление, но экосистема пока менее зрелая.
  • AVR (Microchip): 8-битные микроконтроллеры, уступающие по производительности, но более простые в освоении.
  • PIC (Microchip): 8/16/32-битные семейства, менее популярны, чем Cortex-M.
  • ESP32 (Espressif): на ядре Xtensa LX6 (Tensilica), имеет встроенный Wi-Fi/Bluetooth, но уступает по энергоэффективности Cortex-M.

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

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

  • По состоянию на 2023 год, суммарные продажи микроконтроллеров на ядрах Cortex-M превысили 100 миллиардов единиц.
  • Ядро Cortex-M0 является самым лицензируемым процессорным ядром в истории.
  • В 2017 году ARM выпустила ядро Cortex-M1 для FPGA, которое используется в космических аппаратах благодаря радиационной стойкости (настраивается под конкретные требования).
  • Некоторые ядра Cortex-M (например, M7) используются в системах управления беспилотными летательными аппаратами (дронами) для обработки данных с датчиков и управления двигателями.

Источники

  • ARM Architecture Reference Manual ARMv7-M and ARMv8-M
  • ARM Cortex-M Processor Comparison Table (ARM Developer)
  • «The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors» — Joseph Yiu
  • «The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors» — Joseph Yiu
  • Документация производителей микроконтроллеров (STMicroelectronics, NXP, Texas Instruments)
  • Отчёты аналитических агентств (IC Insights, Semico Research) о рынке микроконтроллеров

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

На главную BFOmetr →