Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Микросхемы микроконтроллеров ARM Cortex-M0 и Cortex-M3 от NXP и Silicon Labs ( Energy Micro )
Умереть от микросхемы STM32F100C4T6B. Микроконтроллер ARM Cortex-M3 с частотой
24  МГц, флэш-памятью 16  КБ и оперативной памятью 4 КБ. Изготовлено STMicroelectronics .

ARM Cortex-М представляет собой группу 32-разрядных RISC - ARM ядер процессора лицензированных ARM Holdings . Эти ядра оптимизированы для недорогих и энергоэффективных микроконтроллеров, которые встроены в десятки миллиардов потребительских устройств. [1] Ядра состоят из Cortex-M0, Cortex-M0 +, Cortex-M1, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-M35P, Cortex-M55. [2] [3] [4] [5] [6] [7] [8] Ядра Cortex-M4 / M7 / M33 / M35P / M55 имеют FPU кремниевый вариант, и когда они включены в кремний, эти ядра иногда называют «Cortex-Mx с FPU» или «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 Holdings не производит и не продает устройства ЦП на основе собственных разработок, а скорее лицензирует архитектуру процессора заинтересованным сторонам. Arm предлагает различные условия лицензирования, различающиеся по стоимости и результатам. Всем лицензиатам Arm предоставляет интегрируемое описание аппаратного обеспечения ядра ARM, а также полный набор инструментов для разработки программного обеспечения и право продавать произведенные микросхемы, содержащие ЦП ARM.

Силиконовая настройка [ править ]

Производители интегрированных устройств (IDM) получают IP-адрес процессора ARM как синтезируемый RTL (написанный на Verilog ). В этой форме они могут выполнять оптимизацию и расширения архитектурного уровня. Это позволяет производителю достичь индивидуальных целей проектирования, таких как более высокая тактовая частота, очень низкое энергопотребление, расширения набора команд (включая числа с плавающей запятой), оптимизация размера, поддержка отладки и т. Д. Чтобы определить, какие компоненты были включены в конкретный ARM Чип процессора, обратитесь к техническому описанию производителя и сопутствующей документации.

Вот некоторые из вариантов кремния для ядер Cortex-M:

  • Таймер SysTick: 24-битный системный таймер, который расширяет функциональные возможности как процессора, так и контроллера вложенных векторных прерываний (NVIC). Если он присутствует, он также предоставляет дополнительное прерывание SysTick с настраиваемым приоритетом. [9] [10] [11] Хотя таймер SysTick не является обязательным, очень редко можно найти микроконтроллер Cortex-M без него. Если микроконтроллер Cortex-M33 имеет опцию Security Extension, то у него есть два SysTick, один Secure и один незащищенный.
  • Bit-Band: отображает полное слово памяти на один бит в области битовой полосы. Например, запись в слово псевдонима установит или очистит соответствующий бит в области битовой полосы. Это позволяет напрямую получать доступ к каждому отдельному биту в области битовой полосы из адреса, выровненного по словам. В частности, отдельные биты могут быть установлены, очищены или переключены из C / C ++ без выполнения последовательности инструкций чтения-изменения-записи. [9] [10] [11] Хотя битовый диапазон не является обязательным, реже можно найти микроконтроллер Cortex-M3 и Cortex-M4 без него. Некоторые микроконтроллеры Cortex-M0 и Cortex-M0 + имеют битовый диапазон.
  • Блок защиты памяти (MPU): обеспечивает поддержку защиты областей памяти посредством применения правил доступа и привилегий. Он поддерживает до восьми различных регионов, каждый из которых может быть разделен на еще восемь субрегионов равного размера. [9] [10] [11]
  • Tightly-Coupled Memory (TCM): ОЗУ с малой задержкой, которая используется для хранения критически важных процедур, данных и стека. Помимо кеша, это обычно самая быстрая оперативная память микроконтроллера.
  • Примечание. Большинство чипов Cortex-M3 и M4 имеют битовый диапазон и MPU. Опция битовой полосы может быть добавлена ​​к M0 / M0 + с помощью Cortex-M System Design Kit. [13]
  • Примечание. Программное обеспечение должно подтверждать существование функции, прежде чем пытаться ее использовать. [11]
  • Примечание. Доступна ограниченная общедоступная информация о Cortex-M35P, пока не будет выпущено его техническое справочное руководство .

