RISC-микроконтроллеры с процессорным ядром ARM. Часть 1.

RISC-микроконтроллеры с процессорным ядром ARM. Часть 1.

А. Емелин, И. Шагурин

RISC-микроконтроллеры с процессорным ядром ARM. Часть 1

В последние годы вс╦ более широкую популярность приобретают высокопроизводительные 32-разрядные микроконтроллеры, использующие процессорное ядро ARM. Такие микроконтроллеры выпускаются многими известными производителями: Atmel, Samsung, Intel, Motorola, Cirrus Logic, Oki и другими. Они привлекают пользователей низким значением соотношения "цена/качество", что обусловило их широкое применение в разнообразных устройствах. Ряд этих изделий используется российскими производителями для создания современной электронной аппаратуры различного назначения, поэтому представляется полезным ознакомление широкого круга российских специалистов с этим перспективным классом микроконтроллеров.

Процессорное ядро ARM разработано фирмой Advanced RISC Maсhines (Великобритания), которая к настоящему времени предоставила потребителям целый ряд их модификаций, образующих ряд семейств. Эти семейства представлены на рис. 1 в порядке повышения их функциональных возможностей. Все ядра совместимы по системе команд "снизу-вверх", что позволяет использовать в последующих разработках программное обеспечение, созданное для предыдущих модификаций микроконтроллеров.

Рисунок 1. Процессорные ядра фирмы ARM

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

поведенческое описание на языке VHDL или Verilog (такие ядра называются синтезируемыми); электрическая схема процессорного ядра; топологическая макроячейка (описание топологии ядра для реализации в составе интегральной микросхемы).

Используя ту или иную форму представления, производители создают различные модели микроконтроллеров, дополняя процессорное ядро набором необходимых периферийных устройств. При изготовлении последних моделей микроконтроллеров используется современная микроэлектронная технология, обеспечивающая минимальные размеры 0,25, 0,18 или 0,13 мкм. При этом получены характеристики процессорных ядер, привед╦нные в табл. 1.

Таблица 1.Характеристики процессорных ядер ARM

Ядро MIPS/МГц Площадь, мм² Потребление, мВт/МГц Тактовая частота Кэш-память MMU 0,25 мкм ARM7TDMI 0,9 1,02 0,78 60√70     ARM7TDMI-S 0,9 1,20 1,10 60√70     0,18 мкм ARM7TDMI 0,9 0,59 0,30 80√110     ARM7TDMI-S 0,9 0,62 0,39 80√110     ARM7EJ-S 1,0 0,85 0,40 80√110     ARM940T 1,1 4,2 0,75 180√200 4K/4K MPU ARM946E-S 1,1 5,0 1,00 150√170 0┘1М MPU ARM966E-S 1,1 4,0 0,90 150√170     ARM720T 1,1 3,5 0,65 60√80 8K + ARM920T 1,1 6,0 0,25 220√270 16K/16K + ARM922T 1,1 3,5 0,25 220√270 180√200 + ARM926EJ-S 1,0 6,5 1,40 180√200 4К┘128К + 0,13 мкм ARM7TDMI 0,9 0,30 0,08 100√133     ARM7TDMI-S 0,9 0,32 0,11 100√133     ARM7EJ-S 1,0 0,42 0,12 100√133     ARM940T 1,1 2,1 0,20 220√250 4K/4K MPU ARM946E-S 1,1 2,5 0,25 180√210 0┘1М MPU ARM966E-S 1,1 2,0 0,22 180√210     ARM720T 0,9 1,8 0,20 100√120 8K + ARM920T 1,1 6,0 0,25 220√270 16K/16K + ARM922T 1,1 3,5 0,25 220√270 8K/8K + ARM926EJ-S 1,0 3,2 0,35 220√270 4К┘128К + ARM1020E 1,23 10,3 0,60 270√325 32K/32K + ARM1022E 1,23 6,7 0,60 270√325 16K/16K +

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

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

В настоящее время самым младшим в ряду процессорных ядер ARM является семейство ARM7 Thumb, которое пришло на смену ARM6 Thumb. Это ядро с 32-разрядной целочисленной RISC-архитектурой, обеспечивающее производительность 130 млн.оп./с. Ядро очень компактно ≈ при производстве по технологии 0,18 мкм базовая модификация ARM7TDMI занимает площадь всего 0,59 мм2, при этом энергопотребление ядра составляет не более 0,25 мВт/МГц. Ядра ARM7TDMI-S и ARM7EJ-S являются синтезируемыми. Ядро ARM7EJ-S отличается от базового наличием операций, ориентированных на цифровую обработку сигналов (DSP), и поддержкой технологии Jazelle для ускорения работы Java-приложений.

