| |
А. Емелин, И. Шагурин
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
| User, System |
FIQ |
Supervisor |
Abort |
IRQ |
Undefined |
| R0 (a1) |
R0 |
R0 |
R0 |
R0 |
R0 |
| R1 (a2) |
R1 |
R1 |
R1 |
R1 |
R1 |
| R2 (a3) |
R2 |
R2 |
R2 |
R2 |
R2 |
| R3 (a4) |
R3 |
R3 |
R3 |
R3 |
R3 |
| R4 (v1) |
R4 |
R4 |
R4 |
R4 |
R4 |
| R5 (v2) |
R5 |
R5 |
R5 |
R5 |
R5 |
| R6 (v3) |
R6 |
R6 |
R6 |
R6 |
R6 |
| R7 (v4) |
R7 |
R7 |
R7 |
R7 |
R7 |
| SP |
SP_fiq |
SP_svc |
SP_abt |
SP_irq |
SP_und |
| LR |
LR_fiq |
LR_svc |
LR_abt |
LR_irq |
LR_und |
| PC |
PC |
PC |
PC |
PC |
PC |
| CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
| |
SPSR_fiq |
SPSR_svc |
SPSR_abt |
SPSR_irq |
SPSR_und |
Сокращение длины команд повлияло также на разрядность содержащихся в них операндов. Непосредственные данные сокращены до 8 бит, адресные смещения в большинстве команд - до 5 бит. Однако обрабатываемые данные сохраняют 32-разрядный формат.
Состояние Thumb имеет ряд ограничений по системе команд, поэтому один и тот же алгоритм потребует для своей реализации большего количества инструкций, чем в состоянии ARM. Однако формат команд Thumb обеспечивает большую компактность программного кода, чем формат ARM. По данным фирмы ARM грамотное применение режима Thumb позволяет во многих случаях сократить объём кода на 35–40%. При использовании 8- или 16-разрядной внешней памяти производительность процессора в состоянии Thumb может оказаться выше, чем в состоянии ARM, за счёт меньшего количества обращений к памяти.
Обработка прерываний
При поступлении внешнего запроса прерывания или обнаружении ошибки процессор автоматически переходит в состояние ARM и начинает работу в соответствующем режиме: IRQ, FIQ, Abort или Undefinied. Последовательность его действий такова:
- Адрес возврата сохраняется в LR.
- Содержимое CPSR копируется в соответствующий регистр SPSR.
- В CPSR значения битов M4-0 устанавливаются в соответствии с новым режимом работы (IRQ, FIQ, Abortили Undefinied).
- Из размещённой в памяти таблицы векторов прерываний в PC загружается адрес первой команды обработчика прерывания.
В зависимости от алгоритма работы контроллера прерываний, могут быть также замаскированы некоторые исключения, возникновение которых может нарушить процесс обработки.
В системе команд ARM отсутствует специальная команда для выхода из обработчика прерывания. Для выполнения возврата программа должна выполнить следующие действия:
- Восстановить содержимое CPSR из SPSR.
- Разрешить прерывания, запрещённые при входе в обработчик.
- Загрузить в PC адрес возврата из регистра LR с помощью команды выхода из прерывания (табл. 1).
Таблица 1.Размещение векторов прерываний и команды выхода
| Адрес |
Вектор |
Команда выхода из прерывания |
| 0х00000000 |
Запуск (Reset) |
|
| 0х00000004 |
Неправильная команда |
MOVS PC, R14_und |
| 0х00000008 |
Программное прерывание |
MOVS PC, R14_svc |
| 0х0000000С |
Ошибка выборки инструкции |
SUBS PC, R14_abt, #4 |
| 0х00000010 |
Ошибка выборки данных |
SUBS PC, R14_abt, #8 |
| 0х00000014 |
— (резервировано) |
|
| 0х00000018 |
IRQ |
SUBS PC, R14_irq, #4 |
| 0х0000001С |
FIQ |
SUBS PC, R14_fiq, #4 |
В случаях выхода из режимов FIQ, IRQ, Abort может потребоваться коррекция адреса возврата. После обработки этих исключений процессор должен вернуться к выполнению команды, вызвавшей прерывание. В регистре LR хранится адрес следующей команды, поэтому при выходе из обработчика прерываний содержимое этого регистра следует скорректировать с помощью команды вычитания SUBS.
Ядро ARM7TDMI реализует 7 видов прерываний, которые перечислены ниже в порядке снижения их приоритета:
- Reset - реализуется при подаче сигнала запуска на внешний вывод процессора. Процессор переходит в режим Supervisor и начинает выполнение программы с адреса, размёщенного в первой ячейке памяти (адрес ячейки 0x00000000).
- Data abort - ошибка при обращении к данным (фиксируется контроллером прерываний). Процессор переходит в режим Abort.
- FIQ - реализуется при подаче сигнала прерывания на один из выводов nFIQ. Процессор переходит в режим FIQ. При поступлении данного прерывания в регистровом банке происходит переключение 7 регистров R8-R14 (рис. 2, часть 1), что позволяет сократить или исключить операции сохранения содержимого регистров в стеке. За счёт этого переход к обработке прерывания происходит быстрее.
 Рисунок 2. Структура контроллера S3C44B0X
