Переход с 8051-архитектуры на 32-разрядные процессоры


PDF версия

В статье рассматриваются вопросы перехода с 8051-процессоров на 32-разрядные процессоры ARM семейства Cortex-M. Обсуждаются ограничения 8051-архитектуры и преимущества процессоров Cortex-M3 и Cortex-M0 при решении различных задач во встраиваемых приложениях. Освещены ключевые особенности перевода приложения на 32-разрядные процессоры, которые обеспечивают более высокую производительность и надежность, а также улучшают энергосбережение системы. Статья представляет собой перевод [1].

Сегодня большинство применяемых микроконтроллеров (МК) основано на 8-разрядной архитектуре процессоров. Доступны также 16-разрядные МК, но их доля на рынке остается небольшой по сравнению с 8-разрядными МК. Если приложение слишком сложное для 8-разрядных устройств, многие пользователи переходят сразу на 32-разрядные МК, а не на 16-разрядные, так как разница в цене невелика, а возможностей для выбора периферии, инструментов разработки, а также поставщиков чипов больше.

Наиболее широко используемая 8-разрядная архитектура — 8051. Эта архитектура является популярной среди разработчиков, так как ее предлагает большинство поставщиков, она проста в использовании, имеется множество доступных программных средств разработки.

Почему же многие специалисты стали переходить с 8051-процессоров на 32-разрядные процессоры, такие как ARM Cortex-M3 и Cortex-M0? 8051-процессоры были разработаны компанией Intel в 1980 г. Сегодня архитектура MCS51 достигла предела своих возможностей. Не только работа с многоразрядными данными (16- или 32-битными) стала слишком медленной из-за побайтного способа их обработки, но также возник ряд физических ограничений, которые осложняют жизнь пользователям 8051-архитектуры. Например, размер программы ограничен 64 Кбайт. Имеются кристаллы на базе 8051-процессора, в которых можно достичь большей памяти программ с помощью страничной организации команд или хранения их вне кристалла, но разбиение памяти на страницы имеет много недостатков:

– растут непроизводительные затраты в том, что касается размера программного кода и времени выполнения команд;

– бесполезно расходуется память, так как банки памяти используются не полностью;

– необходим специальный код надстройки для доступа данных из других программ, и этот код использует пространство стековой памяти, которая весьма ограничена в 8051-процессоре;

– нет стандартизированного переключения банков памяти, что может вызывать проблемы с компиляторами, отладчиками, а также делает сложным переход на другие 8051-продукты.

– если разбиение памяти на страницы выполняется извне, это уменьшает число доступных линий ввода/вывода, а также увеличивает стоимость системы и, кроме того, снижает надежность из-за дополнительных соединений на печатной плате.

Подобно памяти программ, пространство внешней памяти данных ограничено размером 64 Кбайт. И в этом случае некоторые поставщики 8051-процессоров обеспечивают возможность страничной организации на кристалле, но они имеют те же недостатки что и разбиение памяти на страницы для программного кода.

Более важным ограничением является пространство внутренней памя-
ти. Стек 8051-поцессора может находиться только во внутренней памяти, которая ограничена размером 256 байт. Первые 32 байта используются для рабочих регистров (4 банка регистров с R0 по R7) и некоторая часть внутренней памяти может быть использована для переменных данных (например, при использовании памяти с побитовой адресацией для булевых данных она может находиться во внутренней RAM). В результате максимальный размер стековой памяти ограничивается. Существуют также ограничения на максимальное число регистров для выполнения специальных функций (SFR), а также количество указателей данных. Многие 8051-процессоры содержат указатели множественных данных (DPTR), но модель программирования для использования DPTR не стандартизована, что усложняет портирование кода приложения на различные кристаллы 8051.

ARM потратила значительные усилия на разработку новой процессорной архитектуры, которая специально предназначена для глубоко встраиваемых приложений. Первым процессором на базе архитектуры ARMv7-M стал Cortex-M3. Он был разработан с расчетом на достижение высокой производительности, многофункциональности, надежности и простоты в использовании. Затем был выпущен процессор Cortex-M0, который построен на базе архитектуры ARMv6-M. Мы попробуем объяснить, почему процессоры Cortex-M3 и Cortex-M0 являются естественным выбором для тех, кому нужна дальнейшая модернизация системы на базе 8051-процессора.

