CortexM от NXP – переход к универсальной архитектуре проектирования систем на микроконтроллерах
Несколько лет
назад на одном из форумов по радиоэлектронике я вел долгую дискуссию о том,
какой микроконтроллер лучше всего изучать. Большинство доводов было тогда в
пользу AVR - очень популярной в Украине и России серии 8-битных МК с доступно
написанной документацией, множеством доступных библиотек и программатором,
который можно либо изготовить самому, либо купить на любом радиорынке по
доступной цене. Казалось бы, такие железные доводы трудно парировать, но в
конце 2009 года появились новости о новых микроконтроллерах на ядре ARM Cortex-M0,
которые должны стоить меньше 1 $ (во что мало кто тогда поверил) и прекратить
доминирование 8-битных микроконтроллеров.
Почему так дешево
?
Для ответа на
этот вопрос нужно отметить два фактора, повлиявшие на ценообразование:
удешевление технологического процесса
производства;
высокая конкуренция на рынке
Cortex-процессоров.
Удешевление
технологического процесса производства
Стоимость
производства современных кристаллов является достаточно дорогостоящим делом
из-за большой сложности технологического процесса и высоких требований к
окружающим условиям при производстве, поэтому решающим моментом в уменьшении
стоимости процессора является уменьшение площади его кристалла. Процессоры,
выполненные по технологии Сortex, используют самое маленькое ядро ARM, на
сегодняшний день содержащее всего 33 тысячи вентилей (для Cortex-M3),
выполненных по 0.18 мкм технологии, и уменьшенные до разумных размеров
периферийные модули. Требования ядра к объему памяти также минимизированы за
счет внедрения технологий хранения невыровненных данных, битовых операций и
системы команд Thumb-2. Польза от этих нововведений выражается более чем в 25 %
снижении требований к памяти по сравнению с классическими ARM процессорами.
Сравнительные графики объема кода в различных областях применения приведены на
следующем рисунке:
Сравнение
ARM7DTMI и Cortex-M3
В режиме Thumb-2
меньшие коды операций обладают меньшей функциональностью. Например, только
ветвления могут быть условными, а многие коды операций имеют ограничение на доступ
к половине главных регистров процессора. Более короткие коды операций в целом
дают большую плотность кода, хотя некоторые операции требуют дополнительных
команд. В ситуациях, когда порт памяти или ширина шины ограничены 32 битами,
более короткие коды операций режима Thumb-2 становятся гораздо производительнее
по сравнению с обычным 32-битным ARM кодом, так как меньший программный код
приходится загружать в процессор при ограниченной пропускной способности
памяти.
Высокая
конкуренция на рынке Cortex-процессоров
Поскольку
широкому кругу разработчиков, ввиду специфики использования, будут интересны
только 3 последних ядра, мы остановим свое внимание только на них (Cortex-M0,
Cortex-M3 и Cortex-M4).
Особенности
архитектуры (на примере Cortex-M3)
Микроконтроллер
(МK) на базе ар- хитектуры Cortex-M3 в своей основе имеет иерархическую
структуру. Она состоит из ядра CM3Core с развитой периферией, включающей в себя
механизмы управления прерываниями, защиты памяти, внутрисхемной отладки и
другие. Такой набор обладает прекрасной конфигурируемостью, что позволяет
применять этот процессор для решения широкого спектра задач и наиболее полно
отвечать требованиям, которые к нему предъявлются. Ядро Cortex-M3 и
интегрированные в него компоненты созданы с учетом требований к минимизации
необходимого объема памяти и потребления энергии:
Блок-схема ядра
Cortex-M3 Блок-схема ядра Cortex-M3
Ядро Cortex-M3
базируется на гарвардской архитектуре и имеет раздельные шины для команд и
данных в отличие от стандартных ARM процессоров, использующих фон-неймановскую
архитектуру и совмещенные шину и память как для данных, так и для команд.
Поскольку процессоры Cortex считывают данные и команды одновременно, это
позволяет производить некоторые операции параллельно и таким образом существенно
повысить производительность системы. Встроенный в ядро конвейер имеет три
стадии работы: выборка команды, декодирование команды и выполнение команды. Для
случаев, когда в конвейере декодируется команда перехода, на стадии
декодирования также производится выборка инструкции предсказания перехода, что
приводит к ускорению выполнения программы.
Процессор
выбирает команду назначения перехода во время собственно стадии декодирования.
Позже, на стадии выполнения команд, переход разрешается, и к этому моменту уже
известно, какая команда будет следующей. В случае, если переход не
производится, следующая последовательность команд и так уже доступна. Если же
переход производится, то команда перехода становится доступной в то-же время,
когда собственно переход и разрешается, таким образом сводя время простоя к
единственному такту.
Ядро процессора
Cortex содержит декодер для традиционной системы команд Thumb и для новой
системы Thumb-2, усовершенствованное АЛУ с поддержкой аппаратного умножения и
деления, управляющей логикой и интерфейсами к другим компонентам системы.
Сortex-M3 представляет собой 32-разрядный процессор с 32-разрядными шиной
данных, банком регистров и интерфейсом с памятью. Он содержит 13 регистров
общего назначения, два указателя стека, регистр связей, счетчик команд, регистр
статуса и множество специальных регистров.
Процессор на базе
архитектуры Cortex-M3 поддерживает два режима работы: Thread и Handler, а также
два уровня доступа к коду (привилегированный и непривилегированный).
Непривилегированный уровень доступа ограничивает или полностью запрещает доступ
и использование некоторых ресурсов типа определенных команд или областей
памяти. Режим Thread является стандартным режимом работы и поддерживает
распределение уровней доступа, тогда как режим Handler включается лишь в
некоторых случаях и весь код получает привилегированный уровень доступа.
Важным
преимуществом Cortex-М3 можно считать систему команд Thumb-2, которая позволяет
достигнуть на 70% большей производительности на мегагерц, чем классические ARM
процессоры на базе ARM7TDMI-S, использующие классический набор команд Thumb, и
на 35 % более производительности, чем те же процессоры, выполняющие базовый
набор команд ARM (по данным теста Drystone). Как говорилось ранее, Cortex-М3
содержит декодер команд как для традиционной Thumb, так и для новой системы
команд Thumb-2. Система команд Thumb-2 включает в себя команды, которые
позволяют упростить и уменьшить объем кода для многих приложений. Так, команды
BFA и BFC являются командами для работы с битовыми полями, которые часто
используются при решении задач обработки, например, сетевых пакетов данных в
телекоммуникационных приложениях. Команды SBFX и UBFX облегчают работу с битами
внутри регистров, что очень полезно в автомобильных приложениях. Команда RBIT
переставляет биты в слове и, вследствие этого, часто используется при
реализации DSP-алгоритмов, таких, как преобразование Фурье. Команды табличных
переходов TBB и TBH позволяют добиться баланса между компактностью кода и
высокой производительностью. В систему команд Thumb-2 также входит новая
реализация конструкции if/then, которая предсказывает последовательность
исполнения вплоть до четырех последующих команд. Поскольку система команд
Thumb-2 является развитием 16-разрядной системы команд Thumb, процессоры с
архитектурой Cortex-М3 могут выполнять программы, написанные с использованием
системы команд Thumb для более ранних версий процессоров, и, таким образом,
процессоры Cortex-М3 являются совместимыми по коду с более ранними версиями
процессоров серии ARM7.
Полный набор
Сortex-M от компании NXP
Наиболее широко
на сегодняшний день микроконтроллеры семейства Сortex представлены у компании
NXP Semiconductors, потому как только NXP поддерживает всю линейку Сortex-M
(M0, M3, и M4). Четкая стратегия компании направлена на максимальное
представление своих процессорных продуктов именно семейством Cortex-M и
постепенный уход от классической архитектуры 8051, а также от ARM7 и ARM9. И
тому имеются веские причины. Прежде всего это универсальность такой платформы,
которая позволяет реализовать широкий спектр задач от "low-cost" до
"hi-end" решений благодаря одной и той же основе набора команд:
Система команд
микроконтроллеров Cortex-M Система команд микроконтроллеров Cortex-M
К примеру,
разработчик, освоивший для проектирования изделия с низкой себестоимостью
систему команд и архитектуру Cortex-M0, может с гораздо большей легкостью
приступать к более сложным задачам, требующим МК уровня Cortex-M3, и
"hi-end" приложениям, требующим Cortex-M4, чем инженер, выбирающий
себе каждый раз новую, более подходящую платформу. Освоение Cortex-M от
компании NXP позволит инженеру не только повысить свой уровень знаний, но и
существенно улучшить профессиональную пригодность, т. к. платформа может быть
применена в очень широком спектре задач.
Это очень удобно
потому что излишняя универсальность в некоторых случаях может быть помехой.
Рассмотрим каждого из представителей семейства МК Cortex-M от NXP отдельно
Сortex-M0. По
плечу любое «low-cost»
решение
Если вы решились
на освоение Cortex-M0 для организации серийного изделия (пожарная сигнализация,
счет чики и т. п.) с высоким требованиями к себестоимости, то лучше начать это
с освоения LPC1100(L) и LPC1200 (для большего объема кода программы).
Встроенный RC-генератор LPC11(2)00(L) может работать на частоте до 12 МГц с
точностью 1 % и соответственно можно сэкономить на кварцевом генераторе для
очень многих приложений. Работая от внешего кварцевого резонатора LPC11(2)00(L)
можно разогнать до 50 МГц, что делает его лидером по производительности в своем
классе.
Архитектура
LPC1100(L)Кроме этого LPC11(2)00 (L) имеет следующую начинку:
память:
Flash до 32 кБт для LPC1100 и до 128
кБт для LPC1200;
ОЗУ до 8 кБт;
периферия:
UART, 2xSSP/SPI, I2C;
4
основных счетчика/таймера с ШИМ;
10-битный 8-канальный АЦП;
DMA- контролер (для LPC1200).
Важно также
отметить очень низкое энергопотребление в динамическом режиме (130 мкА/Мгц), в
спящем режиме (2 мкА) и в режиме "глубокого понижения потребления"
(всего 220 нА). Последний режим был-бы крайне необходим для построения
счетчиков тепла и воды. Этого удалось достичь благодаря как 180-нм технологии
производства, так и оптимизации режимов работы:
управляемый API интерфейс;
оптимизация внутренних настроек для работы
с Flash;
динамическое управление током в реальном
времени.
Последующие
представители Cortex-M0 имеют более узкую функциональную направленность.
Серия LPC11C00
предназначена для автомобильной электроники, так как имеет встроенный
СAN-контроллер (CAN 2.0 B), однако среди других CAN-контроллеров она выделяется
следующими особенностями:
наличием встроенного СAN-трансивера TJF1051
(для LPC11C22FBD48/301 и LPC11C22FBD48/301);
наличием встроенных CANopen драйверов;
подходят как для 12- так и 24-В систем (± 58 В толерантный
трансивер CAN);
энергопотребление составляет не более 150
мкА/МГц;
до 13 выводов для внешних прерываний;
36 5-вольтовых толерантных выводов с
нагрузочной способностью до 20 мА каждый.
Ей присущи также
другие характеристики, свойственные СAN-контроллерам:
высокая ESD защита (до 8 кВ (IEC61000-4-2)
на трансиверы и до 6.5 кВ на микроконтроллер);
совместимость со стандартами ISO11898-2 и
ISO11898-5;
низкое электромагнитное излучение (EME) и
высокая стойкость к электромагнитным помехам.
Серия LPC11U00
может по праву стать доминирующим МК для "low-cost" USB-решений не
только благодаря самой низкой цене среди подобных МК (по обещанию NXP цена на
эти МК будет стартовать от 0.99 $), но и размерам - всего 4.5×4.5 мм для корпуса
TFBGA48. Это позволяет сократить необходимую площадь печатной платы и уменьшить
ее себестоимость, что так важно для серийных изделий. Но и это еще не все:
каждый LPC11U00 имеет интерфейс смарт-карты, что делает его незаменимым для
различных устройств доступа (банковский WEB-клиент и т. п.):
Архитектура
LPC11U00 Архитектура LPC11U00
Для того, чтобы
начать новую разработку на LPC11U00, компания NXP предлагает полный набор
необходимых для этого средств: оценочную плату и бесплатные сертифицированные
USB драйверы для HID, MSD и CDC.
Серию LPC11A00
можно выделить, благодаря полноценному 10-битному ЦАП, аналоговому компаратору,
встроенному датчику температуры и расширенному до 4 кБайт объему встроенной
EEPROM. Она идеально подходит для работы с аналоговыми датчиками, данные с
которых нужно не только обрабатывать, корректируя их в зависимости от
температуры, но и хранить для дальнейшей обработки.
Возможности
технологии, на которой построены Сortex-M0, компания NXP продемонстрировала на
примере LPC1102. Этот МК, поражающий своей миниатюрностью (всего 2×2 мм!), имеет 32
кБайт Flash и тот же набор памяти и периферии, что и другие представители
Сortex-M0. Благодаря таким крошечным размерам МК теперь можно, например, встраивать
внутрь датчиков, получая на выходе уже обработанные данные по одному из
стандартных интерфейсов.
Сortex-M3. Легкий
переход от ARM-7
В отличии от M0
Cortex-M3 можно разогнать до 150 МГц (120 МГц для LPC17хх) и строить на них
приложения для ETHERNET и USB-Host систем, а также устройства с графическими
LCD:
Каждый
представитель семейства Cortex-M3 от NXP снабжен ЦАП и уже не 10-, а 12-битным
АЦП. Поскольку рамки статьи не позволяют подробно описать достоинства
архитектуры каждой из серий Cortex-M3, мы остановимся только на отличительных
особенностях.
Серии LPC176x,
LPC175x, хорошо подходящие для Ethernet и USB-Host систем, имеют уникальную
широкополосную матрицу связей между MAC-ядром и USB-Host периферией и гибкую
организацию ОЗУ, что обеспечивает беспрецедентную связь между этими двумя
популярными интерфейсами внутри МК. Серии LPC177x, LPC178x и LPC178х - первые
Cortex-M3, имеющие встроенный LCD-контроллер, но не это делает их особенными.
Оба имеют уникальную периферию связи с внешней SPI-Flash - SPIFI.
Как известно,
цена МК сильно зависит от объема встроенной Flash-памяти, но внешняя SPI-Flash
по сравнению с тем же объемом внутренней Flash МК намного дешевле.
SPIFI
обеспечивает мост между внутренней и внешней памятью, делая внешнюю память
частью внутренней. Это очень удобно для хранения многоязычных настроек или
большого объема картинок (данных). Рассмотрим преимущества такого интерфейса на
примере задачи, связанной с хранением кадров.
Устройства со
сложным интерфейсом пользователя требуют хранения большого количества рисунков,
отображаемых потом на LCD. Картинки могут быть записаны во внешнюю Flash, но
обычно они записываются во внутреннее ОЗУ перед отправкой на LCD-контроллер
из-за требования высокой скорости обновления графических данных, что было
невозможно сделать из внешней Flash. Основной проблемой при таком подходе
является необходимость в большом объеме внутреннего ОЗУ. Теперь, благодаря
высокоскоростному интерфейсу SPIFI, данные могут быть отправлены прямо на LCD
контроллер, используя DMA и освободив при этом встроенное ОЗУ для других задач.
Однако семейство
LPC1800 можно выделить не только из-за наличия SPIFI. Эта серия имеет еще и
таймер с конфигурируемыми состояниями (SCT). SCT - это таймер, соединенный с
гибко управляемым блоком аппарата состояний (state machine). Он позволяет
обеспечить широкое разнообразие счетчиков, тайминга, внешней модуляции и
внутренних накопительных операций и имеет следующие ключевые особенности:
8 входов;
16 выходов;
16 регистров хранения;
16 возможных событий;
32 возможных состояния.
Яркий пример
использования системы SCT - уличный светофор. Перекресток с пешеходным
переходом, имеющий кнопку запроса остановки автомобильного движения, имеет
четыре возможных состояния с известными условиями перехода, которые легко можно
описать аппаратом состояний. Сделав соответствующие установки регистров и
отладив ее симулятором, можно считать систему управления перекрестком готовой к
испытаниям. При этом абсолютно нет необходимости во вмешательстве процессорного
ядра, можно полностью положиться на SCT.
Cortex-M4. Двухъядерный цифровой сигнальный
контроллер
Архитектура
LPC4300Сortex-M4 от NXP можно назвать пионером в многоядерной обработке для
микроконтроллерных и DSP приложений, поскольку кроме ядра M4 представитель
этого семейства (LPC4300) имеет дополнительно ядро Сortex-M0, которое можно
использовать для контроля за периферией в реальном масштабе времени, не
прерывая основную обработку. Примером того, где можно использовать такое
удачное сочетание, можно считать построение аудиосистемы, где Сortex-M0
занимается приемом и подготовкой данных для дальнейшей цифровой обработки в
Сortex-M4, который обладает полным набором необходимых для этого средств:
внутренняя память адаптирована под
использование в DSС-приложениях;
добавлены опции, присущие DSP процессору:
аппаратное деление (от 2 до 12 циклов);
16 32-битных MAC за один цикл;
два 16-битных MAC за один цикл;
8-, 16-битная SIMD арифметика.
добавлен блок, выполняющий операции с
плавающей точкой;
возможность лучше справляться с алгоритмами
обработки сигнала в реальном времени:
цифровая фильтрация (КИХ, БИХ);
спектральная обработка сигнала (FFT).
Наличие
дополнительного ядра Cortex-M0 очень удобно во многих случаях, однако это не
все, что сделала NXP для разгрузки основного процессора. Большим прорывом в
этом отношении можно считать адаптивные, конфигурируемые пользователем SGPIO с
последовательными интерфейсами. Большинство периферийных устройств на рынке
используют нестандартные последовательные интерфейсы (LCD драйверы, аудиокодеки
и т. п.). В МК, не имеющих SGPIO, разработчику необходимо задействовать
интенсивные процессорные циклы для получения требуемой последовательности,
сократив полезную пропускную способность канала. Процессор в это время
становиться загруженным на 100 %. Конфигурируемые SGPIO генерируют
подготовленные для обработки пакеты всего несколькими записями в регистр.
Прерывание формируется лишь тогда, когда данные протактированы - и ЦП при этом
не блокирован. Используя SGPIO, можно организовать мнимый стандартный
интерфейс, такой как SPI, I2C, I2S и т. д.
Стоит также
отметить совместимость по выводам большинства представителей Cortex-M3 c
LPC4300, что обеспечит легкую доработку изделия на базе M3 при переходе на
LPC4300.
Легко начать
Безусловно,
освоение новой архитектуры займет немало времени и усилий, но при этом
разработчик явно повысит свою профессиональную пригодность, потому как освоет
универсальную архитектуру, применимую как в low-cost, так и в hi-end решениях.
В освоении
Cortex-M весомо поможет набор программно-аппаратных средств, предоставляемых
компанией NXP. Среди аппаратных средств стоит отметить отладку на базе
Cortex-M0 - LPCXpresso, стоимость которой составляет около 30 $. Для доступа к
портам установленного МК на ней применены сквозные платные контакты в полном
объеме, что избавляет от необходимости подыскивать ответный разъем.
В
качестве программной поддержки доступна коллекция из 61 алгоритма, которые
написаны на языке С и адаптированы под применение в МК Cortex-M. А для
соответствия стандарту CMSIS (стандарт программного интерфейса
микроконтроллеров Cortex) доступны С-компиляторы от лидеров этого рынка —
компаний IAR, Keil и GCC.
Посетители также читают: