ЦПУ ARM Cortex для семейства STM32

В последние семь лет силы разработчиков микроконтроллеров были направлены на интегрирование в микроконтроллеры общего назначения ЦПУ ARM7 и ARM9. На сегодняшний день различные производители выпускают порядка двухсот ARM-микроконтроллеров. Таким производителем является компания ST Microelectronics, выпускающая семейство STM32 – одно из первых семейств микроконтроллеров, построенных на базе нового ЦПУ ARM Cortex-M4. Данные микроконтроллеры стали своего рода эталоном по стоимости и рабочим характеристикам, они широко используются в проектах, где необходимо низкое энергопотребление наряду с жесткими требованиями к характеристикам управления в реальном времени.

Краткий обзор ЦПУ Cortex в микроконтроллерах STM32

ARM Cortex – это новое поколение процессоров, выполненных в рамках стандартной архитектуры и в то же время отвечающих строгим технологическии требованиям. По сравнению с другими ЦПУ ARM, семейство Cortex обьединяет системную архитектуру со стандартным ЦПУ в завершенном процессорном ядре. Данное семейство можно разбить на три основных профиля: профиль А для применения в составе устройств с высокой производительностью, профиль R для применения в составе систем, работающих в реальном времени и профиль М для применения в составе дизайнов с жесткими требованиями относительно стоимости конечного изделия.

В основе микроконтроллеров STM32 лежит профиль Cortex-M3, специально разработанный для проектов, где необходимы развитые системные ресурсы и, при этом, малое энергопотребление. Их низкая стоимость позволяет конкурировать с популярными среди разработчиков электронных устройств в постсоветском пространстве 8 и 16-битными микроконтроллерами, практически вытесняя последние с рынка. Не смотря на успешную интеграцию ЦПУ ARM7 и ARM9 в стандартные микроконтроллеры, в них все еще прослеживается изначальная ориентированность на системы на кристалле (SoC), это заметно по способу обработки исключительных ситуаций и прерываний, поскольку каждый производитель реализует данные механизмы в своих продуктах по-своему.

Однако Cortex-M4 представляет собой микроконтроллерное ядро, подчиняющееся строгой системе стандартизации и, помимо ЦПУ, содержащее также остальные элементы, составляющие основу микроконтроллера такие, как система прерываний, системный таймер SysTick, полноценная система отладки и карта памяти. Четырехгигабайтное адресное пространство Cortex-M4 состоит из четко распределенных областей кода программы, статического ОЗУ, устройств ввода-вывода и системных ресурсов. Основное отличие от ядра ARM7 заключается в том, что ядро Cortex-M4 выполнено по Гарвардской архитектуре, следовательно имеет несколько шин, позволяющих выполнять операции параллельно. Данное семейство также имеет отличие от предыдущих ARM-архитектур в возможности производить операции с фрагментированными данными. Данный подход гарантирует, что внутренняя статическая ОЗУ будет использована максимально эффективно. Семейство также предоставляет возможность доступа к двум разделенным банкам памяти размером 1 Мбайт в режиме bit-bang. Такой подход позволяет рационально использовать ресурсы контроллера для доступа к регистрам и флагам УВВ, расположенным в области статического ОЗУ, это исключает необходимость интеграции полнофункционального битового процессора.

Процессорное ядро ARM Cortex-M4

Один из важнейших компонентов ядра Cortex-M4 – контроллер векторизованных вложенных прерываний (КВПП), предоставляющий обобщенную структуру прерываний и методы их обработки. КВПП определяет векторы прерываний для около двухсот источников, и каждому может быть назначен свой приоритет. При разработке такого механизма был сделан акцент именно на быстродействии обработки прерываний, таким образом время с момента получения запроса на прерывание до его обработки не превышет двенадцати циклов. Это достигается с использованием автоматизированных стековых операций, выполняемых встроенным в ЦПУ специальным микрокодом. При одновременном поступлении прерываний КВПП осуществляет упорядоченную обработку прерываний, при чем задержка вызова очередной процедуры прерывания не превышает шести циклов. Вопрос наложения прерываний остается также актуален (как и для большинства современных микроконтроллеров), так как в случае наложения, прерывание с более высоким приоритетом может вытеснить более низкоприоритетное прерывание без затрат на дополнительные циклы ЦПУ. На структуру организации прерываний в ядре Cortex-M4 значительно влияют экономичные режимы работы. Так существует возможность автоперехода в экономичный режим работы по завершении обработки прерывания при соответствующей конфигурации ЦПУ. После такого перехода ядро будет бездействовать до возникновения следующей исключительной ситуации.

Изначально ядро Cortex-M4 разрабатывалось как недорогое, однако оно остается 32-битным ЦПУ, соответственно поддерживает два режима работы: threading и handling, каждый из которых может иметь свои стеки. Это дает возможность разрабатывать интеллектуальное ПО, используя операционные системы реального времени (RTOS). В состав ядра также входит самостоятельно перезагружаемый 24-битный таймер, используемый для генерации интервальных переодических прерываний и широко используемый большинством RTOS. Семейство Cortex в отличии от ЦПУ ARM7 и ARM9 (имеющих 32-битный ARM и 16-битный Thumb наборы инструкций), поддерживает набор инструкций Thumb-2, представляющий собой смесь 16- и 32-битных инструкций, что позволяет достичь производительности 32-битного набора ARM и свойственной 16-битному набору Thumb плотности кода. В то же время Thumb-2 является набором инструкций, ориентированным на компиляторы С/C++, что в свою очередь освобождает разработчика от привязки к ассемблерным инструкциям для достижения максимальной эффективности.

На сегодняшний ядро Cortex-M4 – является последней ступенью семейства Cortex-M, дающей возможность обрабатывать сигналы на уровне DSP. Добавлена поддержка возможности умножения с накоплением за один такт, арифметика с насыщением, вычисления с плавающей запятой, команды управления потоком данных SIMD (single instruction multiple data). Блок вычислений с плавающей запятой полностью соответствует стандарту IEEE 754 и дает процессору возможность осуществления многих базовых вещественночисленных математических операций. Ядро Cortex-M4 разработано так, что бы инструкции DSP выполнялись за один такт, на нативном уровне поддерживается FPU, это позволило выйти на новые сегменты рынка. Отныне отпала необходимость использования отдельных DSP для того, что бы провести обработку сигналов, так появилась возможность использовать лишь один STM32F4xx, который включает в себя DSP и микроконтроллер на одном кристалле. STM32F4xx применим везде, где существует необходимость обрабатывать цифровые сигналы: контроль над шаговыми двигателями, обработка звуковых и видеосигналов, технологии радиолокации, навигации, прочее. Микроконтроллер может легко выполнить цифровую фильтрацию, свертку или быстрое преобразование Фурье.

 

Автор: Ходнев Т.A. ДК-21. КЭВА, ФЕЛ, НТУУ «КПИ».