Микроконтроллеры на основе ядра ARM Cortex M3
Константин СтароверовПеред разработчиком современных встраиваемых микроконтроллерных систем, как правило, остро стоят следующие задачи:
- расширение функциональных возможностей, связанное с необходимостью увеличения производительности обработки информации;
- снижение уровня энергопотребления (особенно важно для применений с батарейным питанием);
- выполнение проекта в кратчайшие сроки при минимальных затратах на его осуществление;
- цена конечного продукта должен быть ниже, чем у конкурентов.
Именно для решения данных задач и было разработано ядро Cortex-M3 c рядом усовершенствований в архитектуре. В частности ядром, которое содержит 3-ступечатый конвейер и выполнено по Гарвардской архитектуре, поддерживается ряд новых возможностей, в том числе предсказание переходов, однотактное умножение данных, аппаратное деление данных. Реализация данных новаций позволила добиться уровня удельной производительности 1.25 DMIPS/МГц. Кроме того, в ядре Cortex-M3 реализован новый набор инструкций Thumb-2, который в некоторых случаях позволяет добиться увеличения удельной производительности на 70% по сравнению с ядром ARM7TDMI-S, исполняющим инструкции Thumb, и на 35% - по сравнению с тем же ядром, исполняющим инструкции ARM.
Снизить стоимость и энергопотребление разработчикам ядра Cortex-M3 удалось за счет оптимизации архитектуры, снижения размеров кристалла (вследствие более плотного расположения компонентов ядра, снижения количества логических вентилей и повышения эффективности использования памяти) и применения технологии 0,18 мкм. Возможности управления тактовой частотой и доступность нескольких экономичных режимов работы позволяют еще больше снизить энергопотребление.
При разработке ядра Cortex-M3 учитывалось, что разработчик должен приложить минимум усилий на освоение программирования. Теперь не нужно изучать ассемблерный код и глубоко вникать в особенности архитектуры процессора. Предложенный новый набор инструкций Thumb-2 более естественно воспроизводит Си-код, поддерживая такие операции, как побитная обработка, аппаратное деление и инструкции типа If/Then. Оптимальный как по производительности, так и по плотности кода набор инструкций Thumb-2 теперь исключает необходимость выбирать режим работы: ARM или Thumb. Ускорить процесс проектирования также поможет встроенная отладочная система, которая помимо традиционного порта JTAG содержит и двухпроводной последовательный порт SW.
Архитектура ядра Cortex-M3
Ядро Cortex-M3 выполнено по архитектуре ARMv7-M (профиль М) и имеет иерархическую структуру (рис. 1).
Рис. 1. Архитектура ядра Cortex-M3
Его основой является ЦПУ CM3Core, дополненное такими внешними устройствами, как контроллер вложенных векторных прерываний (КВВП), блок защиты памяти и система отладки и трассировки. Каждое из этих внешних устройств поддерживает расширенные возможности по конфигурации. ЦПУ ядра Cortex-M3 выполнено по гарвардской архитектуре с раздельными пространствами памяти программ и памяти данных. Этим оно отличается от ЦПУ ядер семейства ARM7, выполненных по фон-неймановской архитектуре с общим пространством памяти данных и памяти программ. Благодаря возможности одновременного считывания из памяти кода инструкции и данных ядро Cortex-M3 способно производить несколько операций параллельно, что ускоряет выполнение программы.
Конвейер инструкций ЦПУ имеет 3 ступени для выборки инструкции, ее дешифрации и выполнения. Если на конвейере оказывается инструкция перехода, то на этапе ее дешифрации также выполняется выборка инструкции, определенной в результате предсказания перехода, что ускоряет выполнение программы.
ЦПУ Cortex-M3 поддерживает дешифрацию как традиционных инструкций Thumb, так и новых инструкций Thumb-2. В состав ЦПУ входят АЛУ с возможностями аппаратного деления и умножения данных, логика управления и интерфейсы к прочим компонентам процессора. В него также входят 13 регистров общего назначения, два указателя стека, счетчик команд и ряд специальных регистров, в т.ч. регистр статуса программы. Каналы передачи данных, банк регистров и интерфейс памяти ядра Cortex-M3 являются 32-битными. Ядро Cortex-M3 может работать в одном из двух режимов работы: «Thread» и «Handler», и поддерживает два уровня доступа к коду программы: привилегированный и непривилегированный, что облегчит реализацию сложных и открытых систем, не жертвуя при этом защищенностью системы. Код программы, исполняемый в непривилегированном режиме, имеет ограниченные возможности по доступу к некоторым ресурсам и специфическим областям памяти. Режим «Thread» является типичным режимом работы, в котором код программы может быть как привилегированным, так и непривилегированным. Переход в режим «Handler» происходит при возникновении исключительной ситуации (exception); в данном режиме весь код программы выполняется как привилегированный. Также предусматривается такое понятие, как рабочее состояние ядра. Их два: Thumb, в котором выполнение инструкций идет обычным путем, и Debug, в котором активизируются встроенные отладочные возможности ядра.
Несмотря на использование Гарвардской архитектуры, все пространства памяти ЦПУ Cortex-M3 имеют общую линейную систему распределения адресов в пространстве размером 4 Гбайт (рис. 2).
Рис. 2. Адресное пространство процессора Cortex-M3
В левой части рисунка некоторые сокращения на русском, другие на английском, легко запутаться, например, при расшифровке ETM
В пространстве статического ОЗУ и устройств ввода-вывода имеется битно-адресуемая область размером 1 Мбайт. В отличие от общепринятого способа «чтение-модификация-запись», использующегося для битовой обработки и характеризующегося неэффективным расходованием машинных циклов, в ядре Cortex M3 используется более простой и эффективный способ. Он получил название "Bit Banding" и заключается в том, что доступ к битам в области хранения битов (см. рис. 2) осуществляется записью не в эту область, а в связанную с ней область доступа к битам, каждому байту которой назначен свой бит в области хранения. При этом за состояние бита в области хранения отвечает младший бит соответствующего байта в области доступа. Таким образом, вместо шести инструкций, необходимых для выполнения операции «чтение-модификация-запись», выполняется только одна операция записи в ячейку памяти (три инструкции).
Отличием архитектуры ARMv7-M от предшествующих архитектур ARM является поддержка нового набора инструкций Thumb-2. Этот набор объединяет преимущества 16- и 32-битных инструкций, позволяя добиться как производительности 32-битных ARM-инструкций, так и высокой плотности 16-битных Thumb-инструкций (рис. 3).
Рис. 3. Сравнение тестов Drystone наборов инструкций ARM, Thumb и Thumb-2
Процессор Cortex-M3 содержит более совершенную систему прерываний (относительно ARM7), характеризующуюся задержкой вызова процедуры обработки прерывания всего лишь 12 машинных циклов (для сравнения, ARM7TDMI-S требует 24-42 цикла). Основу системы прерываний составляет КВВП, который в стандартной реализации поддерживает одно немаскируемое прерывание и 32 прерывания общего назначения с 8 уровнями приоритетов (в общем случае число прерываний может достигать 240 при 256 уровнях приоритета).
Блок защиты памяти является опциональным компонентом ядра Cortex-M3. Он позволяет повысить надежность встраиваемых систем за счет защиты критичной информации, используемой операционной системой, от действия пользовательских программ.
Доступ к встроенной отладочной системе реализован посредством порта доступа к отладочной системе (DAP), который с внешней средой связывается по одному из последовательных интерфейсов: 2-выводной последовательный отладочный порт SW или стандартный 5-выводной последовательный порт JTAG. Появление 2-выводного интерфейса делает возможным появление 32-битных микроконтроллеров с числом выводов менее 10 и существенно упрощает электрическое подключение к отлаживаемому устройству. Для микроконтроллеров с масочным ПЗУ предусмотрен специальный блок Flash Patch, который во время отладки позволяет осуществлять выборку инструкций не из ПЗУ, а из статического ОЗУ, тем самым существенно упрощая процедуру отладки программного кода для таких микроконтроллеров.
Микроконтроллеры на основе ядра Cortex-M3
Одной из компаний, которая уже освоила серийный выпуск флэш-микроконтроллеров на основе процессора Cortex M3, является STMicroelectronics (далее STM). Данные микроконтороллеры образуют семейство STM32. Внутри семейства микроконтроллеры группируются на две группы: «Performance» и «Access» (табл. 1).
Таблица 1. Микроконтроллеры компании STM на основе ядра Cortex-M3
Наименование | Флэш- память, кБ | ОЗУ, кБ | АЦП | Таймеры (IC/OC/ PWM1)) | Прочие таймеры | |
---|---|---|---|---|---|---|
36-выв. | STM32F101T6 | 32 | 6 | 10x12 бит | 2x16 бит (8/8/8) | 2 сторожевых таймера, 24-битный счетчик |
STM32F101T8 | 64 | 10 | 10x12 бит | 3x16 бит (12/12/12) | ||
48-выв. | STM32F101C6 | 32 | 6 | 10x12 бит | 2x16 бит (8/8/8) | |
STM32F101C8 | 64 | 10 | 10x12 бит | 3x16 бит (12/12/12) | ||
STM32F101CB | 128 | 16 | 10x12 бит | 3x16 бит (12/12/12) | ||
64-выв. | STM32F101R6 | 32 | 6 | 16x12 бит | 2x16 битt (8/8/8) | |
STM32F101R8 | 64 | 10 | 16x12 бит | 3x16 бит (12/12/12) | ||
STM32F101RB | 128 | 16 | 16x12 бит | |||
100-выв. | STM32F101V8 | 64 | 10 | 16x12 бит | ||
STM32F101VB | 128 | 16 | 16x12 бит | |||
36-выв. | STM32F101T6 | 32 | 6 | 10x12 бит | 3x16 бит (12/12/14) | |
STM32F101T8 | 64 | 10 | 10x12 бит | 4x16 бит (16/16/18) | ||
48-выв. | STM32F103C6 | 32 | 10 | 10x12 бит | 3x16 бит (12/12/14) | |
STM32F103C8 | 64 | 20 | 10x12 бит | 4x16 бит (16/16/18) | ||
STM32F103CB | 128 | 20 | 10x12 бит | 4x16 бит (16/16/18) | ||
64-выв. | STM32F103R6 | 32 | 10 | 16x12 бит | 3x16 бит (12/12/14) | |
STM32F103R8 | 64 | 20 | 16x12 бит | 4x16 бит (16/16/18) | ||
STM32F103RB | 128 | 20 | 16x12 бит | |||
100-выв. | STM32F103V8 | 64 | 20 | 16x12 бит | ||
STM32F103VB | 128 | 20 | 16x12 бит |
Последовательный интерфейс | Число линий в/в2) | Корпус | Напря- жение питания, В | Специальные возможности | |
---|---|---|---|---|---|
36-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816) | 26 | QFN36 | 2...3.6 | Группа «Access»: тактовая частота ЦПУ 36 МГц, вывод Vbat, 3 экономичных режима работы, схемы POR, PDR и PVD, встроенный RC-генератор 8 МГц, встроенный RC-генератор 32 кГц, основной генератор 4...16 МГц, специальный генератор 32 кГц, рабочий температурный диапазон -40...85°C |
1xSPI/1xI2C/2xUSART (IrDa/ISO7816) | 26 | QFN36 | 2...3.6 | ||
48-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816) | 36 | LQFP48 | 2...3.6 | |
2xSPI/2xI2C/3xUSART (IrDa/ISO7816) | 36 | LQFP48 | 2...3.6 | ||
2xSPI/2xI2C/3xUSART (IrDa/ISO7816) | 36 | LQFP48 | 2...3.6 | ||
64-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816) | 51 | LQFP64 | 2...3.6 | |
2xSPI/2xI2C/3xUSART (IrDa/ISO7816) | 51 | LQFP64 | 2...3.6 | ||
51 | LQFP64 | 2...3.6 | |||
100-выв. | 80 | LQFP100 | 2...3.6 | ||
80 | LQFP100 | 2...3.6 | |||
36-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816)/USB/CAN | 26 | QFN36 | 2...3.6 | Группа «Performance»: тактовая частота ЦПУ 72 МГц, вывод Vbat, 3 экономичных режима работы, схемы POR, PDR и PVD, встроенный RC-генератор 8 МГц, встроенный RC-генератор 32 кГц, основной генератор 4...16 МГц, специальный генератор 32 кГц, 1x USART (4,5 Мбит/сек), быстродействие переключения линий ввода-вывода 18 МГц, ШИМ-контроллер ориентированный на управление электроприводом, 2x АЦП, рабочий температурный диапазон -40...85°C или -40...105°C |
2xSPI/2xI2C/3xUSART (IrDa/ISO7816)/USB/CAN | 26 | QFN36 | 2...3.6 | ||
48-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816)/USB/CAN | 36 | LQFP48 | 2...3.6 | |
2xSPI/2xI2C/3xUSART (IrDa/ISO7816)/USB/CAN | 36 | LQFP48 | 2...3.6 | ||
2xSPI/2xI2C/3xUSART (IrDa/ISO7816)/USB/CAN | 36 | LQFP48 | 2...3.6 | ||
64-выв. | 1xSPI/1xI2C/2xUSART (IrDa/ISO7816)/USB/CAN | 51 | LQFP64 | 2...3.6 | |
2xSPI/2xI2C/3xUSART (IrDa/ISO7816)/USB/CAN | 51 | LQFP64 | 2...3.6 | ||
51 | LQFP64 | 2...3.6 | |||
100-выв. | 80 | LQFP100, BGA100 | 2...3.6 | ||
80 | LQFP100, BGA100 | 2...3.6 |
Микроконтроллеры первой группы (STM32F103) работают на частоте 72 МГц и отличаются более высокой степенью интеграции ОЗУ и устройств ввода-вывода (УВВ). В свою очередь, микроконтроллеры 2-ой группы (STM32F101) работают на частоте 36 МГц и менее насыщены оперативной памятью и устройствами ввода-вывода. Микроконтроллеры обоих групп с одинаковым объемом флэш-памяти совместимы как программно, так и электрически (одинаковое расположение выводов). Уровень удельного энергопотребления микроконтроллеров составляет всего лишь 0,19 мВт/МГц. При работе на частоте 72 МГц потребляемый ток составляет 27 мА. Кроме того, уровень потребления может быть еще больше снижен при переходе в один из экономичных режимов работы (например, до 3.4 мкА в дежурном режиме с работающими ЧРВ). Такие характеристики энергопотребления позволяют не только использовать микроконтроллеры в системах с батарейным питанием, но и снизить стоимость источника питания.
Микроконтроллеры «Performance» ориентированы на применения, которые требуют одновременно и повышенной производительности обработки и экономичной работы, а также используют коммуникационные интерфейсы USB 2.0 и/или CAN. Наличие у этих микроконтроллеров 6-канального ШИМ-контроллера с возможностями синхронизации каналов внешним сигналом также ориентирует эти микроконтроллеры на применение в устройствах управления электроприводами.
Невысокая стоимость микроконтроллеров «Access» делает их идеальными для модернизации существующих 8- или 16-битных проектов с целью расширения возможностей по обработке информации, управлению и передачи данных.
Разобраться в структуре микроконтроллеров STM32 поможет схема на рис. 4.
Рис. 4. Структурная схема микроконтроллеров STM32
ЦПУ Cortex M3 связывается с памятью и устройствами ввода-вывода посредством быстродействующей шинной матрицы. Для организации последовательной передачи данных предусмотрены интерфейсы USB (12Мбит/сек), USART (до 4,5 Мбит/сек), I2C (400 кГц) и SPI (18 МГц). Реализовать канал последовательной передачи по стандарту CAN поможет входящий в состав некоторых микроконтроллеров одноименный контроллер.
Поддержка проектирования
Для облегчения и ускорения процесса проектирования STM предлагает следующий набор инструментов:
- бесплатный набор драйверов всех стандартных блоков и УВВ, от портов ввода-вывода и таймеров до блоков CAN, I2C, внешней шины, SPI, UART, АЦП и др.
- бесплатные библиотеки для векторного управления электродвигателями, в том числе асинхронными с короткозамкнутым ротором.
- новости, документация, рекомендации по применению, примеры программ (доступны в Интернете по ссылке http://www.st.com/stm32).
- ряд операционных систем реального времени сторонних компаний (без уплаты роялти), в т.ч. CMX-RTX (CMX Systems: www.cmx.com), FreeRTOS (www.FreeRTOS.org), PowerPac (IAR: www.iar.com), ARTX-ARM (Keil: www.keil.com), mC/OS-II (Micrium: www.micrium.com), embOS (Segger: www.segger.com).
- интегрированные среды для проектирования (коммерческие), в т.ч. uVision3 (Keil), EWARM (IAR) и др.
- стартовые наборы, оценочные наборы и наборы для проектирования (см. табл. 2).
Код заказа | Описание |
---|---|
STM3210B-PRIMER | Стартовый набор компании Raisonance для МК STM32. В состав входит IDE «RIDE» (отладка кода размером до 32 кбайт), компилятор GNU C/C++, а также простая в освоении платформа с управлением по типу MEMS-систем и встроенным RLink (USB/JTAG) |
STM3210B-PFSTICK | Модуль для подключения к компьютеру через порт USB. Предназначен для изучения возможностей и характеристик МК STM32. Для оценки возможностей встроенных УВВ предусмотрен разъем расширения. Комплектуется набором программных инструментов Hitex (без ограничений), компилятором TASKING VX C/C++ и средой для проектирования HiTOP5 компании Hitex. |
STM3210B-SK/HIT | Стартовый набор компании Hitex. Содержит неограниченные среду для проектирования HiTOP5 и компилятор Tasking VX, модуль STM32-PerformanceStick (описан выше), плату расширения ввода-вывода |
STM3210B-SK/IAR | Стартовый набор компании IAR (для кода размером до 32 кбайт), комплектуется компилятором IAR C/C++, адаптером J-Link (USB/JTAG) и оцeночной платой |
STM3210B-SK/KEIL | Стартовый набор RealView компании Keil. Комплектуется IDE uVision 3 (для кода размером до 16 кбайт), компилятор ARM C/C++, адаптером ULINK (USB/JTAG) и оценочной платой |
STM3210B-SK/RAIS | Стартовый набор REva компании Raisonance с IDE "RIDE" (отладка до 32 кбайт кода), компилятором GNU C/C++, модульной оценочной аппаратной частью со встроенным адаптером RLink (USB/JTAG) |
STM3210B-MCKIT | Стартовый набор компании ST для проектирования устройств управления электроприводом. Комплектуется полным набором библиотек по управлению двигателем с использованием датчиков и без них, оценочной аппаратной платформой (реализует векторное управление асинхронным двигателем), а также адаптером J-Link компании Segger для подключения отладочной системы к ПК. |
STM3210B-EVAL | Завершенная оценочная аппаратная платформа с микроконтроллером STM32F103. Поддерживается весь набор встроенных УВВ и функциональных возможностей. |
Выводы
- Микроконтроллеры на основе ядра Cortex-M3 предназначены для использования в составе встраиваемых применений, где требуется одновременное сочетание высокой производительности, возможностей работы в масштабе реального времени, малой потребляемой мощности и низкой стоимости.
- Ключевыми отличиями ядра Cortex-M3, которые позволили ему превзойти предшественника ARM7, являются использование нового набора инструкций Thumb-2, который одновременно сочетает и высокое быстродействие исполнения и отличную плотность, и усовершенствованная система прерываний, характеризующаяся вдвое меньшими потерями времени на вызов процедуры обработки прерывания (по сравнению с ARM7).
- Невысокая стоимость микроконтроллеров со встроенным ядром Cortex-M3 и доступность микроконтроллеров с малым числом выводов делает их привлекательным инструментом для развития существующих 8- и 16-битных применений с целью расширения возможностей по обработке информации и передачи данных.
- Встроенная отладочная система помимо стандартного порта JTAG дополнена новым 2-проводным последовательным интерфейсом, что с одной стороны облегчит электрическое подключение отлаживаемого устройства, а с другой создает предпосылки для появления в будущем 32-битных микроконтроллеров с числом выводов менее 10.
- Серийный выпуск микроконтроллеров со встроенным ядром Cortex-M3 освоен компанией STMicroelectronics. Ее семейство STM32 составляют микроконтроллеры с высокой степенью интеграции запоминающих устройств и высококачественных устройств ввода-вывода (например, 12-битный АЦП с частотой преобразования 1МГц). Доступны микроконтроллеры для подключения к шинам USB и CAN, а также с ШИМ-контроллером, оптимизированного для управления силовым каскадом регулируемого электропривода.
- Микроконтроллеры STM32 поддерживаются полным набором инструментальных средств для проектирования, в т.ч. технической документацией, интегрированными средами для проектирования, примерами программ и библиотек драйверов встроенных устройств ввода-вывода, а также различными наборами для проектирования.
Ваш комментарий к статье | ||||