разработка и программирование электронных устройств

Стоит ли переходить с 8 — разрядных микроконтроллеров на 32 — битные ARM?

ARM в переводе с английского языка означает рука, но в этой статье речь пойдет не о строении человеческого тела, а об архитектуре микроконтроллеров, скрывающейся за аббревиатурой ARM.

Advanced RISC Machine (ARM) – название компании, которая занимается разработкой процессорных ядер, известных под общим названием ARM.

Компания ARM не имеет собственного полупроводникового производства , все разработки компаний продаются в виде лицензий для производства микроконтроллеров на основе ядра ARM сторонним компаниям, которые имеют свое полупроводниковое производство. Процессорные ядра предоставляются компаниям-заказчикам в виде VHDL описаний. Компания ARM также занимается разработкой компиляторов для своих процессорных ядер.

Разработки компании ARM оказались настолько удачными, что лицензии на производство микроконтроллеров на основе ядер ARM приобрело большое количество известных полупроводниковых компаний.

Нумерация версий ядра, принятая внутри компании ARM, отличается от используемых производителями названий. Рекомендую прочесть справочную информацию по архитектуре ARM в свободной энциклопедии Wikipedia.

Среди одной из первых линеек ARM, предназначенной для вытеснения 8-разрядных микроконтроллеров, необходимо отметить семейство ARM7TDMI. В последнее время было выпущено большое количество устройств на основе ядра ARM7TDMI. Каждый производитель снабжал свои микроконтроллеры собственной периферией, которая в одних случаях была сверхсовременной, а в других представляла морально устарелые модули, внедряемые в устройства то ли для совместимости с ранее написанным программным обеспечением, то ли для каких-то иных, известных только производителю, целей.

Можно констатировать лишь тот факт, что с приходом семейства ARM7TDMI переход с 8- разрядных микроконтроллеров на современные ARM7TDMI так и не состоялся.

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

Поскольку компания ARM не удручена производственными хлопотами, то производительность в разработке новых версий ядра ARM остается очень высокой. Кроме ядра ARM7TDMI было разработано и внедрено множество других, более производительных ядер. Например, семейство ARM9TDMI, ARM11 и другие, предназначенные для реализации иных, куда более сложных задач.

В микроконтроллеры на основе ядра ARM9TDMI возможно установить полноценную операционную систему. Разработка программ для таких микроконтроллеров требует знания архитектуры используемой операционной системы(ОС) (Linux, QNX, Windows CE ). Производители микроконтроллеров поддерживают и активно развивают внедрение ОС в свои модели микроконтроллеров.

Например, компания ATMEL для поддержки своего семейства AT91SAM9 создала отдельные проекты для Windows CE и Linux.

На замену дешевому ядру ARM7TDMI, предназначенному для вытеснения 8 -разрядных микроконтроллеров, пришло новое, еще более производительное и дешевое ядро Cortex-M3.

В ядре Cortex-M3 появился новый набор команд Thumb-2, - сочетание лучших черт системы команд ARM ( здесь имеется ввиду набор 32-разрядных инструкций ) и Thumb( 16-разрядные инструкции). Набор инструкций Thumb-2 сочетает высокую скорость выполнения с большой плотностью кода. Уменьшено количество операционных режимов ядра с семи у ARM7TDMI до двух у Cortex-M3. В ядро Cortex-M3 были включены наиболее важные периферийные устройства, что привело к высокой переносимости кода, написанного для микроконтроллеров от различных производителей с общим ядром Cortex-M3. Можно утверждать, что ядро Cortex-M3 является достаточно удачным результатом усовершенствования ядра ARM7TDMI, хотя они и принадлежат к двум разным семействам процессоров ARM .

Лицензию на производство микроконтроллеров с ядром Cortex-M3 у компании ARM приобрели такие известные компании как Atmel, NXP, ST Microelectronics, Texas Instruments, Toshiba, Energy Micro.

В результате сотрудничества компаний-производителей микроконтроллеров на основе ядра Cortex-M3 и производителей программных инструментальных средств для них был создан единый стандарт CMSIS – Cortex Microcontroller Software Interface Standart, что переводиться как стандарт интерфейса программного обеспечения микроконтроллеров Cortex.

Загрузить CMSIS можно с страницы разработчика ядра — компании ARM ( загрузить).

CMSIS поддерживается инструментальными средствами компаний Keil, IAR, CodeSourcery и другими. CMSIS облегчает работу с большим количеством периферийных модулей микроконтроллеров на основе ядра Cortex-M3, представляет собой исходный код на языке программирования С и содержит следующие уровни:

  1. Уровень доступа к периферии ядра, содержит определения имен, адресов и вспомогательных функций для обращения к регистрам и периферии ядра.

  2. Уровень доступа к периферии микроконтроллера, обеспечивает определения для всех периферийных модулей микроконтроллера от конкретного производителя.

  3. Функции доступа к периферии ( не обязательный уровень ). Обеспечивает дополнительные вспомогательные функции для периферии , объявления CMSIS для микроконтроллерных систем Cortex-M, а именно :

    а) Общие способы обращения к регистрам периферии и общие способы объявления векторов исключений.

    б) Имена регистров для периферии ядра и имена векторов исключений ядра.

    в) Интерфейс с операционными системами реального времени (RTOS), включающий отладочный канал.

В каталоге CMSIS есть примеры для различных компиляторов, в том числе и для GCC (Sourcery G++ Lite). Пример для Sourcery G++ Lite содержит скрипт компоновщика, стартовый файл на языке ассемблера. Микроконтроллеры Cortex-M3 спроектированы таким образом, что имеется возможность программирования только на языке С, не используя стартовый код на языке ассемблера. Использовать или нет в своих разработках CMSIS зависит только от Вас.

Для микроконтроллеров ARM7TDMI также существуют заголовочные файлы с описанием ядра и периферии , а также библиотеки на языке С для доступа к периферии. Эти библиотеки доступны для загрузки с сайтов производителей микроконтроллеров. Например, для микроконтроллеров фирмы Atmel семейства AT91SAM7 с сайта производителя можно загрузить примеры для наиболее популярных компиляторов Keil, IAR и GCC ( загрузить).

В целях поддержки разработки на основе семейства микроконтроллеров AT91SAM9 компания Atmel создала AT91Bootstrap, исходный код на С которого также можно загрузить с сайта производителя. Bootstrap выполняет начальную инициализацию периферии, предоставляет интерфейс доступа к периферии микроконтроллера и выполняет передачу управления загрузчику второго уровня, в качестве которого выступает U-boot, который выполняет загрузку ядра linux в микроконтроллер.

Второе, не менее популярное за AT91SAM7, семейство ARM7TDMI микроконтроллеров LPC2000 от компании NXP ( PHILIPS ) также предоставляет разработчикам заголовочные файлы и библиотеки, так что разрабатывать код «с нуля» нет необходимости. Для поддержки семейства LPC2000 создан проект lpc2000.com, который на данный момент поддерживает и другие семейства от NXP.

Необходимую документацию на микроконтроллеры можно загрузить с официального сайта NXP.

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

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

Leave a Reply

You must be logged in to post a comment.