Программирование циклов с параметром паскаль примеры

Микросхемы микроконтроллеров ARM Cortex-M0 и Cortex-M3 от NXP и Silicon Labs (Energy Micro)

ARM Cortex-M-это группа 32-разрядных процессорных ядер RISC ARM. Лицензированных Arm Holdings. Эти ядра оптимизированы для недорогих и энергоэффективных интегральных схем. Которые были встроены в десятки миллиардов потребительских устройств.[1] Хотя они чаще всего являются основным компонентом микросхем микроконтроллеров. Иногда они встроены и в другие типы микросхем. Коре-м семья состоит из ядра Cortex-М0, ядро Cortex-M0+ с, кора-М1, Cortex-м3, Кортекс-М4, коры-М7, коры-М23, коры-М33 ядра Cortex-M35P, коры-М55.

[2][3][4][5][6][7][8] Ядра Cortex-M4 / M7 / M33 / M35P / M55 имеют FPU вариант кремния. И при включении в кремний эти ядра иногда известны как

Семейство ARM Cortex-M-это микропроцессорные ядра ARM , предназначенные для использования в микроконтроллерах, ASIC, ASPS, ПЛИСи SOC. Ядра Cortex-M обычно используются в качестве специализированных микросхем микроконтроллеров, но также

Основное отличие от ядра Cortex-A заключается в том. Что в нем отсутствует блок управления памятью (MMU). Полноценная операционная система обычно не работает на процессорах такого класса.

Хотя 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 timer: 24-битный системный таймер. Расширяющий функциональные возможности как процессора. Так и контроллера вложенных векторных прерываний (NVIC). Когда он присутствует. Он также обеспечивает дополнительное настраиваемое приоритетное прерывание SysTick.

    [9][10][11] Хотя таймер SysTick является необязательным. Очень редко можно найти микроконтроллер Cortex-M без него. Если микроконтроллер Cortex-M33 имеет опцию расширения безопасности. То он имеет две системные кнопки: одну безопасную и одну незащищенную.

  • Bit-Band: Отображает полное слово памяти на один бит в области битового диапазона. Например, запись в псевдоним word установит или очистит соответствующий бит в области битового диапазона. Это позволяет каждому отдельному биту в области битового диапазона быть непосредственно доступным из адреса. Выровненного по словам. В частности. Отдельные биты могут быть установлены. Очищены или переключены из C/C++ без выполнения последовательности инструкций чтения-изменения-записи.

    [9][10][11] Хотя битовый диапазон является необязательным. Реже можно найти микроконтроллер Cortex-M3 и Cortex-M4 без него. Некоторые микроконтроллеры Cortex-M0 и Cortex-M0+ имеют битовый диапазон.

  • Блок защиты памяти (MPU): Обеспечивает поддержку защиты областей памяти путем применения правил привилегий и доступа. Он поддерживает до восьми различных регионов. Каждый из которых может быть разделен на еще восемь равноразмерных субрегионов.[9][10][11]
  • Плотно связанная память (TCM): оперативная память с низкой задержкой. Используемая для хранения критических подпрограмм. Данных и стеков.

    Помимо кэша, это. Как правило. Самая быстрая оперативная память в микроконтроллере.

Дополнительные компоненты ARM Cortex-M
Сердечник РЫЧАГАКора
головного мозга М0[2]
Кора
головного мозга M0+[3]
Кора
головного мозга М1[4]
Кора
головного мозга М3[5]
Кора
головного мозга М4[6]
Кора
головного мозга М7[7]
Кора
головного мозга М23[8]
Кора
головного мозга М33[12]
Кора
головного мозга M35P
24-битный таймер SysTickОпционально
(0,1)
Опционально
(0,1)
Опционально
(0,1)
Да
(1)
Да
(1)
Да
(1)
Опционально
(0,1,2)
Да
(1,2)
Да
(1,2)
Однотактный порт ввода-выводаНЕТНеобязательныйНЕТНЕТНЕТНЕТНеобязательныйНЕТНЕТ
Битовая памятьНет[13]Нет[13]НЕТ*НеобязательныйНеобязательныйНеобязательныйНЕТНЕТНЕТ