Дополнительные варианты кремния: [9] [10]

  • Порядок байтов данных: обратный порядок байтов или обратный порядок байтов. В отличие от устаревших ядер ARM, Cortex-M постоянно фиксируется в кремнии в качестве одного из этих вариантов.
  • Прерывания: от 1 до 32 (M0 / M0 + / M1), от 1 до 240 (M3 / M4 / M7 / M23), от 1 до 480 (M33 / M35P).
  • Контроллер прерывания пробуждения: Необязательно.
  • Регистр смещения таблицы векторов: Необязательно. (недоступно для M0).
  • Ширина выборки инструкций: только 16 бит или в большинстве случаев 32 бит.
  • Поддержка пользователей / привилегий: необязательно.
  • Сбросить все регистры: необязательно.
  • Порт одноциклового ввода-вывода: необязательно. (M0 + / M23).
  • Порт доступа отладки (DAP): Нет, SWD, JTAG и SWD. (необязательно для всех ядер Cortex-M)
  • Прекращение поддержки отладки: необязательно.
  • Количество компараторов точек наблюдения: от 0 до 2 (M0 / M0 + / M1), от 0 до 4 (M3 / M4 / M7 / M23 / M33 / M35P).
  • Количество компараторов точек останова: от 0 до 4 (M0 / M0 + / M1 / ​​M23), от 0 до 8 (M3 / M4 / M7 / M33 / M35P).

Наборы инструкций [ править ]

Cortex-M0 / M0 + / M1 реализует архитектуру ARMv6-M , [9] Cortex-M3 реализует архитектуру ARMv7-M , [10] Cortex-M4 / Cortex-M7 реализует архитектуру ARMv7E-M , [10] Cortex-M23 / M33 / M35P реализуют архитектуру ARMv8-M [15], а Cortex-M55 реализует архитектуру ARMv8.1-M . [16] Архитектуры являются бинарными инструкциями, совместимыми снизу вверх, от 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. [9] [10] В архитектурах 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). 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). [9] [10] Cortex-M23 / M33 добавляет инструкции TrustZone .

  • Примечание: Cortex-M0 / M0 + / M1 не включает эти 16-битные инструкции Thumb-1 : CBZ, CBNZ, IT. [9] [10]
  • Примечание: Cortex-M0 / M0 + / M1 включает только эти 32-битные инструкции Thumb-2 : BL, DMB, DSB, ISB, MRS, MSR. [9] [10]
  • Примечание: 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 бит). [9] [10]
  • Примечание. Количество циклов для выполнения команд умножения и деления различается в зависимости от архитектуры ядра 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-M4 / M7 / M33 / M35P имеет кремниевый вариант без FPU или FPU с одинарной точностью ( SP ), а Cortex-M7 добавляет третий силиконовый вариант с поддержкой как одинарной точности (SP), так и двойной точности. -точность ( DP ). Если Cortex-M4 / M7 / М33 / M35P имеет FPU, то он известен как Cortex-M4 F / Cortex-М7 Ж / Cortex-M33 F / Cortex-M35P F . [9] [10]
  • Примечание. Серия Cortex-M включает три новых 16-битных инструкции Thumb-1 для спящего режима: SEV, WFE, WFI.
  • Примечание. Подсчет циклов задержки прерывания предполагает: 1) стек, расположенный в ОЗУ с нулевым ожиданием, 2) другую функцию прерывания, которая в данный момент не выполняется, 3) параметр Security Extension не существует, потому что он добавляет дополнительные циклы. Ядра Cortex-M с компьютерной архитектурой Harvard имеют более короткую задержку прерывания, чем ядра Cortex-M с компьютерной архитектурой фон Неймана.
  • Примечание. Инструкции FPU с одинарной точностью (SP) действительны в Cortex-M4 / M7 / M33 / M35P только в том случае, если в кремнии существует опция SP FPU.
  • Примечание. Инструкции FPU с двойной точностью (DP) действительны в Cortex-M7 только в том случае, если опция DP FPU существует в кремнии.

Устаревшие [ править ]

В архитектуре ARM для серии ARM Cortex-M удалены некоторые функции из старых устаревших ядер: [9] [10]

  • Набор 32-битных инструкций ARM не входит в состав ядер Cortex-M.
  • Порядок байтов выбирается при реализации кремния в ядрах Cortex-M. Унаследованные ядра позволяли «на лету» изменять режим порядка байтов данных.
  • Сопроцессор не поддерживался ядрами Cortex-M до тех пор, пока кремниевый вариант не был повторно введен в «ARMv8-M Mainline» для ядер ARM Cortex-M33 / M35P.

Возможности 32-битного набора инструкций ARM во многом дублируются наборами инструкций Thumb-1 и Thumb-2, но некоторые функции ARM не имеют подобной функции:

  • Инструкции SWP и SWPB (свопинг) ARM не имеют аналогичной функции в 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 из-за изменений в моделях исключений.

Cortex-M0 [ править ]

Ядро Cortex-M0 оптимизировано для небольшого размера кремниевого кристалла и использования в микросхемах с самой низкой ценой.