Краткий обзор процессоров Cortex-M3 и Cortex-M0

По регистровому банку модель программирования процессоров Cortex-M3 и Cortex-M0 почти идентична процессору ARM7TDMI. Они имеют регистры с R0 по R15, причем R13 — это указатель стека, R14 — регистр связи, а R15 — указатель команд. Однако в этих процессорах нет тех же режимов, что и в процессоре ARM7TDMI. Они могут работать только в режимах thread (потоковый режим) и handler (режим обработчика), когда запущен обработчик сбоев. Для процессора Cortex-M3 режим thread может работать либо на привилегированном уровне, либо на уровне пользовательского доступа. В отличие от процессора ARM7TDMI, в этих процессорах единственным совместно работающим регистром является R13. Второй R13 обычно используется только при выполнении кода пользователя, так что стек пользователя может быть отделен от стека ядра.

Сравнение моделей программирования процессоров 8051 и CortexM3/M0 представлено на рисунке 1.

Рис. 1. Сравнение модели программирования процессоров 8051 и CortexM3/M0

Для пользователей процессора 8051 модель программирования процессоров Cortex-M3 и Cortex-M0 обеспечивает более удобную работу с регистрами, так как регистры с R0 по R12 могут быть использованы для команд общего назначения, в то время как в 8051 для этого используются только регистры R0—R7 и регистр-аккумулятор. Так как все эти регистры являются 32-разрядными, обработка больших данных намного проще. В 8051-процессоре обработка данных целочисленного типа требует более одного регистра. И наибольшим преимуществом процессоров Cortex-M3 и Cortex-M0 является то, что любой регистр может быть использован как указатель данных для доступа к памяти. В то же время в 8051-процессоре доступ к внешней памяти обычно осуществляется с помощью DPTR или более сложным путем с помощью сочетания выходного порта 2 и регистра, чтобы сгенерировать 16-разрядный внешний адрес.

Те, кто использовал процессор ARM7TDMI, наверняка заметили, что в модели программирования процессоров Cortex-M3 и Cortex-M0 разобраться намного проще и установка процессоров не так сложна, так как в них нет такого большого числа режимов работы, как в ARM7TDMI. Однако, в отличие от процессора ARM7TDMI, как Cortex-M3, так и Cortex-M0 имеют предустановленную схему распределения памяти со встроенным контроллером прерываний (который называется NVIC) и компонентами отладки, находящимися в постоянной памяти (см. рис. 2). Остальная часть 4-Гбайт памяти разделена на несколько областей для различных целей. Заданная схема распределения памяти позволяет оптимизировать процессор на максимальную производительность, хотя реальное использование памяти может быть другим, что обеспечивает высокую гибкость при настройке процессора к требованиям конкретного приложения. Организация памяти делает портирование приложений более простым, чем во многих других процессорах, представленных на рынке. Поскольку NVIC является частью процессорного ядра, установка прерываний и функции ядра не нуждается в изменении при портировании программного обеспечения с процессоров Cortex-M3 и Cortex-M0 на другие устройства.

Рис. 2. Предварительно установленная схема распределения памяти в процессорах Cortex-M3 и Cortex-M0

Процессор Cortex-M3 поддерживает технологию Thumb-2. Она включает в себя команды Thumb, используемые в процессоре ARM7TDMI, а также многие новые команды для цифровой обработки сигнала (DSP) и побитовой обработки. Это упрощает пользователям процессора ARM7TDMI перевод старого программного кода на процессоры Cortex-M3, а также позволяет разрабатывать высокопроизводительные приложения. Процессор Cortex-M0 поддерживает 16-разрядные команды Thumb, а также несколько 32-разрядных команд Thumb-2.