Блок защиты памяти (MPU)
НЕТОпционально
(0,8)
НЕТОпционально
(0,8)
Опционально
(0,8)
Опционально
(0,8,16)
Опционально
(0,4,8,12,16)
Опционально
(0,4,8,12,16)
Необязательно
*

Блок атрибуции безопасности (SAU) и

ограничения стека

НЕТНЕТНЕТНЕТНЕТНЕТОпционально
(0,4,8)
Опционально
(0,4,8)
Необязательно
*
Инструкция TCMНЕТНЕТНеобязательныйНЕТНЕТНеобязательныйНЕТНЕТНЕТ
Данные TCMНЕТНЕТНеобязательныйНЕТНЕТНеобязательныйНЕТНЕТНЕТ
Кэш инструкцийНет[14]Нет[14]Нет[14]Нет[14]Нет[14]НеобязательныйНЕТНЕТНеобязательный
Кэш данныхНет[14]Нет[14]Нет[14]Нет[14]Нет[14]НеобязательныйНЕТНЕТНЕТ
Регистр смещения векторной таблицы

(VTOR)

НЕТОпционально
(0,1)
Опционально
(0,1)
Опционально
(0,1)
Опционально
(0,1)
Опционально
(0,1)
Опционально
(0,1,2)
Да
(1,2)
Да
(1,2)
  • Примечание: Большинство чипов Cortex-M3 и M4 имеют бит-полосу и MPU.

    Опция bit-band может быть добавлена в M0/M0+ с помощью набора для проектирования системы Cortex-M[13]

  • Примечание: Программное обеспечение должно проверить существование функции. Прежде чем пытаться использовать ее.]
  • Примечание: Ограниченная публичная информация доступна для 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): None, 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-М0 / М0+ / М1 реализации бюджетных ARMv6-M и архитектуры[9] ядра Cortex-м3 реализует ARMv7 с-М архитектурой,[10] процессор Cortex-М4 / ядро Cortex-M7 и реализует ARMv7E-M в архитектуре,[10] коре-М23 / М33 / M35P реализации ARMv8-м архитектурой,[15] и коры-М55 реализует ARMv8.1-м архитектурой.[16] Эти архитектуры совместимы с двоичными инструкциями вверх от ARMv6-M до ARMv7-M и ARMv7E-M. Двоичные инструкции, доступные для Cortex-M0 / Cortex-M0+ / Cortex-M1, могут выполняться без изменений на Cortex-M3 / Cortex-M4 / Cortex-M7. Бинарные инструкций. Доступных для ядра Cortex-м3 могут выполняться без изменения в кортекс-М4 / коры-М7 / коры-М33 / ядро Cortex-M35P.[9][10] всего лишь с большой палец-1 и пальца 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. Кортекс-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.