Ключевые особенности ядра Cortex-M0: [2]

  • Архитектура ARMv6-M [9]
  • 3-х ступенчатый трубопровод
  • Наборы инструкций:
    • Thumb-1 (большинство), отсутствует CBZ, CBNZ, IT
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR
    • 32-битное аппаратное целочисленное умножение с 32-битным результатом
  • От 1 до 32 прерываний , плюс NMI

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла.

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M0:

  • ВЫШЕ AC30M1x64
  • Cypress PSoC 4000, 4100, 4100M, 4200, 4200DS, 4200L, 4200M
  • Infineon XMC1100 , XMC1200, XMC1300, XMC1400, TLE984x
  • Диалог DA1458x, DA1468x
  • Скандинавский nRF51
  • NXP LPC1100 , LPC1200
  • Nuvoton NuMicro
  • Sonix SN32F700
  • ST STM32 F0
  • Toshiba TX00
  • Vorago VA10800 (экстремальные температуры), VA10820 (радиационно-стойкие)

Следующие чипы имеют Cortex-M0 в качестве вторичного ядра:

  • NXP LPC4300 (один Cortex-M4F + один Cortex-M0)
  • Беспроводные микроконтроллеры Texas Instruments SimpleLink CC1310 и CC2650 (один программируемый Cortex-M3 + один сетевой процессор Cortex-M0 + один проприетарный модуль контроллера датчиков)

Cortex-M0 + [ править ]

Плата NXP ( Freescale ) FRDM-KL25Z с KL25Z128VLK (Kinetis L)

Cortex-M0 + - это оптимизированная надмножество Cortex-M0. Cortex-M0 + полностью совместим с набором инструкций Cortex-M0, что позволяет использовать те же инструменты компилятора и отладки. Конвейер Cortex-M0 + был сокращен с 3 до 2 этапов, что снижает энергопотребление. В дополнение к функциям отладки в существующем Cortex-M0, в Cortex-M0 + можно добавить кремниевую опцию, называемую Micro Trace Buffer (MTB), которая обеспечивает простой буфер трассировки инструкций. Cortex-M0 + также получил функции Cortex-M3 и Cortex-M4, которые могут быть добавлены в качестве кремниевых опций, таких как блок защиты памяти (MPU) и перемещение таблицы векторов. [3]

Ключевые особенности ядра Cortex-M0 +: [3]

  • Архитектура ARMv6-M [9]
  • 2-ступенчатый конвейер (на один меньше, чем Cortex-M0)
  • Наборы инструкций: (такие же, как Cortex-M0)
    • Thumb-1 (большинство), отсутствует CBZ, CBNZ, IT
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR
    • 32-битное аппаратное целочисленное умножение с 32-битным результатом
  • От 1 до 32 прерываний , плюс NMI

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла
  • Блок защиты памяти на 8 областей (MPU) (такой же, как M3 и M4)
  • Перемещение таблицы векторов (аналогично M3, M4)
  • Одноцикловый порт ввода / вывода (доступен в M0 + / M23)
  • Micro Trace Buffer (MTB) (доступен в M0 + / M23 / M33 / M35P)

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M0 +:

  • ABOV Semiconductor A31G11x, A31G12x, A31G314
  • Cypress PSoC 4000S, 4100S, 4100S +, 4100PS, 4700S, FM0 +
  • Epson S1C31W74, S1C31D01, S1C31D50
  • Холтек HT32F52000
  • Микрочип (Atmel) SAM C2, D0, D1, D2, DA, L2, R2, R3
  • NXP LPC800 , LPC11E60, LPC11U60
  • NXP ( Freescale ) Kinetis E, EA, L, M, V1, W0
  • Raspberry Pi RP2040 (два ядра M0 +)
  • Renesas S124, S128, RE, RE01
  • Silicon Labs ( Energy Micro ) EFM32 Zero, счастливый
  • СТ STM32 L0 , G0

Следующие чипы имеют Cortex-M0 + в качестве вторичного ядра:

  • Cypress PSoC 6200 (один Cortex-M4F + один Cortex-M0 +)
  • ST WB (один Cortex-M4F + один Cortex-M0 +)

Самые маленькие микроконтроллеры ARM относятся к типу Cortex-M0 + (по состоянию на 2014 год самый маленький с размером 1,6 мм на 2 мм - Kinetis KL03). [17]

21 июня 2018 года исследователи Мичиганского университета на симпозиуме 2018 года объявили о « самом маленьком компьютере в мире » или компьютерном устройстве на основе ARM Cortex-M0 + (включая ОЗУ, беспроводные передатчики и приемники на основе фотоэлектрических элементов ). Технология и схемы СБИС с бумагой " Беспроводная сенсорная система 0,04 мм 3 16 нВт без батарей со встроенным процессором Cortex-M0 + и оптической связью для измерения температуры сотовой связи". Размер устройства составляет 1/10 от размера компьютера IBM, который ранее был объявлен мировым рекордом по сравнению с мартом 2018 года, что меньше, чем крупица скепсиса.

