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-M0 | ARMv6-M | 2009 | 0,84 | Минимальная площадь (12k вентилей), низкое энергопотребление |
| Cortex-M0+ | ARMv6-M | 2012 | 0,95 | Улучшенная энергоэффективность, микроконтроллерный интерфейс |
| Cortex-M1 | ARMv6-M | 2007 | 0,8 | Оптимизирован для FPGA (Xilinx, Altera) |
| Cortex-M3 | ARMv7-M | 2005 | 1,25 | Базовое ядро с NVIC, Thumb-2, SysTick |
| Cortex-M4 | ARMv7E-M | 2010 | 1,25 | DSP-инструкции, опциональный FPU (одинарная точность) |
| Cortex-M7 | ARMv7E-M | 2014 | 2,14 | Кэш-память L1, FPU двойной точности, 6-стадийный конвейер |
| Cortex-M23 | ARMv8-M | 2016 | 0,9 | TrustZone, преемник M0/M0+ |
| Cortex-M33 | ARMv8-M | 2016 | 1,5 | TrustZone, DSP, опциональный FPU, преемник M3/M4 |
| Cortex-M35P | ARMv8-M | 2018 | 1,5 | TrustZone, защита от побочных каналов (Side-Channel) |
| Cortex-M55 | ARMv8.1-M | 2020 | 1,8 | Helium (MVE), векторные вычисления, машинное обучение |
| Cortex-M85 | ARMv8.1-M | 2022 | 2,4 | Helium, кэш, улучшенная производительность, преемник M7 |
Применение
Ядра Cortex-M используются в подавляющем большинстве современных микроконтроллеров. Основные области применения:
- Промышленная автоматика: ПЛК, датчики, приводы, системы управления двигателями (Cortex-M3, M4, M33).
- Потребительская электроника: бытовая техника, игрушки, пульты дистанционного управления, носимые устройства (Cortex-M0, M0+).
- Автомобильная электроника: блоки управления кузовом, системы доступа, датчики (Cortex-M3, M4, M33 с сертификацией ISO 26262).
- Интернет вещей (IoT): умные датчики, шлюзы, устройства с батарейным питанием (Cortex-M0+, M23, M33 с TrustZone).
- Медицинские устройства: портативные мониторы, инсулиновые помпы, слуховые аппараты (Cortex-M4, M55).
- Аудио и речевая обработка: гарнитуры, голосовые ассистенты, активные шумоподавители (Cortex-M4, M55).
- Машинное обучение на периферии: классификация жестов, распознавание речи, предсказательная диагностика (Cortex-M55, M85 с Helium).
Производители и популярные серии
Микроконтроллеры на ядрах 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 →