Вариации команд ARM Cortex-M
Сердечник рычагаКора
головного мозга М0[2]
Кора
головного мозга M0+[3]
Кора
головного мозга М1[4]
Кора
головного мозга М3[5]
Кора
головного мозга М4[6]
Кора
головного мозга М7[7]
Кора
головного мозга М23[8]
Кора
головного мозга М33[12]
Кора
головного мозга M35P
Кора
головного мозга М55
Архитектура ARMАРМв6-М[9]АРМв6-М[9]АРМв6-М[9]ARMv7-M[10]ARMv7E-M[10]ARMv7E-M[10]Базовая линия ARMv8-M
[15]
Магистраль АРМв8-М
[15]
Магистраль АРМв8-М
[15]
Armv8.1-M
Архитектура компьютераVon NeumannVon NeumannVon NeumannГарвардГарвардГарвардVon NeumannГарвардГарвардГарвард
Конвейер инструкций3 этапа2 этапа3 этапа3 этапа3 этапа6 этапов2 этапа3 этапа3 этапаот 4 до 5 этапов
Большой палец-1 инструкцияНаиболееНаиболееНаиболееЦелыйЦелыйЦелыйНаиболееЦелыйЦелыйЦелый
Большой палец-2 инструкцииНекоторыеНекоторыеНекоторыеЦелыйЦелыйЦелыйНекоторыеЦелыйЦелыйЦелый
Инструкции по умножению
32×32 = 32-битный результат
ДАДАДАДАДАДАДАДАДАДА
Инструкции умножения
32×32 = 64-битный результат
НЕТНЕТНЕТДАДАДАНЕТДАДАДА
Инструкции деления
32/32 = 32-битное частное
НЕТНЕТНЕТДАДАДАДАДАДАДА
Насыщенные инструкцииНЕТНЕТНЕТНекоторыеДАДАНЕТДАДАДА
Инструкции DSPНЕТНЕТНЕТНЕТДАДАНЕТНеобязательныйНеобязательныйНеобязательный
Инструкции с плавающей запятой одинарной точности (SP)НЕТНЕТНЕТНЕТНеобязательныйНеобязательныйНЕТНеобязательныйНеобязательныйНеобязательный
Инструкции с плавающей запятой двойной точности (DP)НЕТНЕТНЕТНЕТНЕТНеобязательныйНЕТНЕТНЕТНеобязательный
Полуточность (Л. с.)НЕТНЕТНЕТНЕТНЕТНЕТНЕТНЕТНЕТНеобязательный
Инструкции TrustZoneНЕТНЕТНЕТНЕТНЕТНЕТНеобязательныйНеобязательныйНеобязательныйНеобязательный
Инструкции сопроцессораНЕТНЕТНЕТНЕТНЕТНЕТНЕТНеобязательныйНеобязательныйНеобязательный
Гелиевая технологияНЕТНЕТНЕТНЕТНЕТНЕТНЕТНЕТНЕТНеобязательный
Задержка прерывания
(при нулевом состоянии ожидания ОЗУ)
16 циклов15 циклов23 для NMI
26 для IRQ
12 циклов12 циклов12 циклов
14 наихудший случай
15 нет безопасности ext
27 безопасность ext
12 нет службы безопасности ext
?? безопасность ext
ПОДЛЕЖИТ ОПРЕДЕЛЕНИЮПОДЛЕЖИТ ОПРЕДЕЛЕНИЮ
  • Примечание: 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-М0 / М0+ / М1 / М23 только 32-разрядные умножить инструкции с нижней-32-битный результат (32бит × 32 бит = 32 бита ниже). Где в качестве ядра Cortex-М3 / М4 / М7 / М33 / M35P включает в себя дополнительную 32-разрядную умножить инструкции с 64-разрядных вычислений (32бит × 32 бит = 64-битные версии). Cortex-M4 / M7 (опционально M33 / M35P) включает в себя DSP-инструкции для умножения (16bit × 16bit = 32bit). (32bit × 16bit = upper 32bit). (32bit × 32bit = upper 32bit).[9][10]
  • Примечание: Количество циклов для выполнения инструкций умножения и деления варьируется в зависимости от конструкции ядра ARM Cortex-M. Некоторые ядра имеют кремниевую опцию для выбора быстрой скорости или малого размера (медленная скорость). Поэтому ядра имеют возможность использовать меньше кремния с недостатком более высокого количества циклов. Прерывание, возникающее во время выполнения команды деления или медленно повторяющейся команды умножения. Заставит процессор отказаться от этой команды. А затем перезапустить ее после возврата прерывания.
    • Инструкции умножения
    • Инструкции умножения
    • Инструкции деления – Cortex-M3/M4-2-12 циклов (в зависимости от значений). Cortex-M7-3-20 циклов (в зависимости от значений). Cortex-M23-17 или 34 цикла. Cortex-M33-2-11 циклов (в зависимости от значений). Cortex-M35P-TBD.
  • Примечание: Cortex-M4 / M7 / M33 / M35P имеет кремниевый вариант выбора no FPU или single-precision (SP) FPU. А Cortex-M7 добавляет третий кремниевый вариант поддержки как одинарной точности (SP). Так и двойной точности (DP). Если Cortex-M4 / M7 / M33 / M35P имеет FPU. То он известен как Cortex-M4F / Cortex-M7F / Cortex-M33F / Cortex-M35PF.]
  • Примечание: Серия Cortex-M включает в себя три новых 16-битных инструкции Thumb-1 для спящего режима: SEV, WFE, WFI.
  • Примечание: Счетчик циклов задержки прерывания предполагает: 1) стек, расположенный в ОЗУ с нулевым ожиданием, 2) другую функцию прерывания, которая в данный момент не выполняется, 3) Опцию расширения безопасности не существует. Поскольку она добавляет дополнительные циклы. Ядра Cortex-M с гарвардской компьютерной архитектурой имеют более короткую задержку прерывания. Чем ядра Cortex-M с компьютерной архитектурой Фон Неймана.