Процессор Cortex-M3 также содержит опциональный блок защиты памяти (Memory Protection Unit — MPU). Он позволяет устанавливать правила доступа для предотвращения нарушения целостности данных в ядре ОС или других процессах, когда пользовательский процесс нарушается. Кроме того, MPU можно также использовать для того, чтобы делать определенные области памяти доступными только для чтения или заблокировать их в зависимости от требований приложения.

Одним из крупных преимуществ проектирования системы на базе архитектуры ARM является то, что один набор инструментов разработки может быть использован на различных ARM-процессорах, в том числе отладочных средствах. Как Cortex-M3, так и Cortex-M0 включают в себя различные функции отладки, в том числе контрольные точки останова и точки наблюдения, а на процессоре Cortex-M3 функции трассировки команд и данных, а также некоторые базовые функции профилирования. Так как большинство этих функций являются общими для всех МК на базе процессоров Cortex-M3 и Cortex-M0, то одни и те же инструменты отладки могут быть использованы для различных кристаллов.

Особенности перехода на 32-разрядную архитектуру

Некоторые инженеры испытывают беспокойство и сомнения по поводу перехода на процессоры Cortex-M3 и Cortex-M0. Будучи инженером, я полностью понимаю желание досконально выяснить все вопросы, связанные с таким переходом. В данном разделе мы обсудим наиболее общие вопросы, которые могут возникнуть у специалистов по встраиваемым системам.

Производительность

Производительность процессоров Cortex-M3 и Cortex-M0 более чем в 10 раз превышает производительность многих 8051-процессоров. На рисунке 3 сравнивается производительность процессоров 8051, Cortex-M0 и Cortex-M3.

Рис. 3. Сравнение производительности процессоров 8051, Cortex-M0 и Cortex-M3

Если взглянуть на большинство программных кодов для встраиваемых приложений, то часто в них используются данные целочисленного типа. В компиляторах C для 8051-архитектуры или большинства 8-разрядных МК данные целочисленного типа имеют разрядность 16 бит, поэтому каждая операция по обработке целых чисел требует несколько команд. В то же время в 32-разрядных процессорах число команд снижено всего до одной, и ее выполнение занимает всего лишь один тактовый цикл. Поэтому в 8-разрядном МК даже в простом программном цикле со счетчиком управления циклом в виде целого числа потребуется намного больше команд, чем в 32-разрядном процессоре.

Другим фактором, который снижает производительность 8-разрядных МК, является шинный интерфейс. Так как многие команды являются 2- или 3-байтовыми, то для вызова команды требуется множество рабочих циклов. В результате скорость выполнения команды снижается.

Быстродействие

Возможно, кто-то скажет: «8051-процессор, который я использую, способен работать на частоте до 100 МГц! Разве процессоры Cortex-M3 и Cortex-M0 могут обойти их по быстродействию?» Ответ — да, могут. Как Cortex-M3, так и Cortex-M0 способны работать на частоте более 100 МГц при использовании обычного 0,18-мкм технологического процесса и на значительно более высокой частоте при изготовлении с применением норм последнего поколения. Однако максимальная частота обычно ограничивается флэш-памятью. Поскольку размер флэш-памяти растет, максимальная частота падает. Современные МК на базе процессора Cortex-M3 уже достигли 100 МГц, и регулярно появляются новые версии процессоров. Один из поставщиков МК продемонстрировал 120-МГц устройство на базе Cortex-M3. Другой поставщик МК для продуктов на базе процессора Cortex-M0 также представил 100-МГц прототип устройства.

Не забывайте о том, что при одинаковой тактовой частоте процессоры Cortex-M3 и Cortex-M0 могут работать намного быстрее, чем 8051, так как требуется меньше команд для одной и той же операции (как показано в предыдущих примерах). Поэтому даже более медленные МК на базе процессоров Cortex-M3 или Cortex-M0 могут легко опередить по системной производительности процессор 8051, работающий на частоте 100 МГц.

Размер программы

