ARM Cortex-M — это группа 32-битных ядер RISC- процессора ARM , лицензированных ARM Limited . Эти ядра оптимизированы для недорогих и энергоэффективных интегральных схем, которые были встроены в десятки миллиардов потребительских устройств. [1] Хотя они чаще всего являются основным компонентом микросхем микроконтроллеров , иногда их встраивают и в другие типы микросхем. Семейство Cortex-M состоит из Cortex-M0, [2] Cortex-M0+, [3] Cortex-M1, [4] Cortex-M3, [5] Cortex-M4, [6] Cortex-M7, [7 ] Cortex-M23, [8] Cortex-M33, [9] Cortex-M35P, [10] Cortex-M52, [11] Cortex-M55, [12] Cortex-M85. [13] Опция блока с плавающей точкой (FPU) доступна для ядер Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85, и когда эти ядра включены в кремний, они иногда называются «Cortex-MxF», где «x» — это вариант ядра.
Обзор
Семейство ARM Cortex-M — это ядра микропроцессоров ARM, которые предназначены для использования в микроконтроллерах , ASIC , ASSP , FPGA и SoC . Ядра Cortex-M обычно используются в качестве специализированных микроконтроллерных чипов, но также «скрыты» внутри чипов SoC в качестве контроллеров управления питанием, контроллеров ввода-вывода, системных контроллеров, контроллеров сенсорных экранов, контроллеров интеллектуальных батарей и контроллеров датчиков.
Хотя 8-битные микроконтроллеры были очень популярны в прошлом, Cortex-M медленно отвоевывает 8-битный рынок, поскольку цены на недорогие чипы Cortex-M снижаются. Cortex-M стали популярной заменой 8-битных чипов в приложениях, которые используют 32-битные математические операции, и заменяют старые ядра ARM, такие как ARM7 и ARM9 .
Лицензия
ARM Limited не производит и не продает процессорные устройства на основе собственных разработок, а лицензирует архитектуру процессора заинтересованным сторонам. Arm предлагает различные условия лицензирования, различающиеся по стоимости и поставляемым продуктам. Всем лицензиатам Arm предоставляет интегрируемое аппаратное описание ядра ARM, а также полный набор инструментов для разработки программного обеспечения и право продавать изготовленный кремний, содержащий процессор ARM.
Изготовление на заказ из силикона
Производители интегрированных устройств (IDM) получают IP процессора ARM в виде синтезируемого RTL (написанного на Verilog ). В этой форме они имеют возможность выполнять оптимизации и расширения на уровне архитектуры. Это позволяет производителю достигать индивидуальных целей проектирования, таких как более высокая тактовая частота, очень низкое энергопотребление, расширения набора инструкций (включая плавающую точку), оптимизация размера, поддержка отладки и т. д. Чтобы определить, какие компоненты были включены в конкретный чип ЦП ARM, обратитесь к техническому описанию производителя и соответствующей документации.
Некоторые варианты кремния для ядер Cortex-M:
Таймер SysTick: 24-битный системный таймер, который расширяет функциональность как процессора, так и контроллера вложенных векторных прерываний (NVIC). При наличии он также обеспечивает дополнительное настраиваемое приоритетное прерывание SysTick. [14] [15] [16] Хотя таймер SysTick является необязательным для M0/M0+/M1/M23, крайне редко можно найти микроконтроллер Cortex-M без него. Если микроконтроллер Cortex-M33/M35P/M52/M55/M85 имеет опцию Security Extension, то он опционально может иметь два SysTick (один Secure, один Non-secure).
Bit-Band: отображает полное слово памяти на один бит в области bit-band. Например, запись в псевдоним слова установит или очистит соответствующий бит в области bit-band. Это позволяет каждому отдельному биту в области bit-band быть напрямую доступным из выровненного по слову адреса. В частности, отдельные биты могут быть установлены, очищены или переключены из C/C++ без выполнения последовательности инструкций чтения-изменения-записи. [14] [15] [16] Хотя bit-band является необязательным, реже можно найти микроконтроллеры Cortex-M3 и Cortex-M4 без него. Некоторые микроконтроллеры Cortex-M0 и Cortex-M0+ имеют bit-band.
Memory Protection Unit (MPU): Обеспечивает поддержку защиты областей памяти посредством применения правил привилегий и доступа. Поддерживает до шестнадцати различных областей, каждая из которых может быть разделена на подобласти равного размера. [14] [15] [16]
Tightly-Coupled Memory (TCM): SRAM с малой задержкой (нулевое состояние ожидания ) , которая может использоваться для хранения стека вызовов , структур управления RTOS, структур данных прерываний, кода обработчика прерываний и критичного к скорости кода. Помимо кэша ЦП , TCM является самой быстрой памятью в микроконтроллере ARM Cortex-M. Поскольку TCM не кэшируется и не доступна с той же скоростью, что и процессор и кэш, ее можно концептуально описать как «адресуемый кэш». Существуют ITCM (TCM инструкций) и DTCM (TCM данных), позволяющие процессору с архитектурой Гарварда одновременно считывать данные из обоих. DTCM не может содержать никаких инструкций, но ITCM может содержать данные. Поскольку TCM тесно связан с ядром процессора, механизмы DMA могут не иметь возможности доступа к TCM в некоторых реализациях.
Примечание: большинство чипов Cortex-M3 и M4 имеют бит-полосу и MPU. Опция бит-полосы может быть добавлена к M0/M0+ с помощью набора Cortex-M System Design Kit. [28]
Примечание: программное обеспечение должно проверять наличие каждой функции перед попыткой ее использования. [16]
Примечание: ограниченная общедоступная информация о Cortex-M35P будет доступна до тех пор, пока не будет выпущено его техническое справочное руководство .
Дополнительные варианты кремния: [14] [15]
Порядок данных: Little-endian или big-endian. В отличие от устаревших ядер ARM, Cortex-M постоянно зафиксирован в кремнии как один из этих вариантов.
Прерывания: от 1 до 32 (M0/M0+/M1), от 1 до 240 (M3/M4/M7/M23), от 1 до 480 (M33/M35P/M52/M55/M85).
Контроллер прерывания пробуждения: опционально.
Регистр смещения векторной таблицы: необязательно (недоступно для M0).
Ширина выборки инструкций: только 16 бит или в основном 32 бита.
Поддержка пользователей/привилегий: необязательно.
Сбросить все регистры: необязательно.
Одноцикловый порт ввода-вывода: опционально. (M0+/M23).
Порт отладочного доступа (DAP): нет, SWD , JTAG и SWD. (опционально для всех ядер Cortex-M)
Остановка поддержки отладки: необязательно.
Количество компараторов контрольных точек: от 0 до 2 (M0/M0+/M1), от 0 до 4 (M3/M4/M7/M23/M33/M35P/M52/M55/M85).
Количество компараторов точек останова: от 0 до 4 (M0/M0+/M1/M23), от 0 до 8 (M3/M4/M7/M33/M35P/M52/M55/M85).
Наборы инструкций
Cortex-M0 / M0+ / M1 реализуют архитектуру ARMv6-M , [14] Cortex-M3 реализует архитектуру ARMv7-M , [15] Cortex-M4 / Cortex-M7 реализует архитектуру ARMv7E-M , [15] Cortex-M23 / M33 / M35P реализуют архитектуру ARMv8-M , [30] а Cortex-M52 / M55 / M85 реализует архитектуру ARMv8.1-M . [30] Архитектуры имеют двоичную совместимость инструкций от ARMv6-M до ARMv7-M и до ARMv7E-M. Двоичные инструкции, доступные для Cortex-M0 / Cortex-M0+ / Cortex-M1, могут выполняться без изменений на Cortex-M3 / Cortex-M4 / Cortex-M7. Двоичные инструкции, доступные для Cortex-M3, могут выполняться без изменений на Cortex-M4 / Cortex-M7 / Cortex-M33 / Cortex-M35P. [14] [15] В архитектурах Cortex-M поддерживаются только наборы инструкций Thumb-1 и Thumb-2; устаревший 32-битный набор инструкций ARM не поддерживается.
Все ядра Cortex-M реализуют общее подмножество инструкций, которое состоит из большинства Thumb-1, некоторых Thumb-2, включая 32-битный результат умножения. Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23 были разработаны для создания наименьшего кремниевого кристалла, таким образом, имеющего наименьшее количество инструкций семейства Cortex-M.
Cortex-M0 / M0+ / M1 включают инструкции Thumb-1, за исключением новых инструкций (CBZ, CBNZ, IT), которые были добавлены в архитектуре ARMv7-M. Cortex-M0 / M0+ / M1 включают небольшое подмножество инструкций Thumb-2 (BL, DMB, DSB, ISB, MRS, MSR). [14] Cortex-M3 / M4 / M7 / M33 / M35P имеют все базовые инструкции Thumb-1 и Thumb-2. Cortex-M3 добавляет три инструкции Thumb-1, все инструкции Thumb-2, аппаратное целочисленное деление и инструкции арифметики насыщения . Cortex-M4 добавляет инструкции DSP и дополнительный блок с плавающей точкой одинарной точности (VFPv4-SP). Cortex-M7 добавляет дополнительный блок FPU двойной точности (VFPv5). [22] [15] Cortex-M23 / M33 / M35P / M52 / M55 / M85 добавляют инструкции TrustZone .
Примечание: Количество циклов задержки прерывания предполагает: 1) стек, расположенный в ОЗУ с нулевым состоянием ожидания, 2) другую функцию прерывания, которая в данный момент не выполняется, 3) Опция Security Extension не существует, поскольку она добавляет дополнительные циклы. Ядра Cortex-M с архитектурой компьютера Гарварда имеют более короткую задержку прерывания, чем ядра Cortex-M с архитектурой компьютера Фон Неймана.
Примечание: серия Cortex-M включает три новые 16-битные инструкции Thumb-1 для режима сна: SEV, WFE, WFI.
Примечание: Cortex-M0 / M0+ / M1 не включает в себя следующие 16-битные инструкции Thumb-1 : CBZ, CBNZ, IT. [14] [15]
Примечание: Cortex-M0 / M0+ / M1 включают только следующие 32-битные инструкции Thumb-2 : BL, DMB, DSB, ISB, MRS, MSR. [14] [15]
Примечание: Cortex-M0 / M0+ / M1 / M23 имеет только 32-битные инструкции умножения с младшим 32-битным результатом (32 бит × 32 бита = младшие 32 бита), тогда как Cortex-M3 / M4 / M7 / M33 / M35P включает дополнительные 32-битные инструкции умножения с 64-битными результатами (32 бит × 32 бита = 64 бита). Cortex-M4 / M7 (опционально M33 / M35P) включает инструкции DSP для (16 бит × 16 бит = 32 бита), (32 бит × 16 бит = старшие 32 бита), (32 бит × 32 бита = старшие 32 бита) умножений. [14] [15]
Примечание: Количество циклов для выполнения инструкций умножения и деления различается в зависимости от конструкции ядра ARM Cortex-M. Некоторые ядра имеют опцию кремния для выбора высокой скорости или малого размера (низкой скорости), поэтому ядра имеют возможность использовать меньше кремния с недостатком большего количества циклов. Прерывание, возникающее во время выполнения инструкции деления или медленной итеративной инструкции умножения, заставит процессор отказаться от инструкции, а затем перезапустить ее после возврата прерывания.
Инструкции умножения «32-битный результат» – Cortex-M0/M0+/M23 – это 1 или 32-тактный вариант кремния, Cortex-M1 – это 3 или 33-тактный вариант кремния, Cortex-M3/M4/M7/M33/M35P – это 1-тактный вариант.
Умножение инструкций «64-битный результат» – Cortex-M3 составляет 3–5 тактов (в зависимости от значений), Cortex-M4/M7/M33/M35P – 1 такт.
Разделение инструкций – Cortex-M3/M4 составляет 2–12 циклов (в зависимости от значений), Cortex-M7 составляет 3–20 циклов (в зависимости от значений), Cortex-M23 составляет 17 или 34 цикла (опция), Cortex-M33 составляет 2–11 циклов (в зависимости от значений), Cortex-M35P будет определен позднее.
Примечание: Некоторые ядра Cortex-M имеют кремниевые опции для различных типов блоков с плавающей точкой ( FPU ). Cortex-M55 / M85 имеет опцию для половинной точности ( HP ), Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 имеет опцию для одинарной точности ( SP ), Cortex-M7 / M52 / M55 / M85 имеет опцию для двойной точности ( DP ). Когда включен FPU, ядро иногда называют «Cortex-MxF», где «x» — это вариант ядра, например, Cortex-M4 F. [ 14] [15]
Примечание: MOVW — это псевдоним, означающий 32-битную «широкую» инструкцию MOV.
Примечание: BW — это безусловный переход на большие расстояния (по кодировке, принципу действия и диапазону аналогичен BL, за исключением настройки регистра LR).
Примечание: для Cortex-M1 существуют инструкции WFE/WFI/SEV, но они выполняются как инструкции NOP.
Примечание: инструкции FPU половинной точности (HP) действительны в Cortex-M52 / M55 / M85 только при наличии опции HP FPU в кремнии.
Примечание: инструкции FPU с одинарной точностью (SP) действительны в Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 только при наличии опции SP FPU в кремнии.
Примечание: инструкции FPU двойной точности (DP) действительны в Cortex-M7 / M52 / M55 / M85 только при наличии опции DP FPU в кремнии.
Устаревания
Архитектура ARM для серии ARM Cortex-M удалила некоторые функции старых ядер: [14] [15]
32-битный набор инструкций ARM не включен в ядра Cortex-M.
Сопроцессоры не поддерживались на ядрах Cortex-M, пока кремниевая опция не была вновь введена в «ARMv8-M Mainline» для ядер ARM Cortex-M33/M35P.
Возможности 32-битного набора инструкций ARM во многом дублируются наборами инструкций Thumb-1 и Thumb-2, но некоторые функции ARM не имеют аналогичной функции:
Инструкции ARM SWP и SWPB (поменять местами) не имеют аналогичной функции в Cortex-M.
Набор 16-битных инструкций Thumb-1 со временем эволюционировал с момента его первого выпуска в устаревших ядрах ARM7T с архитектурой ARMv4T. Новые инструкции Thumb-1 добавлялись по мере выпуска каждой устаревшей архитектуры ARMv5 / ARMv6 / ARMv6T2. Некоторые 16-битные инструкции Thumb-1 были удалены из ядер Cortex-M:
Инструкция "BLX <immediate>" не существует, поскольку она использовалась для переключения с набора инструкций Thumb-1 на ARM. Инструкция "BLX <register>" все еще доступна в Cortex-M.
SETEND не существует, поскольку оперативное переключение режима порядка байтов больше не поддерживается.
Инструкции сопроцессора не поддерживались на ядрах Cortex-M, пока кремниевая опция не была вновь введена в «ARMv8-M Mainline» для ядер ARM Cortex-M33/M35P.
Инструкция SWI была переименована в SVC, хотя двоичное кодирование инструкции осталось прежним. Однако код обработчика SVC отличается от кода обработчика SWI из-за изменений в моделях исключений.
Кортекс-М0
Ядро Cortex-M0 оптимизировано для небольших размеров кремниевых кристаллов и использования в самых недорогих чипах. [2]
Cortex-M0+ — это оптимизированный надмножество Cortex-M0. Cortex-M0+ имеет полную совместимость набора инструкций с Cortex-M0, что позволяет использовать тот же компилятор и отладочные инструменты. Конвейер Cortex-M0+ был сокращен с 3 до 2 этапов, что снижает энергопотребление и увеличивает производительность (более высокий средний IPC из-за ветвлений, занимающих на один цикл меньше). В дополнение к функциям отладки в существующем Cortex-M0, к Cortex-M0+ может быть добавлена кремниевая опция, называемая буфером микротрассировки (MTB), которая обеспечивает простой буфер трассировки инструкций. Cortex-M0+ также получил функции Cortex-M3 и Cortex-M4, которые могут быть добавлены как кремниевые опции, такие как блок защиты памяти (MPU) и перемещение векторной таблицы. [18]
Ключевые особенности ядра Cortex-M0+: [18]
Архитектура ARMv6-M [14]
2-ступенчатый конвейер (на один меньше, чем Cortex-M0)
Наборы инструкций: (такие же, как у Cortex-M0)
Большой палец 1 (большинство), отсутствует CBZ, CBNZ, IT
Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR
32-битное аппаратное целочисленное умножение с 32-битным результатом
Следующие чипы имеют Cortex-M0+ в качестве вторичного ядра:
Cypress PSoC 6200 (один Cortex-M4F + один Cortex-M0+)
ST WB (один Cortex-M4F + один Cortex-M0+)
Самые маленькие микроконтроллеры ARM относятся к типу Cortex-M0+ (по состоянию на 2014 год наименьшим размером 1,6 мм на 2 мм в корпусе размером с чип является Kinetis KL03). [32]
21 июня 2018 года был анонсирован « самый маленький в мире компьютер » или компьютерное устройство на базе ARM Cortex-M0+ (включая оперативную память и беспроводные передатчики и приемники на основе фотоэлектрических элементов ) исследователями из Мичиганского университета на симпозиуме по технологиям и схемам СБИС 2018 года с докладом «Беспроводная и безбатарейная сенсорная система размером 0,04 мм 3 16 нВт со встроенным процессором Cortex-M0+ и оптической связью для измерения температуры в сотовой сети». Устройство составляет одну десятую размера компьютера IBM, который ранее был объявлен мировым рекордом по размеру, выпущенного несколько месяцев назад в марте 2018 года, что меньше крупинки соли.
Кортекс-М1
Cortex-M1 — это оптимизированное ядро, специально разработанное для загрузки в микросхемы FPGA . [4]
32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение занимает 1 цикл, но 64-битное умножение и инструкции MAC требуют дополнительных циклов.
32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение и MAC занимают 1 цикл.
Texas Instruments Sitara AM5700 (один или два Cortex-A15 + два Cortex-M4 в качестве блоков обработки изображений + два Cortex-M4 в качестве блоков общего назначения)
Кортекс-М7
Cortex-M7 — это высокопроизводительное ядро с почти вдвое большей энергоэффективностью, чем у старого Cortex-M4. [7] Оно оснащено 6-ступенчатым суперскалярным конвейером с предсказанием ветвлений и дополнительным блоком с плавающей точкой, способным выполнять операции с одинарной точностью и, опционально, с двойной точностью . [7] [38] Шины инструкций и данных были увеличены до 64 бит по сравнению с предыдущими 32-битными шинами. Если ядро содержит FPU, оно известно как Cortex-M7F, в противном случае это Cortex-M7.
32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение и MAC занимают 1 цикл.
Дополнительный блок с плавающей точкой (FPU): (одинарная точность) или (одинарная и двойная точность), оба соответствуют IEEE-754-2008. Это называется расширением FPv5.
Дополнительный кэш ЦП : кэш инструкций от 0 до 64 КБ, кэш данных от 0 до 64 КБ, каждый с опциональным ECC .
Дополнительная тесно связанная память (TCM): от 0 до 16 МБ инструкций-TCM, от 0 до 16 МБ данных-TCM, каждая с опциональным ECC.
Дополнительный блок защиты памяти (MPU): 8 или 16 областей.
Дополнительная встроенная трассировочная макроячейка (ETM): только инструкции или инструкции и данные.
Дополнительный режим удержания (с комплектом управления питанием Arm) для режимов сна.
Ядро Cortex-M23 было анонсировано в октябре 2016 года [39] и основано на архитектуре ARMv8-M , которая была анонсирована ранее в ноябре 2015 года. [40] Концептуально Cortex-M23 похож на Cortex-M0+, плюс инструкции целочисленного деления и функции безопасности TrustZone, а также имеет двухступенчатый конвейер инструкций . [8]
32-битное аппаратное целочисленное деление (17 или 34 цикла). (медленнее, чем деление во всех других ядрах)
Границы предела стека. (доступно только с опцией SAU)
Варианты кремния:
Скорость аппаратного целочисленного умножения: 1 или 32 цикла.
Скорость аппаратного целочисленного деления: максимум 17 или 34 цикла. В зависимости от делителя инструкция может быть выполнена за меньшее количество циклов.
Дополнительный блок защиты памяти (MPU): 0, 4, 8, 12, 16 областей.
Дополнительный блок атрибутов безопасности (SAU): регионы 0, 4, 8.
Одноцикловый порт ввода-вывода (доступен в M0+/M23).
Микротрейс-буфер (MTB)
Чипсы
На базе ядра Cortex-M23 построены следующие микроконтроллеры:
Ядро Cortex-M33 было анонсировано в октябре 2016 года [39] и основано на архитектуре ARMv8-M , которая была анонсирована ранее в ноябре 2015 года. [40] Концептуально Cortex-M33 похож на гибрид Cortex-M4 и Cortex-M23, а также имеет 3-ступенчатый конвейер инструкций . [9]
Ядро Cortex-M35P было анонсировано в мае 2018 года и основано на архитектуре Armv8-M . Концептуально это ядро Cortex-M33 с новым кэшем инструкций, а также новыми концепциями аппаратной защиты от несанкционированного доступа, заимствованными из семейства ARM SecurCore, и настраиваемыми функциями четности и ECC. [10]
В настоящее время информация о Cortex-M35P ограничена, поскольку его техническое справочное руководство и общее руководство пользователя еще не опубликованы.
Чипсы
На базе ядра Cortex-M35P построены следующие микроконтроллеры:
Ядро Cortex-M52 было анонсировано в ноябре 2023 года и основано на архитектуре Armv8.1-M . Концептуально его можно рассматривать как нечто среднее между Cortex-M33 и Cortex-M55. Основные отличия заключаются в том, что его сопроцессор Helium является однотактным (M55 — двухтактным), и он имеет 32-битную главную шину, аналогичную M33, для облегчения перехода приложений. Он имеет 4-ступенчатый конвейер инструкций. [11]
Ключевые особенности ядра Cortex-M52 включают в себя:
Архитектура ARMv8.1-M Mainline/Helium. [30]
4-х ступенчатый конвейер.
Границы предела стека (доступно только с опцией SAU).
32-битная основная шина (AHB или AXI) [11]
Варианты кремния:
Гелий (расширение вектора M-профиля, MVE)
Расширение аутентификации указателя и идентификации цели ветвления
С плавающей точкой одинарной и двойной точности
Поддержка расширения цифровой обработки сигналов (DSP)
Кэш данных размером 4 КБ, 8 КБ, 16 КБ, 32 КБ, 64 КБ
ECC на кэшах и TCM
1–480 прерываний
3–8 бит приоритета исключения
Внутренние и внешние опции WIC, опционально CTI, ITM и DWT
Пользовательские инструкции ARM
Чипсы
Семейства микроконтроллеров Alif Semiconductor Ensemble предлагают одно- или двухъядерные ядра Cortex-M55, каждое из которых работает в паре с нейропроцессорами Ethos-U55.
Документация для чипов ARM обширна. Раньше документация по 8-битным микроконтроллерам обычно умещалась в один документ, но по мере развития микроконтроллеров также развивалось и все необходимое для их поддержки. Пакет документации для чипов ARM обычно состоит из набора документов от производителя ИС, а также поставщика ядра ЦП ( ARM Limited ).
Типичное нисходящее дерево документации выглядит следующим образом:
Дерево документации (сверху вниз)
Сайт производителя микросхем.
Маркетинговые слайды производителя ИС.
Технический паспорт производителя микросхемы для точного физического чипа.
Справочное руководство производителя микросхем, в котором описываются распространенные периферийные устройства и аспекты семейства физических микросхем.
Основной веб-сайт ARM.
Общее руководство пользователя ядра ARM.
Техническое справочное руководство по ядру ARM.
Справочное руководство по архитектуре ARM.
У производителей ИС есть дополнительные документы, такие как: руководства пользователя оценочной платы, примечания по применению, руководства по началу работы, документы библиотеки программного обеспечения, исправления и т. д. См. раздел Внешние ссылки для ссылок на официальные документы Arm.
^ abcdefghijklmnopqr "Справочное руководство по архитектуре ARMv6-M". ARM Limited .
^ abcdefghijklmnopqr "Справочное руководство по архитектуре ARMv7-M". ARM Limited .
^ abcd Разработка встроенного программного обеспечения Cortex-M3; Примечание к приложению 179; ARM Limited.
^ abc "Техническое справочное руководство Cortex-M0". ARM Limited .
^ abcd "Техническое справочное руководство по Cortex-M0+". ARM Limited .
^ abc "Техническое справочное руководство по Cortex-M1". ARM Limited .
^ abc "Техническое справочное руководство по Cortex-M3". ARM Limited .
^ abc "Техническое справочное руководство по Cortex-M4". ARM Limited .
^ abcd "Техническое справочное руководство по Cortex-M7". ARM Limited .
^ abc "Техническое справочное руководство по Cortex-M23". ARM Limited .
^ abc "Техническое справочное руководство по Cortex-M33". ARM Limited .
^ ab "Техническое справочное руководство Cortex-M52". ARM Limited .
^ ab "Техническое справочное руководство Cortex-M55". ARM Limited .
^ ab "Техническое справочное руководство Cortex-M85". ARM Limited .
^ abc "Cortex-M System Design Kit (CMSDK)". Arm Holdings . Архивировано из оригинала 4 марта 2016 г.
^ abcdefghij Руководство по программированию ARM Cortex-M для инструкций барьера памяти; Раздел 3.6 Требования к реализации системы; AppNote 321; ARM Limited.
^ abcdefghijkl "Справочное руководство по архитектуре ARMv8-M". ARM Limited .
^ 32-битные микроконтроллеры PIC и SAM; Microchip.
^ Fingas, Jon (25 февраля 2014 г.). «Freescale делает самый маленький в мире чип контроллера ARM еще меньше» . Получено 2 октября 2014 г.
^ GOWIN Semiconductor присоединяется к ARM DesignStart, предлагая бесплатные процессоры ARM Cortex-M1 для своих семейств продуктов FPGA
^ Cortex-M1 DesignStart FPGA XilinxEdition; ARM Limited.
^ Садасиван, Шьям. "Введение в процессор ARM Cortex-M3" (PDF) . ARM Limited. Архивировано из оригинала (PDF) 26 июля 2014 г.
^ "Samsung Exynos 7420 Deep Dive - Inside a Modern 14nm SoC". AnandTech . Получено 2015-06-15 .
^ Cortex-M3 DesignStart FPGA XilinxEdition
^ "ARM выводит рынок микроконтроллеров на новый уровень с помощью высокопроизводительного процессора Cortex-M7". ARM Limited (пресс-релиз). 24 сентября 2014 г.
^ abcd Новые процессоры ARM Cortex-M предлагают следующий отраслевой стандарт для безопасного Интернета вещей; ARM Limited; 25 октября 2016 г.
^ Архитектура ARMv8-M упрощает безопасность интеллектуальных встраиваемых устройств; ARM Limited; 10 ноября 2015 г.