- IRQ - возникает при подаче сигнала прерывания на один из выводов nIRQ. Процессор переходит в режим IRQ.
- Prefetch abort - ошибка при выборке команды (фиксируется контроллером прерываний). Процессор переходит в режим Abort.
- Undefined instruction - выборка неправильного кода команды. Процессор переходит в режим Undefined.
- Software interrupt - программное прерывание по команде SWI. Процессор переходит в режим Supervisor. Программные прерывания используются, как правило, для вызова функций ОС.
Вектора прерываний располагаются в памяти последовательно, начиная с нулевого адреса (табл. 1). Каждый вектор содержит 4 байта, которые являются адресами первой команды обработчика прерываний.
Отметим, что в табл. 1 отсутствуют вектора прерываний по запросам внешних устройств. Дело в том, что микроконтроллеры, реализуемые на базе ядра ARM7TDMI, имеют разнообразный набор периферийных устройств. Поэтому в состав микроконтроллера вводится контроллер прерываний, который транслирует запрос от любого периферийного устройства в запрос IRQ или FIQ. Далее программа-обработчик должна самостоятельно определить источник запроса, используя регистры контроллера прерываний. Пример реализации прерываний в микроконтроллере S3C44B0X фирмы Samsung приведён ниже.
Микроконтроллеры с ядром ARM и их применение
Ядро ARM в своих разработках используют многие известные фирмы - производители микросхем. Ограниченный объём статьи не позволяет рассказать о всех кристаллах этого класса, представленных на рынке. Основные характеристики нескольких широко используемых типов микросхем приведены в табл. 2, где использованы следующие обозначения:
- PWM - широтно-импульсный модулятор;
- WDT - сторожевой таймер;
- IrDA - инфракрасный последовательный порт;
- ADC(810) - 10-разрядный аналого-цифровой преобразователь, 8 входов;
- I2C - интерфейс, реализующий протокол Inter-Integrated Circuit;
- I2S - интерфейс, реализующий протокол Inter-IC Sound;
- CRT - контроллер ЭЛТ;
- LCD - контроллер ЖК-дисплея;
- RTC - часы реального времени;
- UART, USART - последовательные порты со стандартными асинхронным и универсальным (синхронным/асинхронным) протоколами обмена;
- SIO - синхронный последовательный интерфейс;
- FPU - сопроцессор обработки чисел с плавающей точкой;
- ISA - контроллер шины ISA;
- HDLC - контроллер, реализующий стандартный протокол обмена HDLC;
- PS/2 - стандартный порт для подключения мыши или клавиатуры;
- AudioCODEC - звуковой кодек;
- 32 bit Sound - последовательный интерфейс с ЦАП CD-качества.
Таблица 2. Микроконтроллеры с ядром ARM7TDMI
| Фирма |
Кристалл |
Частота, МГц |
Внутренняя память |
Периферийные устройства |
| Atmel |
AT91R40807 |
40 |
RAM 136K |
6 PWM, 2 USART, 3 таймера, WDT |
| AT91FR4081 |
40 |
RAM 136K, Flash 1M |
6 PWM, 2 USART, 3 таймера, WDT |
| Samsung |
S3C44B0X |
66 |
RAM 8K |
2 UART, IrDA, 5 таймеров, PWM, ADC(8x10), I2C, I2S, LCD |
| S3C4510B |
50 |
RAM 8K |
Ethernet, i2c, HDLC, 2 UART, 2 Timers |
| Cirrus Logic |
PS7500FE |
56 |
RAM 4K |
ISA, LCD, CRT, FPU, 2 PS/2, Timers, 32 bit Sound |
| EP7312 |
74 |
RAM 48K |
AudioCODEC, 2 UART, PWM, RTC, LCD |
| Oki |
ML670100 |
25 |
RAM 4K, ROM 128K |
6 таймеров, WDT, PWM |
| ML674001 |
33 |
RAM 4K, ROM 256K |
7 таймеров, 2 PWM, 2 UART, SIO, ADC (8x10) |
Некоторые фирмы (NEC, Toshiba, Texas Instruments) изготавливают системы с ядром ARM на заказ. В этом случае заказчику предоставляется возможность выбора периферии. Часто такие заказные микросхемы поставляются не как микроконтроллеры, а как "системы на кристалле" (System on Chip — SoC), так как они включают большой набор периферийных устройств, контроллеров и сопроцессоров, реализующих совместно с процессорным ядром функции законченной цифровой системы.
В качестве примера на рис. 2 показана структура микроконтроллера S3C44B0X фирмы Samsung [2]. Микроконтроллер содержит следующий набор периферийных устройств:
- контроллер внешней памяти ROM, SRAM, DRAM, SDRAM;
- контроллер прерываний;
- 2 канала прямого доступа к памяти DMA;
- контроллер ЖК-дисплея;
- 2 канала UART, совмещённых с IrDA и синхронным портом SIO;
- последовательные интерфейсы i2cи i2s;
- 5 таймеров, реализующих широтно-импульсную модуляцию (PWM);
- сторожевой таймер WDT, часы реального времени RTC;
- 8-канальный 10-разрядный АЦП.
Контроллер внешней памяти организует взаимодействие между процессорным ядром и памятью программ/данных. Память разбита на 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 возможных.
Для управления дисплеем контроллер использует внешние выводы:
- VFRAME - кадровая синхронизация;
- VLINE - строчная синхронизация;
- VCLK - байтовая синхронизация;
- VM - переменное напряжение для зажигания панели;
- VD [7..0] - данные.
Шесть 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 обусловлен следующими факторами:
- Обработка изображения требует применения высокопроизводительного процессорного ядра.
- Микроконтроллер S3C44B0X имеет в своём составе интерфейс ЖК-дисплея, что значительно упрощает структуру УПГИ.
- Применение батарейного питания требует использования в составе УПГИ контроллера с низким энергопотреблением.
- Последовательный порт контроллера S3C44B0X реализует режим IrDA, что позволяет организовать обмен по инфракрасному каналу без использования специального модулятора.
- Стоимость S3C44B0X составляет около 12 долларов, что обеспечивает низкую цену конечного изделия, предназначенного для массового применения.
- Для моделирования систем на базе S3C44B0X имеется недорогая плата развития SMDK41100, что позволяет сократить сроки и снизить стоимость разработки.
Функционирование модуля УПГИ организовано следующим образом. При включении питания процессор начинает выборку программы из стартового ПЗУ. Затем он переносит код программы в ОЗУ и запускает её. Программы небольшого объёма могут храниться в стартовом ПЗУ. Если объём программы превышает 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
| Продукт |
Назначение |
Цена, $ |
| ARM Developer Suit |
С/С++, ассемблер, линкер, отладчик, библиотеки. Графический интерфейс |
6 500 |
| Multi-ICE Interface Unit |
Модуль для отладки по интерфейсу JTAG |
3 500 |
| Multi-Trace |
Модуль для отладки по интерфейсу ETM |
4 500 |
| Evaluator-7T |
Оценочная плата |
249 |
| Integrator |
Набор плат, отличающихся составом периферийных устройств и функциональными возможностями |
800–14000 |
Для процессоров ARM существует набор средств разработки (компиляторы, отладчики, интегрированные среды программирования), некоторые из них приведены в табл. 3.
В связи с достаточно высокой стоимостью средств разработки, актуальной становится проблема поиска свободно распространяемого програм-много обеспечения. На интернет-сайте можно получить компилятор GCC, который способен воспринимать исходный текст на различных языках высокого уровня (C, C++, Objective C, Chill, Fortran, Java) и переводить его в коды более чем 30 различных процессоров, в том числе и ARM. Набор программных средств разработки под ОС Linux содержит:
- компилятор GCC;
- набор дополнительных средств разработки BinUtils;
- отладчик GDB;
- библиотека NewLib или GLibC.
Всё программное обеспечение доступно в виде исходных текстов на вышеупомянутом сайте GNU. Пакеты должны быть скомпилированы в надлежащей последовательности с необходимыми ключами. Более подробную информацию можно найти в [3]. В этой статье даётся описание операционной системы eCOS фирмы Red Hat, предназначенной для использования во встраиваемых системах и являющейся свободно распространяемым программным продуктом.
Аппаратные средства отладки программ используют специализированные отладочные интерфейсы JTAG и ETM, реализованные в микроконтроллерах с ядром ARM.
Интерфейс JTAG (Joint Test Action Group, стандарт IEEE 1149.1) предназначен для тестирования сложнофункцио-нальных микросхем, работающих в составе цифровых систем. Он также обеспечивает возможности отладки программного обеспечения. Интерфейс JTAG имеет следующие особенности:
- подключение осуществляется через специальный 6-проводной порт;
- для отладки используются тестовые блоки, встроенные в процессорное ядро, и входящая в его состав макроячейка EmbeddedICE, которая позволяет контролировать точки останова процессора;
- процесс отладки не отнимает ресурсов у программы пользователя: вся память, порты и прерывания остаются в его распоряжении;
- в программу не требуется вносить какие-либо изменения, чтобы обеспечить возможность её отладки;
- реализуются все стандартные возможности отладки, включая останов программы в контрольных точках.
Для работы с 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].
Литература
- An Introduction to THUMB. ARM Limited, 1995.
- S3C44B0X RISC Microprocessor User’s Manual. Samsung Electronics, 2001.
- Емец С. Использование свободных программных средств для разработки встраиваемых систем на основе 32-разрядных RISC-процессоров // Компоненты и технологии. 2000. № 6,7.
- Application note № 28. The ARM7TDMI Debug Architecture. ARM Limited, 1995.
- Embedded Trace Macrocell Specifi-cation. ARM Limited, 1999–2001.
|