Некоторые специалисты беспокоятся о том, что при переходе на процессоры Cortex-M3 или Cortex-M0 размер программ может значительно увеличиться. На самом деле, если в вашей программе требуется обработка данных, длина которых больше 8 бит, переход на Cortex-M3 существенно упрощает код приложения (и снижает вероятность появления в них ошибок!).

Кроме того, множество команд 8051 занимают 2 или 3 байта, в то время как команды Thumb-2 являются намного более мощными, чем команды 8051. Например, если нужно выполнить передачу данных в область памяти, то программа, выполняющая эту задачу на 8051-процессоре, займет 18 байт, а на Cortex-M3/Cortex-M0 — всего 14 байт.

Вы удивлены? С помощью процессора Cortex-M3 одно и то же задание можно выполнить, используя меньший объем программного кода и меньшее число команд (а также за более быстрое время их выполнения). В таблице 1 сравнивается программный код перемещения трёх регистров в стек, извлечения их и выдачи результата для процессоров 8051 и Cortex-M3.

Таблица 1. Пример сравнения кода доступа в стековую память для процессоров 8051 и Cortex-M3

8051

Cortex-M3/Cortex-M0

PUSH

ACC

; 2 байта

PUSH

{R0-R2, LR}

; 2 байта

PUSH

R0

; 2 байта

POP

{R0-R2, PC}

; 2 байта

PUSH

R1

; 2 байта

POP

R1

; 2 байта

POP

R0

; 2 байта

POP

ACC

; 2 байта

RET

; 1 байт

Всего = 13 байт для 8051

Всего = 4 байта для Cortex-M3/ Cortex-M0

Команды перемещения в стек и извлечения из стека для процессоров Cortex-M3 или Cortex-M0 могут обрабатывать сразу множество регистров, а также использоваться для возврата из функции во время выполнения команды POP. Они могут серьезно сэкономить кодовое пространство для стековых операций и возврата из функции. В процессорах Cortex-M3 и Cortex-M0 имеется большее число регистров, что позволяет снизить загрузку стека при хранении регистров промежуточных данных.

Во многих случаях размер программы сокращается на 50% при переходе с МК на базе 8051-процессора на МК на базе процессоров Cortex-M3 или Cortex-M0.

Меньшая потребляемая мощность

Переход на процессоры Cortex-M3 или Cortex-M0 уменьшит энергопотребление. В современных сложных МК с развитой периферией и большой памятью энергопотребление памяти и периферии может быть значительно выше, чем у процессора. Кроме того, процессор Cortex-M3 включает в себя ряд функций энергосбережения, в том числе управление тактовым сигналом и дежурные режимы питания. Например, МК STM32 компании ST потребляет всего лишь 2 мкА в дежурном режиме. Это меньше, чем энергопотребление многих современных устройств на базе 8051-процессоров.

Недавно представленный процессор Cortex-M0 обладает еще большими возможностями по снижению энергопотребления. В минимальной конфигурации процессор Cortex-M0 содержит всего 12 тыс. вентилей и потребляет лишь 12 мкВт/МГц.

Высокая производительность процессоров Cortex-M3 и Cortex-M0 также позволяет переводить систему в дежурный режим на более длительный период времени, так как время выполнения задания существенно сокращается. Процессоры Cortex-M3 и Cortex-M0 дополнительно снижают энергопотребление системы за счет уменьшения длительности активных циклов (см. рис. 4).

Рис. 4. Процессоры Cortex-M3 и Cortex-M0 обеспечивают значительно меньшую среднюю потребляемую мощность при одинаковой производительности по сравнению с МК на базе 8051 и другими 8- и 16-разрядными МК

Кроме того, так как поддержка дежурного режима является неотъемлемой частью архитектуры, программный код поддержки дежурного режима можно легко портировать на различные устройства на базе Cortex-M3 и Cortex-M0.

Простота программирования

С процессорами Cortex-M3 и Cortex-M0 удобно работать на C. В простых случаях построение полного приложения требует только таблицы векторов прерываний и кода на C. Таблица векторов прерываний может быть также закодирована на C. В некоторых случаях разработчики охотно используют ассемблер, например, при проектировании ядра ОС и кода вызова супервизора для передачи параметров.

