
- •Раздел 5. Микроконтроллеры arm7 семейства at91sam7 фирмы Atmel
- •Тема 5.1 Общие сведения
- •Тема 5.2 Сравнительный обзор микроконтроллеров с ядром arm7
- •Тема 5.2.1 мк семейства aDuC70xx фирмы Analog Devices
- •Тема 5.2.2 мк семейства lpc2ххх фирмы nxp
- •Тема 5.2.3 мк семейства tms470r1x фирмы Texas Instruments
- •Тема 5.2.4 мк семейства at91sam7s фирмы Atmel
- •Тема 5.3 Процессорное ядро arm7
- •Тема 5.3.1 Конвейер
- •Тема 5.3.2 Режимы работы процессора
- •Тема 5.3.3 Регистры
- •Тема 5.3.4 Регистр текущего состояния программы
- •Тема 2.3.5 Определение режима работы процессора
- •Тема 2.3.6 Обработка исключительных ситуаций
- •Тема 5.3.7 Система команд
Тема 5.3 Процессорное ядро arm7
Микроконтроллеры семейства AT91SAM7S выполнены на основе микропроцессорного ядра ARM7TDMI (разновидность ядра ARMv4T).
Ключевой принцип, лежащий в основе процессора ARM – простота. Ядро ARM7 является универсальной 32-битной RISC-машиной, предполагающей использования небольшого количества команд и соответственно состоящей из относительно небольшого количества логических элементов. Благодаря этому процессор ARM7 идеально подходит для использования во встраиваемых системах. Он имеет высокую производительность, низкое энергопотребление и занимает небольшую часть общей площади кристалла.
Помимо базового состояния, называемого ARM, процессор также использует уникальную архитектурную стратегию, известную как состояние Thumb, что подразумевает использование двух наборов команд: стандартная 32-битная система команд ARM и 16-битная сокращенная система команд Thumb, позволяющая приблизиться к двойной плотности кода по сравнению со стандартной.
Буквенные обозначения TDMI в названии ARM7TDMIсогласно спецификации компании ARM, имеют следующую расшифровку:
Т – наличие в составе ядра помимо базовой архитектуры ARM дополнительной архитектуры Thumb, что позволяет пользователю выбрать для своего приложения одно из двух состояний (систем команд): ARM и Thumb;
D – ядро имеет в своем составе дополнительные отладочные модули;
M – ядро имеет в своем составе дополнительный аппаратный умножитель, позволяющий выполнять команды умножения так называемой длинной формы (с 64-битным результатом);
I – ядро имеет в своем составе встроенную логику отладки (ICE).
Тема 5.3.1 Конвейер
Основным элементом ЦПУ ARM7 является трехуровневый конвейер команд, используемый для обработки команд, считанных из программной памяти.
Трехступенчатый конвейер является самой простой разновидностью конвейеров. Конвейер имеет три аппаратно-независимые ступени, благодаря которым одновременно с выполнением одной команды осуществляется декодирование второй и выборка третьей. Он настолько эффективно ускоряет прохождение команд через процессор, что большинство команд ARM выполняется за один такт. Работу конвейера наглядно иллюстрирует рисунок 5.1.
Рисунок 5.1 Конвейер инструкций
Эффективность в работе конвейера достигается при выполнении линейного кода. При обнаружении перехода конвейер сбрасывается, и для возобновления выполнения программы с максимальной скоростью он должен сначала заполниться.
Поскольку конвейер является составной частью процессора, программно он не доступен. Но следует учитывать, что значение счетчика команд (Program Counter – PC) на 8 байт (две инструкции) превышает значение адреса текущей выполняемой команды, т.к. указывает на адрес загружаемой команды, а не исполняемой. В связи с этим необходимо аккуратно подходить к вычислению смещений в случае относительной адресации с использованием счетчика команд.
Тема 5.3.2 Режимы работы процессора
Процессорное ядро ARM7 поддерживает два набора команд – 32-битный набор мультимедийных команд ARM и 16-битный набор команд общего назначения Thumb. В состоянии ARM процессор может функционировать в одном из 7 следующих режимов:
User – режим пользователя, выполнение пользовательских приложений;
Supervisor – режим, работа под управлением системного программного обеспечения, которое оперирует данными, недоступными в пользовательском режиме;
System – системный режим, выполнение системных программ, осуществляющих доступ к пользовательским данным;
IRQ – режим прерываний, обработка обычных прерываний, возникающих при поступлении запроса низшего уровня;
FIQ – режим быстрого прерывания, быстрая обработка прерываний, возникающих при поступлении запроса высшего уровня;
Abort – аварийный режим, обработка ошибок обращения к памяти;
Undefined – неопределенный режим, обработка неправильного кода команды.
Режим User считается базовым режимом работы микропроцессора, а все остальные режимы принято считать привилегированными.