Простые устройства
Просто об устройствах

Понимание процессора Arm Cortex-M0+ и его возможностей

Cortex-M0+ – не самый новый, маленький малопотребляющий процессор, и, на самом деле, некоторые новые продукты могут превосходить его. Однако его широкое распространение и развитая экосистема продолжают делать процессор привлекательным предложением для приложений с низким энергопотреблением.

Итак, что важно знать о Cortex-M0+ (см. Рисунок 1)? Серия процессоров Cortex-M в целом призвана удовлетворить потребность рынка в устройствах с ограниченным энергопотреблением и низкой стоимостью, а значит, подходящих для широкого спектра приложений. Процессор Cortex-M0+ еще больше расширяет возможности семейства, предъявляя наименьшие требования к площади платы и энергопотреблению. Благодаря этому Cortex-M0+ хорошо подходит для носимых устройств и датчиков.

32-разрядный Cortex-M0+ - это микропроцессор в миниатюрном корпусе.
Рисунок 1. 32-разрядный Cortex-M0+ – это микропроцессор в миниатюрном корпусе.

Cortex-M0+ был оптимизирован под конкретные задачи, и по набору инструкций полностью совместим с Cortex-M0. Это означает, что для обоих можно использовать идентичные инструменты компиляции и отладки.

Кристалл Cortex-M0+ имеет опцию, называемую Micro Trace Buffer (MTB) – простой буфер микротрассировки инструкций. Он дополняет возможности отладки в Cortex-M0. Также могут быть добавлены опции, заимствованные из Cortex-M3 и -M4.

Главное, что нужно знать о Cortex-M0+, – это то, что он основан на архитектуре ARMv6-M и имеет общие наборы инструкций с Cortex-M0. Применимы наборы подкоманд: Thumb-1 (большинство); отсутствуют CBZ, CBNZ, IT и Thumb-2 (некоторые); и только BL, DMB, DSB, ISB, MRS, MSR.

Cortex-M0+ имеет 32-битный целочисленный аппаратный умножитель с 32-битными результатами, от 1 до 32 прерываний, а также немаскируемые прерывания.

Функция блока защиты памяти Cortex-M0+ (MPU) заключается в наблюдении за тем, чтобы никакая задача, выполняемая процессором, не повредила память или не повлияла на другие активные задачи. Блок MPU, обычно управляемый с помощью RTOS, может обнаруживать попытки несанкционированного доступа к памяти.

Конвейеризация в Cortex-M0+

Оригинальные ядра Cortex-M0 (а также Cortex-M3 и -M4) построены с использованием трехступенчатого конвейера. Cortex-M0+ отличается тем, что в нем используется двухступенчатый конвейер. В Cortex-M0+ снижено энергопотребление и повышена производительность за счет сокращения конвейеризации с трех до двух ступеней. Большее количество инструкций, выполняемых за цикл, связано с тем, что ветвления занимают на один цикл меньше. Этап 1 – это выборка и предварительное декодирование, а этап 2 – основное декодирование и выполнение.

Почему двухступенчатый? Использование двухступенчатого конвейера вместо трехступенчатого сокращает количество обращений к флэш-памяти. Это важно, поскольку потребление энергии флэш-памятью часто является основным фактором энергопотребления микроконтроллера. Таким образом, сокращение числа обращений к флэш-памяти может значительно снизить общее энергопотребление.

Сколько уровней приоритета прерываний поддерживает Cortex-M0+?

Контроллер вложенных векторных прерываний (NVIC), который функционирует как интерфейс между ядром и любыми внешними источниками прерываний, является частью Arm Cortex-M0+. Он может поддерживать немаскируемые прерывания (NMI) со свойствами, аналогичными свойствам других внешних прерываний, и подключаться к запросу NMI процессора, но отдельно.

Аналогично, контроллер внешних прерываний (EIC) может генерировать событие и позволяет настраивать каждую линию прерываний индивидуально. Также поддерживаются обнаружение сигналов прерываний по импульсу и уровню, быстрая обработка исключений и сцепление прерываний.

NVIC обеспечивает интерфейс между внешними по отношению к ядру источниками прерываний (например, периферийными устройствами и внешними выводами) и самим ядром.

Приоритету каждого источника прерываний программно присваивается один из четырех уровней. Это можно использовать, например, когда два отложенных прерывания имеют одинаковый приоритет. В таком случае приоритет отдается прерыванию с наименьшим номером исключения, также известному как наименьший адрес вектора прерывания.

Характеристики и использование Cortex-M0+

Coretex-M0+ считается одним из самых энергоэффективных процессоров Arm для встраиваемых приложений с урезанными возможностями. M0+ имеет двухступенчатый конвейер ядра, что позволяет ему достичь энергопотребления 11.2 мкВт/МГц при сохранении производительности 2.42 CoreMark/МГц. Процессор также имеет три режима пониженного энергопотребления, которые можно использовать для экономии энергии в зависимости от требований к обработке данных.

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

  • ABOV Semiconductor A31G11x, A31G12x, A31G314;
  • Cypress PSoC 4000S, 4100S, 4100S+, 4100PS, 4700S, FM0+;
  • Epson S1C31W74, S1C31D01, S1C31D50;
  • Holtek HT32F52000;
  • Microchip SAM C2, D0, D1, D2, DA, L2, R2, R3; and PIC32CM JH and MC[31];
  • NXP LPC800, LPC11E60, LPC11U60;
  • NXP (Freescale) Kinetis E, EA, L, M, V1, W0, S32K11x;
  • Raspberry Pi RP2040 (два ядра M0+);
  • Renesas S124, S128, RE, RE01;
  • Silicon Labs (Energy Micro) EFM32 Zero, Happy;
  • STMicroelectronics STM32 L0, G0, C0, WL (одно ядро Cortex-M4 + одно ядро Cortex-M0+) (92).

В ряде других устройств Cortex-M0+ используется в качестве вторичного ядра. Примечательно, что малая площадь ядра Cortex-M0+ позволяет ему успешно функционировать в качестве отдельного ядра, встроенного в более крупное устройство в качестве дополнительного ядра. В такой компоновке Cortex-M0+ может обеспечивать разделение задач и/или изоляцию оборудования.

Ссылки

  1. Arm Cortex-M0+ – getting the most out of the technology
  2. Arm Cortex-M0+ in a nutshell

Добавить комментарий

Защитный код
Обновить

Обсудить эту статью на форуме (0 ответов).

Copyright 2019 © simple-devices.ru.
При использовании материалов ссылка на simple-devices.ru обязательна.