Код ассемблера для процессоров Cortex-M3 и Cortex-M0 также весьма прост. Так как Thumb-код использовался в процессоре ARM7TDMI в течение многих лет, сведения о Thumb-программировании и примеры кода можно найти во многих источниках.

Надежность

Функции обработки сбоев в процессорах Cortex-M3 и Cortex-M0 улучшают надежность системы. В процессоре Cortex-M3 имеются два уровня защиты системы от полного ее выхода из строя.

Первый уровень защиты определяется тремя состояниями ошибки системы, а именно, неопределенными командами, сбоями шины и случайными попытками перехода к ARM-коду (процессор Cortex-M3 поддерживает только Thumb-код). Если во время обработки этих состояний ошибки обработчик событий находит новые сбойные события, запускается обработчик устойчивых сбоев (см. рис. 5).

Рис. 5. Два уровня обработчиков сбоев, которые предохраняют от системных ошибок

Процессор Cortex-M0 имеет только один уровень состояния обработки сбоев (устойчивые сбои).

Когда происходит нарушение работы системы, обработчик сбоев пытается разрешить проблему или если система использует ОС, он прерывает задание. Во время разработки программы используют набор регистров состояния сбоя внутри процессора Cortex-M3, которые позволяют идентифицировать источник проблемы. Если наступает какой-либо сбой в 8051-устройстве, то нет способов сообщить об этом системе, и результат может быть непредсказуемым. Возможность перегрузки процессора (если доступен сторожевой таймер) реализуется только с некоторой задержкой после выхода системы из строя и потому бесполезна.

Кроме того, в процессоре Cortex-M3 имеется опциональный блок защиты памяти (MPU), который позволяет снизить вероятность нарушения целостности данных в памяти. MPU широко используются в системах с ОС реального времени.

Для наиболее востребованных критически важных для безопасности приложений процессор Cortex-M3 также обеспечивает интерфейс связи с модулем-супервизором сбоев. Это позволяет создавать встраиваемые системы в соответствии со спецификацией SIL3 стандарта IEC61508 и использовать процессор Cortex-M3 в различных критически важных для безопасности приложениях, например, в автомобильных, медицинских и военных встраиваемых решениях.

Прерывания

По сравнению с 8051-процессорам, поддержка прерываний в процессорах Cortex-M3 и Cortex-M0 так же проста в использовании, но обеспечивает больше возможностей. Большинство устройств на базе процессора Cortex-M3 обеспечивает более 32-х прерываний и поддерживает 8…16 уровней приоритета, хотя в процессоре Cortex-M3 предусмотрена поддержка до 240 прерываний и до 256 уровней приоритета. Процессор Cortex-M0 поддерживает до 32-х прерываний и четырех программируемых уровней приоритета. И, в отличие от программ для ARM7TDMI, в процессорах Cortex-M3 и Cortex-M0 вложенное прерывание обрабатывается автоматически аппаратными средствами. Поэтому прерывание более высокого уровня может отменять прерывание более низкого уровня без сложного процесса установки. Как Cortex-M3, так и Cortex-M0 также обеспечивают немаскируемый вход прерывания. Это важно для многих критичных, с точки зрения безопасности, приложений.

В процессорах Cortex-M3 и Cortex-M0 обработчики прерываний могут быть закодированы в C как обычные функции C. Некоторые регистры перемещаются в стек автоматически, когда происходит обработка прерывания, и автоматически восстанавливаются, когда функция возвращает свое значение.

Подобно 8051-процессорам, прерывания в процессорах Cortex-M3 и Cortex-M0 являются векторными. Однако векторные адреса в 8051-процессорах фиксированы, и необходима команда передачи управления, чтобы в 8051-процессоре начал работу обработчик абсолютных прерываний. В процессорах Cortex-M3 и Cortex-M0 таблица векторов прерываний определяет начальные адреса программы обработки прерываний (Interrupt Service Routine — ISR), и ядро начинает исполняться с получаемых начальных адресов. Таблица векторов прерываний может располагаться в SRAM, поэтому после загрузки системы при необходимости вектор ошибки (exception vector) может быть изменен на другой адрес обработчика.