Макроячейка ARM720T имеет в сво╦м составе модуль управления памятью (MMU), который обеспечивает трансляцию логических адресов в физические, а также реализует функции защиты памяти. При использовании MMU память разбивается на секции размером 1 Мбайт, а секции могут быть разбиты на страницы размером 4 или 64 Кбайт. Наличие MMU позволяет использовать на данном процессоре операционные системы класса Linux, Windows CE или Palm OS.

Ячейка ARM740T является упрощ╦нной версией ARM720T, в которой вместо модуля MMU присутствует модуль защиты памяти (MPU). Модуль MPU не поддерживает логической адресации (секции, страницы). Вместо этого можно выделить до 8 отдельных линейных областей памяти, задав для них определ╦нные правила доступа.

Макроячейки ARM720T и ARM740T имеют в сво╦м составе кэш-память объ╦мом 8 Кбайт. Микроконтроллеры с ядрами ARM7 Thumb применяются в цифровых аудиоплеерах, пейджерах, принтерах, карманных компьютерах.

Ядра семейства ARM7 имеют традиционную архитектуру фон-Неймана с общей памятью команд и данных. В последующих семействах ARM9, ARM10 реализуется гарвардская архитектура с раздельной внутренней кэш-памятью команд и данных.

Семейство ARM9 Thumb является развитием ARM7 Thumb по составу периферии и набору команд. Оно разработано для применения в портативных устройствах с высокими требованиями к быстродействию и энергопотреблению. Быстродействие вычислительного ядра достигает 220 млн.оп./с при потреблении 0,3 мВт/МГц. В настоящее время семейство представлено мак-роячейками ARM920T, ARM922T и ARM940T. Все они имеют отдельные кэши команд и данных, которые отличаются объ╦мом: 16К/16K, 8K/8K и 4K/4K, соответственно. Кроме того, ARM920T и ARM922T имеют отладочный интерфейс ETM и модуль управления памятью.

Группа синтезируемых ядер ARM9E-S Thumb выделяется фирмой ARM в отдельное семейство. Они имеют расширения для поддержки алгоритмов цифровой обработки сигналов (DSP), в том числе умножитель-накопитель (MAC). В ядро может быть включен математический сопроцессор VFP9-S, поддерживающий операции с плавающей точкой над данными двойной точности. Для синтезируемых ядер ARM946E-S и ARM926EJ-S возможна реализация кэш-памяти различного объ╦ма: от 0 до 1М и от 4К до 128К, соответственно.

Основные области применения ядер ARM9 Thumb и ARM9E-S Thumb ≈ цифровые системы телекоммуникации и реализация сложных алгоритмов управления. Микроконтроллеры на их основе используются в мобильных телефонах, модемах, сетевых картах, карманных компьютерах, автомобильной электронике. Благодаря DSP-расширениям ядро ARM9E-S Thumb может быть эффективно использовано в аудиокодировании (реализация протоколов AC3, MPEG), передаче голоса через Интернет и в антипробуксовочных тормозных системах (ABS).

Семейство ARM10 Thumb в настоящее время активно развивается. Фирма ARM осуществляет запланированный перевод ядра с технологии 0,15 мкм на 0,11. К 2003 году его быстродействие должно возрасти с 390 до 700 млн.оп./с, а энергопотребление сократиться до 0,3 мВт/МГц. Это ядро обладает следующими особенностями:

независимые 64-разрядные шины адреса и данных; кэш-память команд и данных ╦мко-стью по 16 или 32 Кбайт; отдельные модули управления памятью команд и данных; встроенный математический сопроцессор VFP10; реализация режимов пониженного энергопотребления; DSP-расширения системы команд; встроенный умножитель.

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

Микроконтроллеры семейства StrongARM являются совместной разработкой фирм ARM и Intel. Они предназначены в первую очередь для использования в портативных мультимедийных устройствах класса Palm PC. Ядро StrongARM является модификацией ядра ARM7, в котором не реализуется режим Thumb (работа с 16-разрядным форматом команд). В настоящее время на базе ядра StrongARM выпускается микроконтроллер SA-1110, который имеет в сво╦м составе:

кэш команд объ╦мом 16 Кб и кэш данных объ╦мом 8 Кб; мини-кэш, позволяющий ускорить обработку больших объ╦мов данных, сгруппированных последовательно; устройства управления памятью программ и данных; схемы управления прерываниями, энергопотреблением, сбросом, умножением частоты генератора; контроллер внешней памяти; контроллер прямого доступа к памяти; контроллер жидкокристаллического дисплея; интерфейсы USB, UART, SDLC, IrDA; кодек, осуществляющий кодирование/декодирование аудиосигналов и сигналов от сенсорной панели индикатора.

Фирмой Intel разработана также микросхема SA-1111, которая работает совместно с SA-1110, обеспечивая расширение е╦ возможностей. Микросхема SA-1111 имеет дополнительный порт USB, а также реализует интерфейсы с клавиатурой и мышью, PCMCIA-платами расширения.

В данной статье рассмотрены микроконтроллеры с ядром ARM7TDMI, которые являются наиболее массовыми и деш╦выми. Полное описание всех процессоров ARM можно найти на сайте производителя

Архитектура процессорного ядра ARM7TDMI

Подробное описание ядра ARM7TDMI дано в [1]. Следует отметить следующие особенности его архитектуры:

ядро может функционировать в двух состояниях: ARM и THUMB. В состоянии ARM процессор выполняет 32-разрядные команды, в состоянии THUMB ≈ 16-разрядные команды; наличие тр╦хступенчатого конвейера позволяет выполнять последовательно поступающие команды за один такт (в том числе команды умножения); ядро поддерживает функционирование внешнего сопроцессора; в состав ядра включены отладочные интерфейсы JTAG и ETM.

Режимы работы и регистровые модели процессора ARM7TDMI

В состоянии ARM процессор может функционировать в одном из следующих режимов:

User - выполнение программ пользователя. Supervisor - работа под управлением операционной системы (ОС), которая оперирует данными, недоступными программам пользователя. System - режим выполнения системных программ, при котором ОС работает с данными пользователя. IRQ - режим обработки прерываний, в который попадает процессор при поступлении запроса прерывания низшего уровня на вход IRQ. FIQ (Fast IRQ) - режим быстрой реакции на прерывания, в который попадает процессор при поступлении запроса высшего уровня на вход FIQ. Abort - режим, который реализуется при ошибке обращения к памяти (ошибки такого рода ≈ обращение по несуществующему адресу, попытка записи в ПЗУ и другие, фиксируются контроллером прерываний, который выда╦т процессорному ядру запрос Abort). Undefined - режим реализуется при выборке неправильного кода команды.

Для каждого режима функционирования имеется соответствующая регистровая модель, которая содержит набор 32-разрядных регистров, доступных в этом режиме (рис. 2).

Рисунок 2. Регистровые модели процессора в состоянии ARM

В базовом режиме User, в котором процессор работает основную часть времени, используются 32-разрядные регистры R0-R15 и регистр состояния CPSR. Регистр R15 выполняет функции программного сч╦тчика PC. Регистр R14 (LR - Link Register) используется при вызовах подпрограмм как регистр связи, в котором сохраняется текущее содержимое PC для возвращения к основной программе. Для организации стека рекомендуется использовать регистр R13 (SP - Stack Pointer) в качестве указателя стека.

Все регистры имеют дополнительные имена, определ╦нные стандартом фирмы ARM [2], которые приведены на рис. 2 в скобках. Этот документ регламентирует использование регистров при вызове подпрограмм и организации передачи данных между ними и предназначен, главным образом, для разработчиков компиляторов:

Регистры a1 - a4 (argument 1 √ 4) используются для передачи параметров подпрограммам. Регистры v1 - v8 ~(variable 1 - 8) используются для хранения локальных переменных. Регистр IP (Intra-Procedure-call scratch register) - служит для хранения промежуточных данных между вызовами процедур.

Регистр состояния CPSR содержит следующие биты (рис. 3):

Рисунок 3. Формат регистра CPSR

M4-0 - определяют режим работы процессора в соответствии с табл. 2; T - зада╦т состояние процессора: ARM (при T = 0) или THUMB (при T = 1); I, F - маскируют (запрещают обработку) прерываний IRQ и FIQ; N, Z, C, V - являются признаками знака (N), нуля (Z), переноса (С) и переполнения (V), значения которых устанавливаются в соответствии с результатом очередной операции.