Cortex-M1 [ править ]

Cortex-M1 - это оптимизированное ядро, специально разработанное для загрузки в микросхемы FPGA .

Ключевые особенности ядра Cortex-M1: [4]

  • Архитектура ARMv6-M [9]
  • 3-х ступенчатый трубопровод .
  • Наборы инструкций:
    • Thumb-1 (большинство), отсутствует CBZ, CBNZ, IT.
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR.
    • 32-битное аппаратное целое число умножается на 32-битный результат.
  • От 1 до 32 прерываний , плюс NMI .

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 3 или 33 цикла.
  • Дополнительная плотно связанная память (TCM): от 0 до 1 МБ для команд TCM, от 0 до 1 МБ для данных-TCM, каждая с дополнительным ECC.
  • Внешние прерывания: 0, 1, 8, 16, 32.
  • Отладка: нет, сокращенная, полная.
  • Порядок байтов данных: прямой порядок байтов или прямой порядок байтов BE-8.
  • Расширение ОС: присутствует или отсутствует.

Чипсы [ править ]

Следующие производители поддерживают Cortex-M1 в качестве программных ядер на своих чипах FPGA:

  • Altera Cyclone-II, Cyclone-III, Stratix-II, Stratix-III
  • GOWIN M1 [18]
  • Microsemi ( Actel ) Fusion, IGLOO / e, ProASIC3L, ProASIC3 / E
  • Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [19]

Cortex-M3 [ править ]

Плата Arduino Due с микроконтроллером Atmel ATSAM3X8E ( ядро ARM Cortex-M3 )
Плата для разработки NXP LPCXpresso с LPC1343

Ключевые особенности ядра Cortex-M3: [5] [20]

  • Архитектура ARMv7-M [10]
  • 3-х ступенчатый конвейер с разветвлением спекуляции .
  • Наборы инструкций:
    • Большой палец-1 (целиком).
    • Большой палец-2 (целиком).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, добавление или вычитание после умножения. 32-битное умножение - это 1 цикл, но 64-битное умножение и инструкции MAC требуют дополнительных циклов.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • арифметическая поддержка насыщения .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Встроенные спящие режимы.

Варианты кремния:

  • Дополнительный блок защиты памяти (MPU): 0 или 8 регионов.

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M3:

  • ВЫШЕ AC33Mx128, AC33Mx064
  • Actel SmartFusion, SmartFusion 2
  • Аналоговые устройства ADUCM360, ADUCM361, ADUCM3029
  • Чип Broadcom Wi-Fi BCM4319XKUBG
  • Cypress PSoC 5000, 5000LP, FM3
  • Holtek HT32F
  • Infineon TLE9860, TLE987x
  • Микрочип (Atmel) SAM 3A, 3N, 3S, 3U, 3X
  • NXP LPC1300 , LPC1700 , LPC1800
  • Компания ON Semiconductor Q32M210
  • Realtek RTL8710
  • Silicon Labs Precision32
  • Silicon Labs ( Energy Micro ) EFM32 Tiny, Gecko, Leopard, Giant
  • СТ STM32 F1, F2, L1, W
  • TDK-Micronas HVC4223F
  • Texas Instruments F28, LM3, TMS470, OMAP 4 , беспроводные микроконтроллеры SimpleLink (CC1310 Sub-GHz и CC2650 BLE + ZigBee + 6LoWPAN )
  • Toshiba TX03

Следующие чипы имеют Cortex-M3 в качестве вторичного ядра:

  • Apple A9 (Cortex-M3 как встроенный сопроцессор движения M9 )
  • CSR Quatro 5300 (Cortex-M3 в качестве сопроцессора)
  • Samsung Exynos 7420 (Cortex-M3 как микроконтроллер DVS ) [21]
  • Texas Instruments F28, LM3, TMS470, OMAP 4470 (один Cortex-A9 + два Cortex-M3)
  • XMOS XS1-XA (семь xCORE + один Cortex-M3)

Следующие FPGA включают ядро ​​Cortex-M3:

  • Microsemi SmartFusion2 SoC

Следующие производители поддерживают Cortex-M3 в качестве программных ядер на своих чипах FPGA:

  • Altera Cyclone-II, Cyclone-III, Stratix-II, Stratix-III
  • Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [22]

Cortex-M4 [ править ]

Плата Silicon Labs ( Energy Micro ) Wonder Gecko STK с EFM32 WG990
Плата TI Stellaris Launchpad с LM4F120