Сравнение таблиц векторов прерываний процессоров 8051 и Cortex-M3/Cortex-M0 приведено на рисунке 6.

Рис. 6. Сравнение таблиц векторов прерываний процессоров 8051 и Cortex-M3/Cortex-M0

Некоторые потребители могут использовать «форсированный» вариант устройства на 8051-процессоре, в которых задержка обработки прерывания составляет всего 5 или 6 тактовых циклов, в то время как в процессоре Cortex-M3 задержка обработки прерывания составляет 12, а в Cortex-M0 — 16 циклов. Поэтому можно подумать, что процессоры Cortex-M3 или Cortex-M0 работают медленнее. Однако анализ показывает, что даже при использовании «форсированных» 8051-процессоров общее время от момента прерывания до момента начала обработки прерывания примерно одинаково (см. табл. 2).

Таблица 2. Сравнение задержки обработки прерывания форсированного 8051-процессора и Cortex-M3

Форсированный 8051

Cortex-M3

Задержка обработки прерывания (5 или 6 циклов)

SJMP/LJMP от таблицы векторов прерываний к обработчику (3 или 4 цикла)

PUSH PSW (2 или 3 цикла)

ORL PSW, #00001000b (переключение банка регистров, 3 цикла)

Старт абсолютного кода обработчика

Задержка обработки прерывания (12 циклов)

Старт абсолютного кода обработчика

Всего от 13 до 16 циклов для ускоренного 8051-процессора

Всего 12 циклов Cortex-M3

12 циклов задержки обработки прерывания на процессоре Cortex-M3 включают время для передачи регистров в стек, вызова вектора ошибки и вызова команд программы обработки прерываний (ISR). Из сравнения, приведенного в таблице 2, видно, что задержка обработки прерывания для процессора Cortex-M3 меньше, чем для форсированного 8051-устройства, который является в среднем в 8 раз более быстродействующим, чем стандартный 8051-процессор. На других вариантах 8051-процессоров задержка может быть намного больше.

Битовые операции

Способность обрабатывать данные в битовых полях стало одним из уникальных свойств 8051-процессора, которое ценят многие программисты. На процессорах Cortex-M3 определены две области битовых полос (с побитовой адресацией), одна — в SRAM, другая — в области внешней памяти. Для того чтобы получить доступ к этому пространству с побитовой адресацией как к битовым данным, программа выбирает данные с помощью псевдонимов адресов битовых полос (bit band alias addresses). С помощью перераспределения памяти и аппаратного механизма «чтение-модификация-запись» процессор Cortex-M3 позволяет осуществлять чтение и запись индивидуальных бит в областях битовых полос. Так как битовые операции обрабатываются как обычная передача данных памяти, они могут быть реализованы в обычном коде C.

Другими возможностями обработки битовых данных на процессоре Cortex-M3 являются действующие команды над битовыми полями (bit field operation instructions). Процессор Cortex-M3 поддерживает ряд действующих команд над битовыми полями, в том числе BFI (вставка битового поля), BFC (очистка битового поля), UBFX/SBFX (извлечение битового поля без знака/со знаком) и RBIT (реверсирование бита). Например, в таблице 3 сравнивается код извлечения с пятого по третий бит данного и передача их в регистр.

Таблица 3. Сравнение размера кода для извлечения битовых полей

8051

Cortex-M3

ANL

A, #0x38

; 2 байта

UBFX

R0, R0, #3,#3

; 4 байта

RR

A

; 1 байт

RR

A

; 1 байт

RR

A

; 1 байт

Всего 5 байт для 8051

Всего 4 байта для Cortex-M3

Как можно заметить, новые команды для процессора Cortex-M3 значительно упрощают программный код, экономят пространство программной памяти и улучшают скорость исполнения кода.

Какие еще доступны возможности?