Группы команд ARM Cortex-M
Группа
Биты Instr
ИнструкцииКора
головного мозга M0,M0+,M1
Кортекс
М3
Кора
М4
Кора
М7
Кора
М23
Кортекс
М33,М35П
Кора
головного мозга М55
Большой палец-116ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BLX, BX, CMN, CMP, CPS, EOR, LDM, LDR, LDRB, LDRH, LDRSB, LDRSH, LSL, LSR, MOV, MUL, MVN, NOP, ORR, POP, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STM, STR, STRB, STRH. SUB, SVC, SXTB. SXTH, TST, UXTB. UXTH, WFE, WFI. YIELDДАДАДАДАДАДАДА
Большой палец-116CBNZ, CBZНЕТДАДАДАДАДАДА
Большой палец-116ITНЕТДАДАДАНЕТДАДА
Большой палец-232BL, DMB. DSB. ISB, MRS. MSRДАДАДАДАДАДАДА
Большой палец-232СДИВ. УДИВНЕТДАДАДАДАДАДА
Большой палец-232АЦП, ДОБАВИТЬ, ДОПОГ, И, АСР, Б, ФКП, БИК, БИК, ОГТ, CLREX, CLZ ПО, ПАРАМЕТРЫ, СМР, ДБГ, ПНП, НРС, ЛДМ, ЛДР, LDRB, LDRBT, МЦРУ, LDREX, LDREXB, LDREXH, LDRH, LDRHT, LDRSB, LDRSBT, LDRSH, LDRSHT, LDRT, ЛСЛ, ЛСР, МКР, MCRR, ОМС, НОМЕР, ВАХТА, MOVW, КРМ, МРНЦ, ООО, МВН, НОП, ОРН, ОРР, ПЛИС, PLDW, ПЛИ, ПОП, ТОЛЧОК, RBIT, ПРЕПОДОБНЫЙ, REV16, REVSH, РОР, RRX Н, РСБ, СБК, SBFX, СЕВ, SMLAL, SMULL, ССАТ, НТС, СТМ, УЛ., ЗА STRB, STRBT, STRD УСПЕШНО, STREX, STREXB, STREXH, STRH, STRHT, СТРТ, СУБ, SXTB. SXTH, ТББ, ТБХ, ТЭ, ТСТ, UBFX, UMLAL, UMULL, УСАТ, UXTB. UXTH, ВТЭ, ВДИ. УРОЖАЙНОСТЬНЕТДАДАДАНЕТДАДА
ДСП32PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, SMLAD, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, SXTAB, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, USUB16, USUB8, UXTAB. UXTAB16, UXTAH. UXTB16НЕТНЕТДАДАНЕТНеобязательныйДА
SP Float32VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA, VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR. VSUBНЕТНЕТНеобязательныйНеобязательныйНЕТНеобязательныйНеобязательный
Поплавок DP32VCVTA. VCVTM, VCVTN. VCVTP, VMAXNM. VMINNM, VRINTA. VRINTM, VRINTN. VRINTP, VRINTR. VRINTX, VRINTZ. VSELНЕТНЕТНЕТНеобязательныйНЕТНЕТНеобязательный
TrustZone16BLXNS. BXNSНЕТНЕТНЕТНЕТНеобязательныйНеобязательныйНеобязательный
TrustZone32SG, TT, TTT, TTA. TTATНЕТНЕТНЕТНЕТНеобязательныйНеобязательныйНеобязательный
Сопроцессор16CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC. MRRC2НЕТНЕТНЕТНЕТНЕТНеобязательныйНеобязательный
  • Примечание: MOVW-это псевдоним. Который означает 32-разрядную
  • Примечание: Для Cortex-M1 инструкции WFE / WFI / SEV существуют. Но выполняются как инструкция NOP.
  • Примечание: Инструкции single-precision (SP) FPU действительны в 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. Пока кремниевая опция не была вновь введена в

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

  • Инструкции ARM SWP и SWPB (swap) не имеют аналогичной функции в Cortex-M.

16-битный набор команд Thumb-1 эволюционировал с тех пор. Как был впервые выпущен в устаревших ядрах ARM7T с архитектурой ARMv4T. Новые инструкции Thumb-1 были добавлены по мере выпуска каждой устаревшей архитектуры ARMv5 / ARMv6 / ARMv6T2. Некоторые 16-битные инструкции Thumb-1 были удалены из ядер Cortex-M:

  • SETEND не существует. Потому что переключение режима передачи данных на лету больше не поддерживается.
  • Инструкции сопроцессора не поддерживались на ядрах Cortex-M. Пока кремниевая опция не была вновь введена в
  • Инструкция SWI была переименована в SVC. Хотя двоичное кодирование инструкции то же самое. Однако код обработчика SVC отличается от кода обработчика SWI из-за изменений в моделях исключений.

Cortex-M0

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

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

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

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

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

Чипсы

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

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

  • NXP LPC4300 (один Cortex-M4F + один Cortex-M0)
  • Texas Instruments SimpleLink Wireless MCUs CC1310 и CC2650 (один программируемый сетевой процессор Cortex-M3 + один сетевой процессор 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 (most). Отсутствует 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)
  • Микро-буфер трассировки (MTB) (доступен в M0+/M23/M33/M35P)

Чипсы

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

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

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

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

21 июня 2018 годаисследователи Мичиганского университета на Симпозиуме 2018 года по технологии СБИС и схемам объявили о создании «самого маленького компьютера в мире». Или компьютерного устройства. Основанного на ARM Cortex – M0+ (включая оперативную память и беспроводные передатчики и приемники на основе фотоэлектрики) с докладом «A 0.04 mm3″. Беспроводная и безбатарейная сенсорная система 16nW со встроенным процессором Cortex-M0+ и оптической связью для измерения температуры сотовой связи.Это устройство составляет 1/10 размера ранее заявленного IBM мирового рекордного компьютера с марта 2018 года. Что меньше крупицы соли.

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

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

  • Архитектура ARMv6-M[9]
  • 3-ступенчатый трубопровод.
  • Наборы инструкций:
    • Большой палец-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.
  • Отладка: нет, уменьшена, заполнена.
  • Данные endianness: little-endian или BE-8 big-endian.
  • Расширение операционной системы: присутствует или отсутствует.

Чипсы

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

  • Altera Cyclone-II, Cyclone-III, Stratix-II. Stratix-III
  • ГОВИН М1 [18]
  • Microsemi (Actel) Fusion, IGLOO/e, ProASIC3L, ProASIC3/E
  • Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7[19]

Плата Arduino Due с микроконтроллером Atmel ATSAM3X8E (ARM Cortex-M3 core)

Плата разработки 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:

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

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

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

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

TI Stellaris Launchpad Board с 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:

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

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

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): только инструкция или инструкция и данные.
  • Дополнительный режим удержания (с комплектом управления питанием Arm) для спящих режимов.

Чипсы

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

Cortex-M23

Процессор Cortex-М23 ядро было объявлено в октябре 2016 года[25] и на основе новых ARMv8-м архитектуры , который ранее был объявлен в ноябре 2015 года.[26] концептуально ядра Cortex-M23 представляет похожими на процессоре Cortex-M0+ с плюсом деления целых чисел инструкции и TrustZone функции безопасности. А также имеет 2 стадии эксплуатации трубопровода.

Ключевые особенности ядра 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).
  • Микро-буфер следа (MTB) (доступный в M0+/M23/M33/M35P).

Чипсы

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

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

Ключевыми особенностями ядра 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 регионов.
  • Микро-буфер следа (MTB) (доступный в M0+/M23/M33/M35P).

Чипсы

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

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 регионами
  • SAU с 0, 4 или 8 регионами
  • Кэш команд размером 4КБ, 8КБ, 16КБ, 32КБ, 64КБ
  • Кэш данных размером 4КБ, 8КБ, 16КБ, 32КБ, 64КБ
  • ECC по кэшам и TCMs
  • 1-480 прерывания
  • 3-8 биты приоритета исключения
  • Внутренние и внешние параметры WIC. Дополнительные CTI, ITM и DWT
  • Пользовательские инструкции ARM (доступны в будущем выпуске)