Концептуально Cortex-M4 представляет собой Cortex-M3 с инструкциями DSP и дополнительным блоком с плавающей запятой (FPU). Ядро с FPU известно как Cortex-M4F.

Ключевые особенности ядра Cortex-M4: [6]

  • Архитектура ARMv7E-M [10]
  • 3-х ступенчатый конвейер с разветвлением спекуляции .
  • Наборы инструкций:
    • Большой палец-1 (целиком).
    • Большой палец-2 (целиком).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, добавление или вычитание после умножения. 32-битное умножение и MAC - это 1 цикл.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • Поддержка арифметики насыщенности .
    • Расширение DSP: однократный 16/32-битный MAC , однократный двойной 16-битный MAC, 8/16-битная арифметика SIMD .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Встроенные спящие режимы.

Варианты кремния:

  • Дополнительный модуль с плавающей запятой (FPU): совместим только с одинарной точностью IEEE-754 . Это называется расширением FPv4-SP.
  • Дополнительный блок защиты памяти (MPU): 0 или 8 регионов.

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M4:

  • Аналоговые устройства ADSP-CM40x
  • Микрочип (Atmel) SAM 4L, 4N, 4S
  • NXP ( Freescale ) Kinetis K, W2
  • Texas Instruments SimpleLink Wi-Fi CC32xx, CC32xxMOD

Следующие микроконтроллеры основаны на ядре Cortex-M4F (M4 + FPU ):

  • Аналоговые устройства ADUCM4050
  • Cypress 6200 (один Cortex-M4F + один Cortex-M0 +), FM4
  • Infineon XMC4000
  • Максим Дарвин
  • Микрочип (Atmel) SAM4C (двухъядерный: один Cortex-M4F + один Cortex-M4), SAM4E, SAMG5, SAMD5 / E5x
  • Скандинавский nRF52
  • Nuvoton NuMicro M480
  • NXP LPC4000 , LPC4300 (один Cortex-M4F + один Cortex-M0)
  • NXP ( Freescale ) Kinetis K, V3, V4
  • Renesas S3, S5, S7, RA4, RA6
  • Silicon Labs ( Energy Micro ) EFM32 Wonder
  • ST STM32 F3, F4, L4, L4 +, WB (один Cortex-M4F + один Cortex-M0 +)
  • Texas Instruments LM4F, TM4C, MSP432 , CC13x2R, CC1352P, CC26x2R
  • Toshiba TX04

Следующие чипы имеют в качестве вторичного ядра Cortex-M4 или M4F:

  • NXP ( Freescale ) Vybrid VF6 (один Cortex-A5 + один Cortex-M4F)
  • NXP ( Freescale ) i.MX 6 SoloX (один Cortex-A9 + один Cortex-M4F)
  • NXP ( Freescale ) i.MX 7 Solo / Dual (один или два Cortex-A7 + один Cortex-M4F)
  • NXP ( Freescale ) i.MX 8 (два Cortex-A72 + четыре Cortex-A53 + два Cortex-M4F)
  • NXP ( Freescale ) i.MX 8M и 8M Mini (четыре Cortex-A53 + один Cortex-M4F)
  • NXP ( Freescale ) i.MX 8X (четыре Cortex-A35 + один Cortex-M4F)
  • ST STM32MP1 (один или два Cortex-A7 + один Cortex-M4)
  • Texas Instruments OMAP 5 (два Cortex-A15 + два Cortex-M4)
  • Texas Instruments Sitara AM5700 (один или два Cortex-A15 + два Cortex-M4 в качестве блоков обработки изображений + два Cortex-M4 в качестве блоков общего назначения)

Cortex-M7 [ править ]

Cortex-M7 - это высокопроизводительное ядро ​​с почти вдвое большей энергоэффективностью, чем у более старого Cortex-M4. Он имеет 6-ступенчатый суперскалярный конвейер с предсказанием ветвлений и дополнительный модуль с плавающей запятой, способный выполнять операции с одинарной точностью и опционально с двойной точностью . [23] [24] Шины инструкций и данных были расширены до 64-битной ширины по сравнению с предыдущими 32-битными шинами. Если ядро ​​содержит FPU, оно известно как Cortex-M7F, в противном случае это Cortex-M7.

Ключевые особенности ядра Cortex-M7: [7]

  • ARMv7E-M архитектура.
  • 6-ступенчатый трубопровод с отраслевой спекуляцией . Самое длинное из всех ядер ARM Cortex-M.
  • Наборы инструкций:
    • Большой палец-1 (целиком).
    • Большой палец-2 (целиком).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, добавление или вычитание после умножения. 32-битное умножение и MAC - это 1 цикл.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • Поддержка арифметики насыщенности .
    • Расширение DSP: однократный 16/32-битный MAC , однократный двойной 16-битный MAC, 8/16-битная арифметика SIMD .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Встроенные спящие режимы.

