А. Емелин, И. Шагурин RISC-микроконтроллеры с процессорным ядром ARM. Часть 2.В последние годы вс╦ более широкую популярность приобретают высокопроизводительные 32-разрядные микроконтроллеры, использующие процессорное ядро ARM. Такие микроконтроллеры выпускаются многими известными производителями: Atmel, Samsung, Intel, Motorola, Cirrus Logic, Oki и другими. Они привлекают пользователей низким значением соотношения "цена/качество", что обусловило их широкое применение в разнообразных устройствах. Ряд этих изделий используется российскими производителями для создания современной электронной аппаратуры различного назначения, поэтому представляется полезным ознакомление широкого круга российских специалистов с этим перспективным классом микроконтроллеров. Регистровая модель и система команд в состоянии Thumb Состояние Thumb отличается от ARM разрядностью команды - она содержит 16 бит. Встроенный декодер переводит команды, записанные по системе Thumb, в команды ARM. Ввиду компактности используемых форматов, система команд Thumb имеет ряд особенностей и ограничений [1]. Переход процессора из состояния ARM в Thumb и обратно реализуется с помощью команды BX. Набор регистров в состоянии Thumb сокращ╦н (рис. 1) - он является подмножеством регистрового банка в состоянии ARM. В формате большинства команд Thumb под номер регистра отведено только 3 бита, поэтому прямое обращение возможно только к регистрам R0-R7. Регистры R8-R12 доступны только через специальные команды за-грузки. Регистры SP и LR выполняют фиксированные функции как указатель стека и регистр связи. В состоянии Thumb имеются специальные команды, ориентированные на работу с этими регистрами - загрузка в стек проходит только через SP, адрес возврата из подпрограммы сохраняется только в LR. В формате команд Thumb отсутствует поле условия Cond. Из условных операций выполняются только команды условных переходов Bcc, где суффикс "cc" определяет вид условия в соответствии с табл. 4 части 1. Не используется также суффикс "S", так как в системе команд Thumb ж╦стко задано, какие флаги условий устанавливаются в регистре CPSR по результатам выполнения той или иной команды. Рисунок 1. Регистровая модель процессора в состоянии Thumb
Сокращение длины команд повлияло также на разрядность содержащихся в них операндов. Непосредственные данные сокращены до 8 бит, адресные смещения в большинстве команд - до 5 бит. Однако обрабатываемые данные сохраняют 32-разрядный формат. Состояние Thumb имеет ряд ограничений по системе команд, поэтому один и тот же алгоритм потребует для своей реализации большего количества инструкций, чем в состоянии ARM. Однако формат команд Thumb обеспечивает большую компактность программного кода, чем формат ARM. По данным фирмы ARM грамотное применение режима Thumb позволяет во многих случаях сократить объ╦м кода на 35√40%. При использовании 8- или 16-разрядной внешней памяти производительность процессора в состоянии Thumb может оказаться выше, чем в состоянии ARM, за сч╦т меньшего количества обращений к памяти. Обработка прерываний При поступлении внешнего запроса прерывания или обнаружении ошибки процессор автоматически переходит в состояние ARM и начинает работу в соответствующем режиме: IRQ, FIQ, Abort или Undefinied. Последовательность его действий такова:
В зависимости от алгоритма работы контроллера прерываний, могут быть также замаскированы некоторые исключения, возникновение которых может нарушить процесс обработки. В системе команд ARM отсутствует специальная команда для выхода из обработчика прерывания. Для выполнения возврата программа должна выполнить следующие действия:
Таблица 1.Размещение векторов прерываний и команды выхода
В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf В случаях выхода из режимов FIQ, IRQ, Abort может потребоваться коррекция адреса возврата. После обработки этих исключений процессор должен вернуться к выполнению команды, вызвавшей прерывание. В регистре LR хранится адрес следующей команды, поэтому при выходе из обработчика прерываний содержимое этого регистра следует скорректировать с помощью команды вычитания SUBS. Ядро ARM7TDMI реализует 7 видов прерываний, которые перечислены ниже в порядке снижения их приоритета:
Вектора прерываний располагаются в памяти последовательно, начиная с нулевого адреса (табл. 1). Каждый вектор содержит 4 байта, которые являются адресами первой команды обработчика прерываний. Отметим, что в табл. 1 отсутствуют вектора прерываний по запросам внешних устройств. Дело в том, что микроконтроллеры, реализуемые на базе ядра ARM7TDMI, имеют разнообразный набор периферийных устройств. Поэтому в состав микроконтроллера вводится контроллер прерываний, который транслирует запрос от любого периферийного устройства в запрос IRQ или FIQ. Далее программа-обработчик должна самостоятельно определить источник запроса, используя регистры контроллера прерываний. Пример реализации прерываний в микроконтроллере S3C44B0X фирмы Samsung привед╦н ниже. Микроконтроллеры с ядром ARM и их применение Ядро ARM в своих разработках используют многие известные фирмы - производители микросхем. Ограниченный объ╦м статьи не позволяет рассказать о всех кристаллах этого класса, представленных на рынке. Основные характеристики нескольких широко используемых типов микросхем приведены в табл. 2, где использованы следующие обозначения: Таблица 2. Микроконтроллеры с ядром ARM7TDMI
В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf
Некоторые фирмы (NEC, Toshiba, Texas Instruments) изготавливают системы с ядром ARM на заказ. В этом случае заказчику предоставляется возможность выбора периферии. Часто такие заказные микросхемы поставляются не как микроконтроллеры, а как "системы на кристалле" (System on Chip ≈ SoC), так как они включают большой набор периферийных устройств, контроллеров и сопроцессоров, реализующих совместно с процессорным ядром функции законченной цифровой системы. В качестве примера на рис. 2 показана структура микроконтроллера S3C44B0X фирмы Samsung [2]. Микроконтроллер содержит следующий набор периферийных устройств:
Контроллер внешней памяти организует взаимодействие между процессорным ядром и памятью программ/данных. Память разбита на 8 банков MB0-MB7. В пределах каждого банка S3C44B0X с помощью 25-разрядной шины адреса может адресовать до 32 Мбайт. В банке MB0 размещается ПЗУ, в котором содержится программа начальной загрузки регистров и запуска микроконтроллера. В адресном пространстве MB0 располагаются также регистры периферийных устройств, входящих в состав микроконтроллера. Банки MB1-MB5 отведены для размещения ПЗУ (ROM) или статического ОЗУ (SRAM). Размер банков MB0-MB5 фиксирован и составляет 32 МБ. Банки MB6, MB7 предназначены для размещения динамического ОЗУ ≈ микросхем DRAM и SDRAM. Размеры этих банков настраиваются программно. Наличие двух банков для микросхем SDRAM позволяет использовать в составе цифровой системы стандарт-ные DIMM-модули памяти с двухбанковой организацией, которые имеют относительно низкую стоимость. Следует иметь в виду, что при использовании обычных микросхем SDRAM информация в них не сохраняется, если микроконтроллер S3C44B0X находится в режиме пониженного энергопотребления. В этом случае для сохранения содержимого памяти необходимо использовать микросхемы SDRAM с поддержкой режима авторегенерации Self Refresh. Контроллер прерываний обрабатывает сигналы прерываний от 30 источников - устройств, находящихся на кристалле, и сигналов на внешних выводах. Контроллер поддерживает стандартный и векторный режимы обслуживания запросов прерывания. При стандартном режиме обслуживания запрос прерывания в зависимости от предварительной настройки (программирования) контроллера инициирует переход процессора в режим FIQ или IRQ. При этом запросы, вызывающие режим FIQ, имеют более высокий приоритет, чем запросы IRQ. Определение источника запроса прерывания обеспечивается с помощью соответствующей программы обработки. Для запросов, вызывающих режим IRQ, можно задать ряд уровней приоритета, определяющих очер╦дность их обслуживания. При векторном режиме обслуживания каждому периферийному устройству - таймерам, последовательным портам, АЦП, различным контроллерам, зада╦тся определ╦нный вектор прерывания. При поступлении соответствующего за-проса этот вектор загружается в программный сч╦тчик, обеспечивая обращение к требуемой процедуре обработки. Контроллер ЖК-дисплея выда╦т необходимые сигналы для формирования изображения на подключенном к микроконтроллеру ч╦рно-белом (с градациями серого) или цветном ЖКД. Контроллер позволяет осуществлять 4- или 8-разрядный интерфейс с драйверами ЖКД, поддерживает режим Dual Scan, при котором осуществляется вывод одновременно в двух областях экрана. Контроллер может обслуживать панели размером до 8192x1024 точек. Практически размер ограничен номенклатурой выпускаемых панелей и требуемой частотой кадров. Драйверы ЖКД обычно работают на частотах до 10 МГц. В случае монохромного режима, байтового обмена и частоты кадров 50 Гц максимальный объ╦м панели составляет: Vmax = 10╥106/50 [байт] = 10╥106/50 · 8 [точек] = 1,6 млн. точек. Для современных серийно выпускаемых ЖК-панелей максимальный размер составляет 640x480 = 0,3 млн. точек. При управлении цветным ЖКД состояние каждой точки зада╦тся одним байтом, который содержит битовые поля для каждого из тр╦х основных цветов: по 3 бита на красный и зел╦ный, 2 - на синий. Значение битового поля зада╦т код интенсивности соответствующей цветовой компоненты. С помощью регистров палитры каждому коду может быть поставлена в соответствие одна из 16 градаций интенсивности. Таким образом, ЖКД может одновременно воспроизводить до 256 цветов из 4096 возможных. Для управления дисплеем контроллер использует внешние выводы:
Шесть 16-разрядных таймеров предназначены для отсч╦та временных интервалов. Каждые два таймера используют один 8-разрядный делитель частоты. Таймеры 0-4 могут работать в режиме широтно-импульсной модуляции (PWM). Таймер 0 реализуют вариант ШИМ с генерацией "м╦ртвой зоны", что используется при управлении силовыми каскадами. Таймеры 4 и 5 могут тактироваться внешним сигналом. Сторожевой таймер WDT (Watch-Dog Timer) предназначен для контроля возникновения ошибок в процессе работы системы ("зависания" программы). Пользователь программно зада╦т временной интервал срабатывания WDT. В зависимости от содержимого регистра управления WDT, реализуется прерывание или повторный запуск процессора. При отсутствии необходимости в сторожевых функциях этот таймер может служить для отсч╦та временных интервалов. Блок RTC (Real Time Clock) обеспечивает работу микроконтроллера в реальном масштабе времени. Блок представляет собой часы с календар╦м и будильником, тактируемые от отдельного кварцевого резонатора с частотой 32768 Гц, и питается от внешней батарейки напряжением 3 В. Данные хранятся в двоично-десятичном формате, что упрощает вывод информации о времени и дате. Этот блок может также генерировать запрос прерывания с заданным периодом времени, которое используется операционной системой реального времени для переключения задач. В качестве примера применения контроллера S3C44B0X на рис. 3 представлена структура универсального процессорного модуля с графическим интерфейсом (УПГИ), разработанного в Консультационно-техническом центре по микроконтроллерам (КТЦ-МК, Москва). Рисунок 3. Структура модуля УПГИ Выбор для этой разработки контроллера S3C44B0X с процессором ARM обусловлен следующими факторами:
Функционирование модуля УПГИ организовано следующим образом. При включении питания процессор начинает выборку программы из стартового ПЗУ. Затем он переносит код программы в ОЗУ и запускает е╦. Программы небольшого объ╦ма могут храниться в стартовом ПЗУ. Если объ╦м программы превышает 512 Кбайт, то она загружается из флэш-памяти. В модуле используется флэш-память NAND типа K9K1208 фирмы Samsung, которая имеет ╦мкость 64 Мбайт. Обмен с флэш-памятью реализуется с помощью мультиплексированного 8-разрядного интерфейса (передача адреса и данных производится побайтно). Для реализации ОЗУ ╦мкоcтью 64 Мбайт используются микросхемы SDRAM типа K4S641632 фирмы Samsung объ╦мом 8 Мбайт, которые выполняют автоматическую регенерацию содержимого памяти (функция Self Refresh). Это позволяет реализовать энергосберегающий режим работы УПГИ без потери данных, хранящихся в ОЗУ. В качестве памяти можно также использовать стандартный модуль синхронного динамического ОЗУ для персонального компьютера объ╦мом до 64 Мбайт. Интерфейс пользователя реализуется с помощью ЖК-дисплея типа PG640480FRT-ANN-I-A1 фирмы Power-tip с разрешением 640x480 точек, имеющего сенсорный экран. Для управления выводом данных на дисплей используется контроллер ЖК-дисплея, имеющийся в S3C44B0X. При╦м информации с сенсорного экрана производится с помощью специализированного АЦП типа ADS7843 фирмы Texas Instruments. Для обмена информацией с другими устройствами системы предусмотрены три последовательных интерфейса: RS-232, IrDA и USB. Интерфейсы RS-232 и IrDA (инфракрасный порт) реализуются контроллером S3C44B0X. Для организации интерфейса USB используется внешний специализированный контроллер USBN9603 фирмы National. Так как на основе модуля УПГИ предполагается создавать портативные устройства, то основным источником питания являются аккумуляторы. Для рационального расхода их энергии используются преобразователи импульсного типа. Возможно питание от сети, во время которого происходит подзарядка аккумуляторов. Схема зарядки выполнена с использованием специализированного контроллера BQ2002 фирмы Texas Instruments. Конструктивно устройство выполнено в виде двухслойной печатной платы, размер которой (215x150 мм) соответствует размерам ЖК-дисплея. В дальнейшем планируется переход на 4-слойную плату, благодаря чему тактовая частота процессора будет увеличена с 40 МГц до максимального значения - 66 МГц. На базе модуля УПГИ планируется создание ряда цифровых устройств - "электронной книги", устройства тестирования для студентов и школьников, терминала для управления технологическими процессами. Средства разработки для микроконтроллеров ARM Таблица 3. Средства разработки программ для процессоров ARM
В таблице могут быть мелкие неточности, поэтому рекомендуем обратиться к файлу в формате .pdf Для процессоров ARM существует набор средств разработки (компиляторы, отладчики, интегрированные среды программирования), некоторые из них приведены в табл. 3. В связи с достаточно высокой стоимостью средств разработки, актуальной становится проблема поиска свободно распространяемого програм-много обеспечения. На интернет-сайте www.gnu.org можно получить компилятор GCC, который способен воспринимать исходный текст на различных языках высокого уровня (C, C++, Objective C, Chill, Fortran, Java) и переводить его в коды более чем 30 различных процессоров, в том числе и ARM. Набор программных средств разработки под ОС Linux содержит:
Вс╦ программное обеспечение доступно в виде исходных текстов на вышеупомянутом сайте GNU. Пакеты должны быть скомпилированы в надлежащей последовательности с необходимыми ключами. Более подробную информацию можно найти в [3]. В этой статье да╦тся описание операционной системы eCOS фирмы Red Hat, предназначенной для использования во встраиваемых системах и являющейся свободно распространяемым программным продуктом. Аппаратные средства отладки программ используют специализированные отладочные интерфейсы JTAG и ETM, реализованные в микроконтроллерах с ядром ARM. Интерфейс JTAG (Joint Test Action Group, стандарт IEEE 1149.1) предназначен для тестирования сложнофункцио-нальных микросхем, работающих в составе цифровых систем. Он также обеспечивает возможности отладки программного обеспечения. Интерфейс JTAG имеет следующие особенности:
Для работы с ARM-процессором по интерфейсу JTAG требуется целевая плата и инструментальный компьютер с соответствующим программным обеспечением. Необходимо также устройство, преобразующее сигналы от компьютера в сигналы интерфейса JTAG ≈ например, модуль Multi-ICE фирмы ARM, который подключается к ПК по интерфейсу RS-232. Более подробно возможности использования интерфейса JTAG описаны в [4]. Модуль ETM (Embedded Trace Macrocell) применяется для отладки сложных устройств на базе ARM, которые не имеют внешней шины. Связь с модулем ETM осуществляется через специальный порт Trace Port, который выда╦т сигналы, позволяющие определить, чем занят процессор в данный момент времени. Этот процесс называется трассировкой. Имеется возможность управлять трассировкой ≈ производить е╦ не постоянно, а на интересующих программиста участках кода, выводить не все данные, а только необходимые. Для этого в модуле ETM предусмотрены компараторы адреса и данных, сч╦тчики, фильтры и другие средства. Для работы с ETM требуется целевая система с выведенным портом Trace Port, компьютер с соответствующим программным обеспечением и преобразователь интерфейса, например, модуль Multi-Trace фирмы ARM. Подробное описание модуля ETM можно найти в [5]. Литература
|
Алексей пишет... Перезвоните мне пожалуйста 8(904) 332-62-08 Алексей. 01/09/2019 23:41:45 |
Алексей пишет... Перезвоните мне пожалуйста 8(812) 747-16-80 Алексей. 05/09/2019 14:30:27 |
Ваш комментарий к статье | ||||