Процессор Cortex-M3 имеет много других мощных команд. Например, имеются команды для умножения 32-битовых данных (64-битовый результат), команды 32×32 умножения и аккумулирования, арифметические операции с насыщением, команды CLZ (Count Leading Zeros) и команды аппаратного деления. Эти команды позволяют выполнять на процессоре Cortex-M3 задачи цифровой обработки сигнала.

Процессор Cortex-M0 поддерживает однотактное умножение, но не поддерживает команды DSP и MAC. Однако в большинстве автономных встраиваемых приложений эти операции могут быть реализованы программно (в том числе используя библиотеки C), так как производительность Cortex-M0 намного выше, чем большинства 16- и 32-разрядных процессоров.

Команды доступа к памяти в процессорах Cortex-M3 и Cortex-M0 также имеют весьма мощные режимы адресации. Это делает обработку массивов данных намного более эффективной, чем у 8-разрядных процессоров. Процессор Cortex-M3 может также осуществлять доступ к фрагментированным данным (unaligned data), что не поддерживается в процессоре ARM7TDMI.

Для разработки сложных продуктов можно также использовать различные ОС реального времени, доступные для процессоров Cortex-M3 и Cortex-M0. Например, инструменты разработки KEIL предоставляют ядро RTX, которое позволяет разрабатывать многозадачные системы. Имеется также ряд других ОСРВ от различных поставщиков, осуществляющих поддержку процессоров Cortex-M3 и Cortex-M0 (см. табл. 4).

Таблица 4. Встраиваемые ОС, доступные для процессоров Cortex-M3 и Cortex-M0

Встраиваемая ОС

Поставщик

RTX Kernel

KEIL (www.keil.com)

FreeRTOS

FreeRTOS (www.freertos.org)

µC/OS-II

Micrium (www.micrium.com )

Thread-X

Express Logic (www.expresslogic.com)

eCos

eCosCentric (www.ecoscentric.com, http://ecos.sourceware.org)

embOS

Segger (www.segger.com)

Salvo

Pumpkin, Inc. (www.pumpkininc.com)

CMX-RTX, CMX-Tiny

CMX Systems (www.cmx.com )

NicheTask

Interniche Technologies, inc. (www.nichetask.com)

Nucleus Plus

Accelerated Technology (www.mentor.com )

µVelOSity

Green Hills Software (www.ghs.com)

PowerPac

IAR Systems (www.iar.com)

VxWorks

Wind River (www.windriver.com)

µCLinux

ARM (www.linux-arm.org/LinuxKernel/LinuxM3)

CircleOS

Raisonance (www.stm32circle.com)

С точки зрения возможностей отладки, использование процессора Cortex-M3 обеспечивает намного больше возможностей, чем применение 8-разрядного МК. В процессоре Cortex-M3 доступно 6 аппаратных точек прерывания, 4 точки наблюдения за данными и программные точки прерывания с помощью команд контрольного перехода. Процессор Cortex-M3 также поддерживает трассировку команд (опционально) и простую трассировку данных. Результат трассировки может быть зафиксирован с помощью анализатора порта трассировки или с помощью недорогого аппаратного трассировщика при использовании подсистемы Serial-Wire Viewer. Он также имеет ряд регистров для профилирования кода, помогающих оптимизировать программное обеспечение.

Процессор Cortex-M0 поддерживает до 4-х аппаратных точек прерывания, 2 точки наблюдения за данными и программные точки прерывания с помощью команд контрольного перехода. Он обеспечивает либо JTAG-, либо Serial Wire-интерфейс для связи с отладчиком.

Заключение

Переход от 8051-процессора на 32-разрядные устройства, такие как процессоры Cortex-M3 и Cortex-M0, не только разрешает множество проблем, связанных с ограничениями архитектуры MCS51, но, в то же время, обеспечивает более высокую производительность системы, ускоряет разработку программного обеспечения и улучшает свойства изделия, отрицательно не сказываясь на размере программ, энергопотреблении, надежности и стоимости решения.

Литература

1. Joseph Yiu. Migrating from 8-, 16- to 32-bit Microcontrollers.

 

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *