Развитие ARM-ядер: возможности и производительность
О новом ядре
ARM Cortex-M3 являет собой одну из реализаций архитектуры ARM7v. Это новейшая версия ядра ARM для встраиваемых приложений. Ядро основано на гарвардской архитектуре и использует раздельные шины доступа к данным и к командам (в отличие от Фон-неймановской архитектуры, где данные и команды «делят между собой» одну шину). Гарвардская архитектура изначально позволяет достичь наибольшей производительности, и, несмотря на то, что физически данная архитектура сложнее, из закона Мура следует, что усложнение архитектуры оправдано всегда, когда данное усложнение приводит к увеличению производительности.
Цель Cortex-M3 - занять рынок встраиваемых систем. Это ядро создано как «очень низкопотребляющее», при этом обладающее отличным соотношением «цена-производительность». Основными областями применения данных контроллеров являются автоэлектроника и беспроводные приложения. Как и в случае со всеми ядрами от компании ARM, многие крупные производители уже купили лицензию на новую версию перспективного контроллера и приступили к ее реализации. Некоторые из компаний уже выпустили собственные продукты (STMicroelectronics, NXP, Luminary Micro). Для новой платформы существует и активно развивается целый ряд программно-аппаратных средств, вышедших прямиком из экосистемы ARM7TDMI, это позволяет новым пользователям быстро осваивать данный контроллер.
Другое ядро ARM, ориентированное на тот же рынок, - ядро ARM7TDMI (и ARM7TDMI-S). Оно было выпущено более 10 лет назад и вывело компанию ARM на доминирующую позицию в разработках процессорных ядер. Множество производителей (около 20) разрабатывают и продают микроконтроллеры на базе ARM7. Также впечатляет количество программных средств разработки и отладочных устройств. Благодаря своим качествам и массовости, ARM7TDMI принято считать рабочей лошадкой современного мира встраиваемых устройств.
Рис. 1. Блок-схема STM32
Отличия
Кроме того, что Cortex-M3 использует гарвардскую архитектуру, это, в первую очередь, более оптимизированное уменьшенное базовое ядро, благодаря чему наряду с уменьшением цены увеличивается скорость работы. В ядро интегрированы контроллер прерываний, шинная матрица и отладочные модули. Кроме того, интегрирован модуль управлениями режимами энергосбережения (sleep mode). Данное ядро разработано только для работы с усовершенствованным набором инструкций THUMB-2, что позволяет свести к минимуму использование ассемблера.
Набор инструкций
Как уже было сказано, новое микроконтроллерное ядро Cortex-M3 было создано только для работы с инструкциями THUMB-2, в отличие от исходного ARM7, с которым можно работать как в ARM-, так и в THUMB-режимах. Преимущества данного нововведения:
- Нет необходимости переключаться между Thumb- и ARM-режимами кода, как в ранних вариантах реализации микроконтроллеров. Это позволило снизить временные потери;
- Thumb-2 разработан исключительно под язык программирования C, включая if/then конструкции, аппаратное деление и полноценный битовый процессор;
- Новый набор инструкций позволяет эффективно использовать участки кода повторно, что позволяет создавать еще более плотный код;
- Инструкции Thumb-2 позволяют делать настолько эффективные компиляторы, что это дает возможность полностью отказаться от ассемблерных вставок;
- Все новые преимущества достаточно просты в освоении и в их реализации на практике, что позволяет ускорить разработку, а значит, и выход нового продукта на рынок.
Прерывания
Следующее нововведение Cortex-M3 - это встроенный векторный контроллер вложенных прерываний (NVIC- Nested Vector Interrupt Controller). В отличие от внешнего контроллера прерываний, который присутствует в ARM7TDMI, контроллер, интегрированный в ядро Cortex-M3, может обеспечивать от 32 физических прерываний с 8 уровнями приоритета до 240 прерываний с 256 уровнями приоритета (в зависимости от реализации конкретным производителем микроконтроллера). Благодаря этому время входа в прерывание достаточно мало и всегда детерминировано, что позволяет использовать данные контроллеры в автомобильных и других ответственных приложениях реального времени.
NVIC использует стековую модель работы. Программный счетчик (program counter), регистр статуса программы (program status register), регистр связи (link register) и регистры общего назначения - все загружаются в стек при входе в обработчик прерываний. По выходе из обработчика содержимое регистров восстанавливается. Поэтому уже нет необходимости работать вручную со стеком в ассемблерном коде для сохранения данных на входе в обработчик прерываний и выходе из него.
Обработчики могут быть расставлены по приоритетам с целью обеспечения немедленного выполнения определенного прерывания, даже если в это время выполняется некое другое (с низшим приоритетом). Приоритеты могут меняться по необходимости в любом месте программы. Использование техники tail-chain позволяет не выполнять долговременные операции pop-push при последовательном выполнении нескольких прерываний, а просто при окончании цикла одного обработчика - «перепрыгивать» на начало следующего. И это занимает всего лишь 3 такта вместо 32 для полного цикла pop-push. Все это позволяет сократить задержки и увеличить производительность.
Если NVIC в данный конкретный момент сохраняет данные в стек (перед тем как приступить к обработке прерывания), и в это время приходит запрос на прерывание с более высоким приоритетом, то все, что нужно, чтобы начать выполнение этого прерывания - защелкивание нового адреса вектора. Аналогично, если NVIC в данный момент производит восстановление из стека, то эта операция будет прекращена, и процессор приступит к выполнению нового прерывания. Это также способствует уменьшению времени задержек и обеспечивает предсказуемость времени входа в прерывание.
Режимы сна
Схема управлением питанием ядра Cortex-M3 предусматривает следующие режимы энергосбережения: Sleep Now, Sleep on Exit (по выходу из последнего в очереди прерывания) и SLEEPDEEP режим.
Для удобства получения регулярного временного интервала NVIC содержит интегрированный системный таймер, который может быть использован как тактовый сигнал для операционных систем реального времени (RTOS) или как пробуждающий сигнал для выполнения очередных задач (scheduled tasks). Наличие этой возможности - одно из главных отличий от предыдущих ARM-архитектур.
Модуль защиты памяти
Модуль защиты памяти является опциональным и зависит от реализации микроконтроллера конкретным производителем. Если данный модуль встроен, то он позволяет связать определенные участки памяти с определенными процессами в приложении и определяет правила управления доступом из других процессов. Например, часть памяти может быть полностью заблокирована для всех программных процессов, в то время как некоторые другие участки памяти могут быть доступны только для чтения при выполнении определенных процессов. Также выполнение программы может быть приостановлено при попытке обращения в какую-либо область памяти. Все это обеспечивает существенное улучшение надежности работы программы, особенно в приложениях реального времени.
Отладка
Интегрированный debug модуль и «trace Debug Access Port» могут быть реализованы или на двухпроводном «Serial Wire Debug Port» или на Serial Wire JTAG Debug Port. Совместно с модулем точек останова (Breakpoint unit), модулем слежения за данными (Data Watchpoint), модулем отслеживания (Trace unit), модулем правки Flash, а также опциональным наличием некоторых других блоков, это позволяет решать широкий спектр задач на уровне отладки приложения и наблюдении за поведением ядра. Большинство этих модулей отладки уже были встроены в ARM-архитектуры, однако в Cortex-M3 все они реализованы одновременно, что дает разработчику широкие возможности для воплощения его идей.
Уровень интеграции
Несмотря на то, что ARM7-ядра не имеют такой степени интеграции, как ядра семейства Cortex, в данное время на рынке присутствует широчайший ряд микроконтроллеров на базе ядра ARM7 с богатейшей периферией, что позволяет трансформировать данный контроллер из сегмента общего назначения в узко-профильный микроконтроллер или даже систему на кристалле. И в этом смысле можно выделить не менее 150 различных микроконтроллеров на ядре ARM7.
Для абсолютного большинства встраиваемых приложений практически всегда можно найти ARM7-реализацию, которая в той или иной степени была бы «заточена» именно под эту конкретную задачу. К стандартному ядру производитель микросхемы обычно добавляет различную память, периферию, такую как контроллеры последовательных шин, контроллеры памяти, графические контроллеры и т. д. Контроллеры выпускаются в различных корпусах, для любой сложности работы: для промышленного применения, для установки в автомобиле, а также - со способностью работать в расширенном температурном диапазоне. Микроконтроллеры также могут включать в себя предустановленные программные пакеты, такие как TCP/IP-стек или еще более специфическое программное обеспечение.
Например, линия продуктов STR7 (от STMicroelectronics) имеет 3 главных семейства развития с более чем 45 разными продуктами на базе ядра ARM7 (в различных корпусах, с разным количеством памяти и т.д.). Каждое семейство имеет свой набор периферии, предназначенный для специальных задач. Скажем, ветка STR730 разработана с учетом того, что она будет применяться в промышленных и автомобильных приложениях: она имеет расширенный диапазон рабочих температур, большое число портов ввода/вывода, 3 CAN-интерфейса. В то же время семейство STR710 нацелено на потребительский рынок, а также на рынок сложного промышленного оборудования и содержит множество интерфейсов: CAN, USB, ISO7816, несколько UART, и, несмотря на наличие внешнего интерфейса памяти, - большой объем встроенной ОЗУ и Flash.
Тут следует еще раз отметить, что принятие решения о встраивании в чип на базе ARM7 каких-либо модулей отладки лежит исключительно на конкретном производителе чипов.
Инструментарий
Распространенность ARM7 привела к бурному развитию средств для разработки и отладки от третьих производителей. Сайт компании ARM перечисляет более 130 компаний, работающих на этом рынке.
Большинство таких производителей выпускают отладочные платы, обеспечивая их в первую очередь интерфейсом по загрузке программного кода, а также различной полезной периферией: LCD-дисплеями, светодиодами, кнопками и т. д. Более дорогие отладочные платы комплектуются интегрированной средой разработки (IDE), включающей в себя компилятор, линкер, дебаггер и другие программные средства разработки. Кроме того, такие комплекты могут содержать JTAG-адаптер.
С другой стороны, многие компании выпускают программные средства разработки: от программ визуального моделирования алгоритмов до компиляторов различных языков программирования. Современные среды разработки поддерживают также операционные системы (RTOS) для удобства отладки ПО.
Дополнительным плюсом ARM7 является огромная база наработок, которая накопилась за продолжительное время существования данного ядра.
Для Cortex-M3 уже сформировалась определенная база средств разработки, но пока еще не столь совершенная, как для ARM7.
Что же выбрать?
Если цена является определяющим фактором, то, наверное, есть смысл приобрести что-нибудь на базе Cortex-M3. Если требуется повышенная производительность и невысокое потребление, то, вероятно, также есть смысл обратиться к Cortex-M3. Особенно Cortex-M3 будет интересен в приложениях, где до его появления планировали применять ARM7, в первую очередь - в беспроводной технике и автоэлектронике.
Интегрированные в ядро модули отладки, набор инструкций THUMB-2 ускоряют освоение контроллера и позволяют в кратчайшие сроки вывести новый продукт на рынок. Cortex-M3 - легче и быстрее ARM7TDMI.
Последнее время целый ряд крупных производителей начал выпуск контроллеров на Cortex-M3, а многие фирмы уже приобрели лицензии на их будущее производство.
Перевести готовый дизайн со старого ядра ARM7TDMI на новый Cortex-M3 - не очень сложная задача. Однако же, если разработка была рассчитана на ARM7TDMI, а времени для адаптации под другое ядро уже не осталось, то можно порекомендовать не использовать специфические возможности старого процессора. Это даст возможность упрощенного и более быстрого перехода на новое ядро в будущем.
Литература
1. ftp://ftp.iar.se/WWWfiles/Viewpoints/Choosing_an_ARM_Processor.pdf
2. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337e/DDI0337E_cortex_m3_r1p1_trm.pdf
3. http://www.standardics.nxp.com/products/lpc1000/
4. http://www.st.com/mcu/inchtml-pages-stm32.html
5. http://mcu.compel.ru/mcu_list.php?clear=ps&CORE_TYPE=Cortex-M3.
Получение технической информации, заказ образцов, поставка -
e-mail: mcu.vesti@compel.ru
Ваш комментарий к статье | ||||