Варианты кремния:

  • Дополнительный модуль с плавающей запятой (FPU): (одинарная точность) или (одинарная и двойная точность), оба соответствуют IEEE-754-2008. Это называется расширением FPv5.
  • Дополнительный кэш ЦП : от 0 до 64 КБ кэша инструкций, от 0 до 64 КБ кеша данных, каждый с дополнительным ECC .
  • Дополнительная плотно связанная память (TCM): от 0 до 16 МБ для команд TCM, от 0 до 16 МБ для данных-TCM, каждая с дополнительным ECC.
  • Дополнительный блок защиты памяти (MPU): 8 или 16 регионов.
  • Дополнительная встроенная макроячейка трассировки (ETM): только инструкция или инструкция и данные.
  • Дополнительный режим удержания (с комплектом управления питанием руки) для спящих режимов.

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M7:

  • Микрочип (Atmel) SAM E7, S7, V7
  • NXP ( Freescale ) Kinetis KV5x, i.MX RT
  • ST STM32 F7, H7

Cortex-M23 [ править ]

Ядро Cortex-M23 было анонсировано в октябре 2016 года [25] и основано на новой архитектуре ARMv8-M, о которой ранее было объявлено в ноябре 2015 года. [26] Концептуально Cortex-M23 аналогичен Cortex-M0 + плюс инструкции целочисленного деления и Функции безопасности TrustZone, а также двухэтапный конвейер инструкций .

Ключевые особенности ядра Cortex-M23: [8] [25]

  • ARMv8-M Базовая архитектура. [15]
  • 2-х ступенчатый трубопровод. (аналогично Cortex-M0 +)
  • Инструкции по безопасности TrustZone . (доступно только в M23 / M33 / M35P)
  • 32-битное аппаратное целочисленное деление (17 или 34 цикла). (недоступно в M0 / M0 + / M1) (медленнее, чем деление во всех других ядрах)
  • Границы ограничения стека. (доступно только с опцией SAU) (доступно в M23 / M33 / M35P)

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла.
  • Скорость аппаратного целочисленного деления: максимум 17 или 34 цикла. В зависимости от делителя инструкция может выполняться за меньшее количество циклов.
  • Дополнительный блок защиты памяти (MPU): 0, 4, 8, 12, 16 регионов.
  • Дополнительный блок атрибуции безопасности (SAU): 0, 4, 8 регионов.
  • Одноцикловый порт ввода-вывода (доступен в M0 + / M23).
  • Micro Trace Buffer (MTB) (доступен в M0 + / M23 / M33 / M35P).

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M23:

  • GigaDevice GD32E230
  • Микрочип SAM L10, L11
  • Nuvoton M2351
  • Renesas S1JA, RA2A1

Cortex-M33 [ править ]

Ядро Cortex-M33 было анонсировано в октябре 2016 года [25] и основано на новой архитектуре ARMv8-M, о которой ранее было объявлено в ноябре 2015 года. [26] Концептуально Cortex-M33 похож на гибрид Cortex-M4 и Cortex- M23, а также имеет трехступенчатый конвейер команд .

Ключевые особенности ядра Cortex-M33: [12] [25]

  • ARMv8-M Основная архитектура. [15]
  • 3-х ступенчатый трубопровод.
  • Инструкции по безопасности TrustZone . (доступно только в M23 / M33 / M35P)
  • 32-битное аппаратное целочисленное деление (максимум 11 циклов). (недоступно в M0 / M0 + / M1)
  • Границы ограничения стека. (доступно только с опцией SAU) (доступно в M23 / M33 / M35P)

Варианты кремния:

  • Дополнительный модуль с плавающей запятой (FPU): соответствует стандарту только одинарной точности IEEE-754 . Это называется расширением FPv5.
  • Дополнительный блок защиты памяти (MPU): 0, 4, 8, 12, 16 регионов.
  • Дополнительный блок атрибуции безопасности (SAU): 0, 4, 8 регионов.
  • Micro Trace Buffer (MTB) (доступен в M0 + / M23 / M33 / M35P).

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M33:

  • Аналоговые устройства ADUCM410, ADUCM420
  • Диалог DA1469x
  • Скандинавский nRF91, nRF5340
  • NXP LPC5500, i.MX RT600
  • Renesas RA
  • ST STM32 L5
  • Silicon Labs Wireless Gecko, серия 2

Cortex-M35P [ править ]

Ядро Cortex-M35P было анонсировано в мае 2018 года. Концептуально это ядро ​​Cortex-M33 с новым кешем инструкций, а также новыми концепциями оборудования с защитой от несанкционированного доступа, заимствованными из семейства ARM SecurCore, и настраиваемыми функциями четности и ECC. [27]