Чипсы

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

  • По состоянию на март 2021 года чипы не были объявлены.

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

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

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

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

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

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

Дальнейшее чтение

  • Встраиваемые системы с микроконтроллерами ARM Cortex-M на языке ассемблера и C; 3-е Изд.; Ифэн Чжу; 738 страниц; 2017; ISBN 978-0982692660.
  • Руководство дизайнера по семейству процессоров Cortex-M; 2-е Изд.; Тревор Мартин; 490 страниц; 2016; ISBN 978-0081006290.
  • ARM Assembly for Embedded Applications; 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-е Изд.; Vincent Mahout; 256 страниц; 2012; ISBN 978-1848213296.

Внешние ссылки

Викимедиа Коммонс имеет медиа. Связанные с ARM Cortex-M.
Официальные документы ARM Cortex-M
Краткие справочные карты
  • Инструкции: Большой палец-1 (1), РУКА и Большой палец-2 (2), Вектор с плавающей запятой (3) – arm.com
  • Коды операций: Thumb-1 (1, 2), ARM (3, 4), Директивы ассемблера GNU (5).
Миграция
Прочее
скрыть
Встроенные
микроконтроллеры
Кортекс-М0
  • Кипарис PSoC 4000, 4100, 4100M, 4200, 4200DS, 4200L, 4200M
  • Infineon XMC1000
  • Nordic nRF51
  • NXP LPC1100, LPC1200
  • nuvoTon NuMicro
  • Sonix SN32F700
  • STMicroelectronics STM32 F0
  • Toshiba TX00
  • Vorago VA108x0
Кортекс-М0+
  • Cypress PSoC 4000S, 4100S, 4100S+, 4100PS, 4700S, FM0+
  • Holtek HT32F52000
  • Микрочип (Atmel) SAM C2, D0, D1, D2, DA, L2, R2, R3
  • NXP LPC800, LPC11E60, LPC11U60
  • NXP (Freescale) Kinetis E. EA M, V1, W0
  • Raspberry Pi RP2040
  • Renesas Synergy S1
  • Silicon Labs (Energy Micro) EFM32 Zero, Happy
  • STMicroelectronics STM32 L0
Кора головного мозга-М1
  • Altera FPGAs Cyclone-II, Cyclone-III, Stratix-II. Stratix-III
  • Microsemi (Actel) FPGA Fusion, IGLOO/e, ProASIC3L, ProASIC3/E
  • ПЛИС Xilinx Spartan-3, Virtex-2-3-4
Кора головного мозга-М3
Кортекс-М4
  • Микрочип (Atmel) SAM 4L, 4N, 4S
  • NXP (Freescale) Kinetis K, W2
Cortex-M4F
  • Кипарис 6200, FM4
  • Infineon XMC4000
  • Микрочип (Atmel) SAM 4C, 4E, D5, E5, G5
  • Микрочип CEC1302
  • Nordic nRF52
  • NXP LPC4000, LPC4300
  • NXP (Freescale) Kinetis K, V3, V4
  • Renesas Synergy S3, S5, S7
  • Silicon Labs (Energy Micro) EFM32 Wonder
  • STMicroelectronics STM32 F3, F4, L4, L4+, WB
  • Texas Instruments LM4F/TM4C, MSP432
  • Toshiba TX04
Cortex-M7F
  • Микрочип (Atmel) SAM E7, S7, V7
  • NXP (Freescale) Kinetis KV5x
  • STMicroelectronics STM32 F7, H7
Кора головного мозга-М23
  • Микрочип (Atmel) SAM L10, L11

Микроконтроллеры реального времени

Классические чипы на базе ARM

Классические
процессоры
ARM7
ARM9
ARM11
Совместимость с ARMv2a
Совместимость с ARMv4

Совместимость с ARMv5TE
  • Intel/Marvell XScale
  • Марвелл Шива, Феросеон. Джолтеон, Ирокез
  • Фарадей ФА606ТЕ, ФА616ТЕ. ФА626ТЕ, ФА726ТЕ