таблица 2.Режимы процессора

M4-0 Режим 1 0 0 0 0 User 1 0 0 0 1 FIQ 1 0 0 1 0 IRQ 1 0 0 1 1 Supervisor 1 0 1 1 1 Abort 1 1 0 1 1 Undefined 1 1 1 1 1 System

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

Запись нового содержимого в регистр CPSR возможна во всех режимах, кроме User. Эти режимы называются привилегированными.

При запуске процессор начинает работу в режиме Supervisor. Переход в режим User реализуется пут╦м записи в регистр CSPR содержимого, в котором биты M4-0 = 10000. Обратное переключение из режима User в Supervisor производится только при поступлении команды программного прерывания SWI. Таким образом обеспечивается доступ пользователя к ресурсам операционной системы. Программа Supervisor получает доступ ко всем регистрам модели User, если выполнит переход в режим System, записав в регистр СPSR значение битов M4-0 = 11111. Переход в режимы IRQ, FIQ, Abort, Undefinied осуществляется автоматически при поступлении соответствующих запросов или событий.

При переходе в другой режим текущее содержимое регистра CPSR (слово состояния) переписывается в регистр SPSR, соответствующий наступившему режиму. При возвращении к исходному режиму содержимое CPSR восстанавливается.

Для каждого режима имеются отдельные регистры R13 (SP), R14 (LR). Поэтому при переключении режимов сохраняется текущее содержимое указателя стека и регистра связи. Таким образом при возвращении к данному режиму обеспечивается обращение к вершине стека и возможность возврата к основной программе, если производился вызов подпрограммы.

При переходе в режим FIQ (поступление запроса прерывания на вход FIQ) сохраняется текущее содержимое регистров R8-R12, вместо которых в этом режиме используются регистры R8_fiq - R12_fiq (рис. 2). Поэтому при обработке данного прерывания нет необходимости сохранять содержимое этих регистров в стеке. В ряде случаев это обеспечивает более быстрый переход к обработчику прерываний и возврат из него.

Способы адресации и система команд

Процессор использует способы адресации операндов, представленные в табл. 3.

Таблица 3.Способы адресации

Обозначение Название #Imm Непосредственная Rn Регистровая Rn, shift #n Регистровая с масштабированием [Rn] Косвенно-регистровая [Rn,±Imm] {!} Преиндексная с непосредственным смещением [Rn,±Rm] {!} Преиндексная с регистровым смещением [Rn,±Rm, shift #n] Преиндексная с масштабированным регистровым смещением [Rn],±Rm Постиндексная с регистровым смещением [Rn],±Rm, shift #n Постиндексная с масштабированным регистровым смещением

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

При непосредственной адресации операнд Imm входит в состав команды. При регистровой адресации в команде зада╦тся имя регистра Rn, содержимое которого является операндом или результатом операции.

Особенностью системы команд ARM является наличие регистровой адресации с масштабированием. При масштабировании содержимое регистра Rn сдвигается на число разрядов n, указанное в команде (от 1 до 31). Вместо "shift" в ассемблерном тексте используется один из четыр╦х символов, задающих вид реализуемого сдвига:

LSL ≈ логический сдвиг влево; LSR ≈ логический сдвиг вправо; ASR ≈ арифметический сдвиг вправо; ROR ≈ циклический сдвиг вправо.

Таблица 4.Суффиксы для организации условных операций

Суффикс Логическое выражение Условие EQ Z = 1 Равно NE Z = 0 Не равно CS C = 1 Выше или равно CC C = 0 Ниже MI N = 1 Отрицательный результат PL N = 0 Положительный результат VS V = 1 Переполнение VC V = 0 Нет переполнения HI C = 1, Z = 0 Выше LS C = 0, Z = 1 Ниже или равно GE N = V Больше или равно GE N = V Больше или равно LT N V Меньше GT Z = 0, N = V Больше LE Z = 1, N V Меньше или равно AL   Всегда

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

Таким образом различные сдвигов реализуются с помощью команды пересылки MOV (табл. 5), используя регистровую адресацию с масштабированием. При выполнении арифметических и логических сдвигов последний выдвигаемый разряд поступает в регистр CPSR в качестве признака переноса C. При циклическом сдвиге бит C включается в цепь сдвига, только если число разрядов сдвига задано равным нулю. В этом случае выполняется циклический сдвиг операнда на один разряд вправо через бит C в регистре CPSR.