В настоящее время для Cortex-M35P доступна ограниченная общедоступная информация, пока не будет выпущено его техническое справочное руководство .

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M35P:

  • По состоянию на февраль 2020 года ни о каких чипах объявлено не было.

Cortex-M55 [ править ]

Ядро Cortex-M55 было анонсировано в феврале 2020 года и основано на архитектуре Armv8.1-M , анонсированной ранее в феврале 2019 года. Оно также имеет 4-этапный конвейер команд.

Ключевые особенности ядра Cortex-M55 включают:

  • ARMv8.1-M Mainline / Helium архитектура. [15]
  • 4-х ступенчатый трубопровод.
  • Границы ограничения стека (доступно только с опцией SAU).

Варианты кремния:

  • Гелий (расширение вектора M-профиля, MVE)
  • С плавающей запятой одинарной и двойной точности
  • Поддержка расширения цифровой обработки сигналов (DSP)
  • Поддержка расширения безопасности TrustZone
  • Поддержка безопасности и надежности (RAS)
  • Поддержка сопроцессора
  • Безопасный и незащищенный MPU с 0, 4, 8, 12 или 16 регионами
  • САУ с 0, 4 или 8 регионами
  • Кэш инструкций размером 4 КБ, 8 КБ, 16 КБ, 32 КБ, 64 КБ
  • Кэш данных размером 4 КБ, 8 КБ, 16 КБ, 32 КБ, 64 КБ
  • ECC в кешах и TCM
  • 1–480 прерываний
  • 3–8 бит приоритета исключения
  • Внутренние и внешние опции WIC, дополнительные CTI, ITM и DWT
  • Пользовательские инструкции ARM (доступны в будущем выпуске)

Чипсы [ править ]

Следующие микроконтроллеры основаны на ядре Cortex-M55:

  • По состоянию на февраль 2020 года ни о каких чипах объявлено не было.

Инструменты разработки [ править ]

Segger J-Link PRO. Отладочный зонд с интерфейсом SWD или JTAG для целевой микросхемы ARM и интерфейсом USB или Ethernet для хост-компьютера.

Документация [ править ]

Документация для чипов ARM обширна. В прошлом документация по 8-битным микроконтроллерам обычно помещалась в один документ, но по мере развития микроконтроллеров появилось все необходимое для их поддержки. Пакет документации для микросхем ARM обычно состоит из набора документов от производителя микросхем, а также поставщика ядра процессора ( Arm Holdings ).

Типичное нисходящее дерево документации:

Дерево документации (сверху вниз)
  1. Сайт производителя микросхемы.
  2. Маркетинговые слайды производителя ИС.
  3. Спецификация производителя ИС для конкретного физического чипа.
  4. Справочное руководство производителя ИС, в котором описываются общие периферийные устройства и аспекты семейства физических микросхем.
  5. Основной сайт ARM.
  6. Общее руководство пользователя ядра ARM.
  7. Техническое справочное руководство ARM core.
  8. Справочное руководство по архитектуре ARM.

У производителей микросхем есть дополнительные документы, такие как: руководства пользователя оценочной платы, примечания к применению, руководства по началу работы, документы библиотеки программного обеспечения, исправления и многое другое. См. Раздел Внешние ссылки для ссылок на официальные документы Arm.

См. Также [ править ]

  • ARM архитектура
  • Список архитектур и ядер ARM
  • JTAG , SWD
  • Прерывание , обработчик прерывания
  • Операционная система реального времени , Сравнение операционных систем реального времени

