Набор регистров в состоянии Thumb Набор регистров в состоянии Thumb является поднабором по отношению к набору регистров в состоянии ARM. Программист имеет доступ к:
· 8 регистрам общего назначения r0-r7
· Счетчику программ PC
· Указателю стека SP
· Регистру связи LR
· Регистру текущего состояния программы CPSR.
В каждом привилегированном режиме имеются банкированные регистры SP, LR и SPSR. Данный набор регистров показан на рисунке 8.
Рисунок 8. Организация регистров в состоянии Thumb
Сброс
Если сигнал на входе nRESET принимает низкий уровень, то возникает сброс и ядро ARM7TDMI прекращает выполнение инструкции и продолжает инкрементировать шину адреса, как при выборке слов или полуслов инструкций. nMREQ и SEQ индицируют о внутренних циклах в течение этого времени
Если nRESET переходит опять в высокое состояние, то процессор ARM7TDMI выполняет следующие действия:
Перезапись R14_svc и SPSR_svc путем копирования в них текущих значений PC и CPSR. Значения PC и CPSR являются неопределенными.
Принудительная установка значения M[4:0] равного b10011, супервизорный режим, установка бит I и F, а также сброс бита T в регистре CPSR.
Установка PC для выборки следующей инструкции по адресу 0x00.
Возвращение к состоянию ARM, если необходимо, и восстановление выполнения.
После сброса значения всех регистров, кроме PC и CPSR, являются неопределенными.
Мобильные устройства на основе ядра ARM7TDMI
Фирмой ARM разработан целый ряд 32-битных RISC-процессоров с различными возможностями и различной производительностью, а ядро ARM7, разработанное еще в 1994 году, используется до настоящего времени. Сама фирма определяет процессор ARM7 как универсальное ядро 32-битного RISC-микропроцессора с малым энергопотреблением, предназначенное для использования в различных заказных и специальных ИС. Малые размеры RISC-ядра позволяют успешно интегрировать его в большие заказные схемы, которые могут содержать RAM, ROM (Flash), DSP, дополнительную логику и другие элементы.
Микроконтроллеры с ядром ARM7TDMI выпускаются многими фирмами-производителями и применяются разработчиками при решении широкого круга задач: от реализации центральных устройств управления системами сбора и обработки информации до контроллеров периферии и внешних интерфейсов. Наиболее популярны такие ARM7TDMI микроконтроллеры, как: серия ADUC702x Analog Devices, серия STR71x фирмы ST Microelectronics, отличающиеся сбалансированным набором периферийных модулей и малыми размерами корпусов, а также микроконтроллеры серии AT91x фирмы Atmel и серия LPC2xxx фирмы NXP (Philips) с расширенной функциональностью.
К областям применения ядра ARM7 фирма-производитель относит:
· телекоммуникации — контроллеры GSM-терминалов;
· обмен данными — средства преобразования протоколов и модемы;
· портативные вычисления — Palmtop-компьютеры;
· портативные измерительные устройства — карманные устройства сбора данных;
· автомобильную технику — устройства управления двигателями;
· информационные системы — Smart-карты;
· средства отображения — JPEG-контроллеры.
Практическая часть
Задание
В памяти размещен массив чисел – кодов ASCII. Отобразить на мониторе все заглавные латинские буквы, начиная со второй из этого массива.
Блок-схема
Рисунок 9. Блок-схема программы
Распределение памяти
Рисунок 10. Память программы
Рисунок 11. Регистры программы
Код программы
RD #50 :параметр массива, начиная с адреса 50
WR R1
RD #10 :параметр цикла, 10 чисел
WR R2
RD #0 :параметр цикла для пропуска первого числа
WR R3
RD #11
OUT 11 :разрешаем монитор и автоинкремент адресов видеопамяти
L1: RD @R1+ :считываем первое число массива
WR R3
SUB #65 :сравниваем с первой границей (>=65)
JS 22 :переход, если число не входит в границы букв
RD R3
SUB #91 :сравниваем со второй границей (<=90)
JNS 22 :переход, если число не входит в границы букв
RD R4
JS 21 :переход, если первое число, входящее в массив, уже пропущено
SUB #1
WR R4
JMP 22 :пропуск первого числа входящего в границы букв
RD R3
OUT 10 :вывод на экран
JRNZ R2,L1
RD #10
OUT 11 :запрещаем монитор и автоинкремент адресов видеопамяти
HLT
|