Таблица 5.Команды пересылки

Мнемокод Команда Операция LDM Групповая загрузка содержимого регистров из памяти   LDR Загрузка регистра из памяти Rd := (адрес) MOV Пересылка регистра или константы Rd := Op2 MRS Пересылка из CPSR или SPSR в регистр Rn := CPSR (SPSR) MSR Пересылка из регистра в СPSR или SPSR CPSR (SPSR): = Rm MVN Пересылка с побитной инверсией Rd := НЕ Op2 STM Групповое сохранение содержимого регистров в памяти   STR Пересылка из регистра в память := Rn SWP Обмен содержимого регистра и памяти Rd := [Rn], [Rn] := Rm

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

При косвенно-регистровой адресации содержимое указанного регистра Rn содержит адрес ячейки памяти, где хранится операнд или результат.

Индексная адресация имеет две разновидности: пре-индексная и пост-индексная. В случае пре-индексной адресации адресом служит содержимое базового регистра Rn, которое индексируется перед выполнением операции пут╦м сложения или вычитания непосредственного операнда Imm, содержимого регистра Rm или масштабированного содержимого Rm. Если в поле операнда содержится символ {!}, то индексированное содержимое Rn сохраняется после выполнения операции. В случае пост-индексной адресации адресом служит содержимое базового регистра Rn, которое индексируется после выполнения операции.

Ядро ARM7TDMI является RISC-процессором, поэтому оно выполняет относительно небольшой набор команд. Можно выделить следующие особенности системы команд:

Отсутствие аппаратной поддержки стека. Стек организуется программно, прич╦м в качестве указателя стека рекомендуется использовать регистр R13, хотя в принципе в этой роли может быть любой другой регистр общего назначения. Обычно обращение к стеку производится с помощью команд групповой пересылки STM и LDM. Установка в регистре CSPR признаков N, Z, C, V по результатам выполнения операций производится при наличии в команде суффикса S. При его отсутствии признаки в регистре CPSR не изменяются. Любая команда может быть условной, если е╦ снабдить соответствующим суффиксом. Виды условий и их суффиксы приведены в табл. 4.

При наличии суффикса AL команда выполняется безусловно - при любых значениях признаков. Условия "Выше", "Ниже", "Выше или равно", "Ниже или равно" используются при сравнении чисел без знака; условия "Больше", "Меньше", "Больше или равно", "Меньше или равно" - при сравнении чисел со знаком.

Из группы команд пересылки (табл. 5) интересны команды групповой загрузки√сохранения содержимого регистров LDM и STM. Они позволяют пересылать содержимое нескольких регистров, перечисленных в команде. В формате команды есть 16-бит поле, в котором каждый бит соответствует одному из регистров R15-0. Если бит равен единице, содержимое данного регистра сохраняется в памяти (по команде STM) или загружается из памяти (по команде LDM).

При записи в регистр CPSR с помощью команды MSR в режиме User изменяются только признаки N, Z, V, C. Остальные биты сохраняют ранее установленное значение. В любом режиме изменение бита Т с помощью команды MSR не реализуется. Для программной смены состояния процессора используется команда BX (табл. 7).

Таблица 6.Команды арифметических и логических операций

Мнемокод Команда Операция ADC Сложение с уч╦том переноса Rd := Rn+Op2+C ADD Сложение Rd := Rn+Op2 AND Логическое И Rd := Rn AND Op2 BIC Очистка битов (маскирование) Rd := Rn AND (НЕ Op2) CMN Сравнение с отрицательным числом CPSR flags := Rn+Op2 CMP Сравнение CPSR flags := Rn√Op2 EOR Исключающее ИЛИ Rd := Rn XOR Op2 MLA Умножение с накоплением Rd := (Rm╢Rs)+Rn MUL Умножение Rd := RmxRs ORR Логическое ИЛИ Rd := Rn OR Op2 RSB Обратное вычитание Rd := Op2√Rn RSC Обратное вычитание с за╦мом Rd := Op2√Rn√1+C SBC Вычитание с за╦мом Rd := Rn√Op2√1+C SUB Вычитание Rd := Rn - Op2 TEQ Побитное сравнение CPSR flags:= Rn XOR Op2 TST Тестирование битов CPSR flags:= Rn AND Op2

В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf

Таблица 7.Команды передачи управления

Мнемокод Команда Операция B Переход PC := PC + (rel






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.