Ссылки [ править ]

  1. ^ Сайт ARM Cortex-M; arm.com
  2. ^ a b c d Cortex-M0 r0p0 Техническое справочное руководство; Arm Holdings.
  3. ^ a b c d e Cortex-M0 + r0p0 Техническое справочное руководство; Arm Holdings.
  4. ^ a b c d Cortex-M1 r1p0 Техническое справочное руководство; Arm Holdings.
  5. ^ a b c d Справочное техническое руководство Cortex-M3 r2p1; Arm Holdings.
  6. ^ a b c d Cortex-M4 r0p1 Техническое справочное руководство; Arm Holdings.
  7. ^ a b c d Cortex-M7 r0p2 Техническое справочное руководство; Arm Holdings.
  8. ^ a b c d Cortex-M23 r1p0 Техническое справочное руководство; Arm Holdings.
  9. ^ a b c d e f g h i j k l m n o p q r Справочное руководство по архитектуре ARMv6-M; Arm Holdings.
  10. ^ a b c d e f g h i j k l m n o p q r Справочное руководство по архитектуре ARMv7-M; Arm Holdings.
  11. ^ a b c d Разработка встроенного программного обеспечения Cortex-M3; Примечание приложения 179; Arm Holdings.
  12. ^ a b c Cortex-M33 r0p3 Техническое справочное руководство; Arm Holdings.
  13. ^ a b c Комплект для проектирования системы Cortex-M; Arm Holdings.
  14. ^ a b c d e f g h i j Руководство по программированию ARM Cortex-M с инструкциями по ограничению памяти; Раздел 3.6 Требования к внедрению системы; AppNote 321; arm.com
  15. ^ a b c d e f g Справочное руководство по архитектуре ARMv8-M; Arm Holdings.
  16. ^ Справочное руководство по архитектуре ARMv8.1-M; Arm Holdings.
  17. ^ Fingas, Джон (25 февраля 2014). «Freescale делает самый маленький в мире чип контроллера ARM еще мельче» . Дата обращения 2 октября 2014 .
  18. ^ GOWIN Semiconductor присоединяется к ARM DesignStart, предлагая бесплатные процессоры ARM Cortex-M1 для своих семейств продуктов FPGA
  19. ^ Cortex-M1 DesignStart FPGA XilinxEdition
  20. ^ Садасиван, Шьям. «Введение в процессор ARM Cortex-M3» (PDF) . Arm Holdings . Архивировано из оригинального (PDF) 26 июля 2014 года.
  21. ^ «Samsung Exynos 7420 Deep Dive - внутри современной 14-нм SoC» . AnandTech . Проверено 15 июня 2015 .
  22. ^ Cortex-M3 DesignStart FPGA XilinxEdition
  23. ^ "Процессор Cortex-M7" . Arm Holdings . Проверено 24 сентября 2014 .
  24. ^ «ARM увеличивает рынок микроконтроллеров с помощью высокопроизводительного процессора Cortex-M7» . arm.com (пресс-релиз). 24 сентября 2014 г.
  25. ^ a b c d Новые процессоры ARM Cortex-M предлагают следующий отраслевой стандарт безопасного Интернета вещей; Arm Holdings; 25 октября 2016 г.
  26. ^ a b Архитектура ARMv8-M упрощает безопасность встроенных интеллектуальных устройств; Arm Holdings; 10 ноября 2015 года.
  27. ^ "Процессор Cortex-M35P" . Arm Holdings . Проверено 4 июня 2018 .

Дальнейшее чтение [ править ]

  • Встроенные системы с микроконтроллерами ARM Cortex-M на языке ассемблера и C ; 3-е изд; Ифэн Чжу; 738 страниц; 2017; ISBN 978-0982692660 . 
  • Руководство разработчика по семейству процессоров Cortex-M ; 2-е изд; Тревор Мартин; 490 страниц; 2016; ISBN 978-0081006290 . 
  • Сборка ARM для встраиваемых приложений ; 3-е изд; Дэниел Льюис; 318 страниц; 2017; ISBN 978-1543908046 . 
  • Полное руководство по процессорам ARM Cortex-M0 и Cortex-M0 + ; 2-е изд; Джозеф Ю; 784 страницы; 2015; ISBN 978-0128032770 . 
  • Полное руководство по процессорам ARM Cortex-M3 и Cortex-M4 ; 3-е изд; Джозеф Ю; 600 страниц; 2013; ISBN 978-0124080829 . 
  • Цифровая обработка сигналов и приложения с использованием ARM Cortex-M4 ; 1-е изд; Дональд Рэй; 250 страниц; 2014; ISBN 978-1118859049 . 
  • Встроенные системы: Введение в микроконтроллеры ARM Cortex-M ; 5-е изд; Джонатан Вальвано; 506 страниц; 2012; ISBN 978-1477508992 . 
  • Программирование на языке ассемблера: ARM Cortex-M3 ; 1-е изд; Винсент Маут; 256 страниц; 2012; ISBN 978-1848213296 . 

Внешние ссылки [ править ]

Официальные документы ARM Cortex-M
  • Официальный сайт ARM Cortex-M
  • Cortex-M для начинающих  - arm.com
  • Расширения безопасности ARMv8-M  - arm.com
  • Стандарт программного интерфейса микроконтроллера Cortex (CMSIS)  - arm.com
Краткие справочные карты
  • Инструкции: Thumb-1 ( 1 ), ARM и Thumb-2 ( 2 ), Vector Floating-Point ( 3 ) - arm.com
  • Коды операций: Thumb-1 ( 1 , 2 ), ARM ( 3 , 4 ), директивы GNU Assembler ( 5 ).
Миграция
  • Переход с 8051 на Cortex-M3 - arm.com
  • Переход с PIC на Cortex-M3 - arm.com
  • Переход с ARM7TDMI на Cortex-M3 - arm.com
  • Переход с Cortex-M4 на Cortex-M7 - keil.com
Другой
  • Bit Banding на микроконтроллерах STM32 Cortex-M