Перекин Р - MES conference

advertisement
ТЕХНОЛОГИЯ ОТЛАДКИ «СИСТЕМ НА КРИСТАЛЛЕ»
СЕРИИ «МУЛЬТИКОР»
Р.Н. Перекин, В.Д. Глушков, А.В. Глушков, В.Ф. Никольский
ГУП НПЦ «ЭЛВИС», sectetary@elvees.com
Сигнальные микроконтроллеры серии «Мультикор» с двухпроцессорной организацией:
центральным процессором (Central Processing Unit, CPU) и сопроцессором обработки сигналов
(Digital Signal Processor, DSP), с развитым и многообразным внешним интерфейсом, по сути,
являются системами на кристалле. Проектирование отладочных средств для таких систем
сталкивается со значительными трудностями, обусловленными закрытостью доступа к внутреннему
системному интерфейсу внутри кристалла, и недостаточной эффективностью применения
традиционных программных механизмов - программных мониторов, подключаемых к системе через
специально выделенный канал, например, RS-232 [1], и базирующихся на модификации программ
пользователя вставкой точек останова с последующим выполнением процедур исключений.
Для микроконтроллеров серии «Мультикор» разработаны программно-аппаратные средства,
обеспечивающие построение эффективных систем отладки программ в составе инструментального
программного обеспечения сигнальных микроконтроллеров серии «Мультикор» и начальную отладку
аппаратуры пользователя.
Основная часть аппаратной составляющей средств отладки встроена внутрь
микроконтроллера, именуемая сокращенно On Chip Debugger (OnCD), и имеющая интерфейс Joint
Test Action Group (JTAG) [2]. Другая аппаратная часть относится к средствам связи с внешним
компьютером и действует как адаптер, который с одной стороны интерпретирует команды внешнего
компьютера, выдаваемые им по одному из стандартных каналов, например, параллельному порту, а с
другой стороны действует, как JTAG драйвер. Применение адаптера обусловлено необходимостью
обеспечения требуемой пропускной способности канала передачи информации от командного
компьютера в JTAG интерфейс и выполнением требований синхронного протокола передачи
информации по этому интерфейсу.
Программная компонента средств отладки размещается и действует во внешнем командном
компьютере. Передача информации из командного компьютера в JTAG порт OnCD производится по
кадрам. В данном случае под кадром понимается совокупное выполнение следующих четырех фаз
информационных обменов. Первая фаза - побайтная запись в адаптер информации (команды и/или
данных) через стандартный порт, которую необходимо записать в микроконтроллер через JTAG порт.
Вторая фаза - выдача компьютером команды адаптеру на передачу этой информации в
последовательном коде в JTAG порт. Третья фаза - передача новой информации и одновременно
прием адаптером выдаваемой JTAG портом информации. Четвертая фаза - чтение из адаптера
внешним компьютером принятой из JTAG порта информации.
Для построения OnCD используется инфраструктура (тестовая логика), определенная
стандартом IEEE 1149.1 [2], при этом обеспечивается выполнение обязательных функций
тестирования связей между микросхемами в составе платы, в основном это операции с
периферийным сканирующим регистром (Boundary-Scan Register, BSR), и включается
дополнительная тестовая логика и дополнительные регистры тестовых данных, доступ к которым
разрешается добавленными для этого инструкциями пользователя. Дополнительные регистры
тестовых данных могут содержать командную информацию, используемую для организации
встроенных процедур.
OnCD имеет развитую сложную структуру и обеспечивает отладку программ CPUпроцессора и DSP-сопроцессора, как по отдельности, так и одновременно и синхронизировано с
полной визуализацией внутренних состояний их регистров и памятей.
Ниже перечислены пользовательские функции, лежащие в основе процедур отладки
программ.
Функции отладчика, относящиеся к RISC-процессору.
1. Аппаратные точки останова:
 по заданному виртуальному адресу выборки команды или по попаданию в заданный
диапазон таковых адресов, при этом может быть задано количество выполнения указанных
условий, по достижении которого будет выполнен останов;
 по заданному виртуальному адресу обращения к памяти с учетом вида обращения (только
запись данных или только чтение данных или любое из них), или при обращении в
заданный диапазон таковых адресов также с учетом вида обращения, при этом может быть
задано количество выполнения указанных условий, по достижении которого будет
выполнен останов;
394

по заданному виртуальному адресу выборки команды и по заданному виртуальному адресу
обращения к памяти с учетом вида обращения. Останов происходит по событию, которое
наступило раньше;
 по заданному значению одного векторного исключения или любой выборкой из векторов
исключений.
2. Одношаговое выполнение конвейера команд, которое используется отладчиком для
организации выполнения программы по одной команде.
3. Доступ к регистру команд по чтению и записи. При необходимости выполнение новой
команды с сохранением состояния процессора, зафиксированного при останове. Эта функция
совместно с одношаговым выполнением конвейера команд используется для визуализации
состояния регистров и памяти системы, не проецирующихся в её адресное пространство, без
модификации отлаживаемой программы в памяти. Например, чтение регистрового файла с
сохранением или занесением в него нового значения.
4. Доступ к счётчику команд (Program Counter, PС) по чтению и записи. При необходимости
выполнение операций с заданным адресом, например, пуск на выполнение программы с
указанного адреса.
5. Чтение регистров РС конвейера: регистров адреса команды, находящихся соответственно на
стадиях декодирования (Program Counter decode, PCdec), исполнения (Program Counter
execute, PCexe), обмена с памятью (Program Counter memory, PCmem), записи в регистровый
файл (Program Counter write back, PCwb).
6. Доступ (запись или чтение данных) ко всему адресному пространству микроконтроллера.
7. Выполнение заданного числа команд в исполняемой программе.
8. Останов RISC-процессора при достижении программой DSP-сопроцессора заданной точки
останова или выполнении им заданного числа команд. Этот механизм используется при
совместной отладке программ RISC и DSP-процессоров.
Функции отладчика, относящиеся к DSP-сопроцессору.
Регистры аппаратных средств отладки DSP-сопроцессора, размещены в адресном
пространстве памяти со всеми возможностями доступа к ним, описанными выше. С помощью этих
регистров для DSP-сопроцессора может быть задан:
 останов выполнения программы при достижении заданного адреса команды;
 останов выполнения программы при выполнении заданного числа команд;
 останов выполнения программы при достижении заданного адреса команды или при
выполнении заданного числа команд;
 пуск на выполнение программы и контроль её окончания при остановленном RISCпроцессоре. Это свойство позволяет автономно отлаживать программы DSP-сопроцессора.
Блок-схема JTAG порта и модуля OnCD приведена на рис. 1. В блок-схеме можно выделить
две части: собственно отладочные средства (модуль OnCD) и логику, поддерживающую стандарт
IEEE 1149.1 (остальная часть, кроме модуля OnCD), которая называется Test Access Port (TAP) [2].
Согласно стандарту IEEE 1149.1 в ТАР присутствуют модуль Test Access Port Controller (TAP ctrl),
представляющий собой по сути автомат на 16-состояний, регистр команд (Instruction Register, IR),
одноразрядный сдвиговый регистр (Bypass), идентификационный регистр (ID Register) и BSR.
Структурная схема модуля OnCD представлена на рис. 2. На структурной схеме модуля
OnCD представлены регистры и логические блоки, составляющие основу модуля.
Регистры, доступные как в OnCD, так и в RISC процессоре, реализуются в двух вариантах.
Если изменение информации в регистре при его загрузке не влияет на состояние модуля OnCD или
микроконтроллера, то такой регистр реализуется, как чисто сдвиговый регистр, в противном случае
регистр реализуется «двухэтажным». Первый «этаж» - это сдвиговый регистр, а второй параллельный регистр, информация в который заносится одномоментно из сдвигового регистра во
время фазы Updata_DR автомата, находящегося в модуле TAP ctrl . Чтение информации из
параллельного регистра в последовательный регистр осуществляется в фазе Capture_DR автомата в
TAP ctrl, а затем выводится в последовательном коде из сдвигового регистра в фазе Shift_DR
автомата в TAP ctrl во время записи в него нового кода. Запись в регистры осуществляется по входу
Test Data Input (TDI), а чтение через выход Test Data Output (TDO).
В алгоритме отладки программ используются следующие процедуры.
1. Процедура первоначального перевода микроконтроллера в режим отладки. Обычно это
осуществляется:
 при начальном включении микроконтроллера и действии системного сигнала RESET
подачей команды DEBUG_REQUEST. После обнаружения внешним компьютером факта
вхождения микроконтроллера в режим отладки сигнал RESET снимается;
 во время штатной работы программы микроконтроллера выполнением команды
DEBUG_REQUEST;
395

выполнением в программе микроконтроллера команды BREAKD - команды входа в режим
отладки. Для этого модифицируется исходная программа заменой штатной команды в
требуемом логикой отладки месте на команду BREAKD.
CPU
OnCD модуль
TAP
MUX
Boundary Scan Register
Bypass
ID Register
3
TDI
2
1
0
4-Bit Instruction Register (IR)
MUX
Decoder
TDO
TMS
TCK
TRST
TAP
Ctrl
RESET
Рис. 1. Блок-схема JTAG порта и модуля OnCD
2. Процедура загрузки в OnCD модуль условий останова исполняемой программы в
контрольных точках и пуск программы на исполнение.
3. Процедура сканирования состояния микроконтроллера во время исполнения программы и
определение момента перехода микроконтроллера в режим отладки.
4. Процедура индикации состояния микроконтроллера на момент останова. По способу доступа
индицируемые компоненты подразделяются на:
 регистры, непосредственно доступные по каналу TDI-TDO. Это регистры конвейера РС
(PC, PCdec, PCexe, PCmem, PCwb), регистр команд (Instruction Register decode, IRdec);
 регистры и ячейки памяти, которые проецируются в адресное пространство памяти
микроконтроллера. Эти компоненты доступны без вмешательства в конвейер команд
посредством контроллера памяти модуля OnCD;
 регистры и ячейки памяти, которые не проецируются в адресное пространство памяти
микроконтроллера и доступны посредством выполнения команд в RISC-процессоре. К
таковым относятся, например, регистры Системного Управляющего Сопроцессора (CP0) в
RISC-процессоре, регистры регистрового файла и т.п. Для снятия состояния этих
компонентов используется следующий механизм:
 в режиме исполнения команд по тактам конвейера производится выполнение команд,
находящихся в конвейере (за исключением команды, находящейся на стадии
декодирования) путем выполнения пяти тактов с принудительным заполнением регистра
команд IRdec NOP операцией. Это является также очисткой конвейера команд и
искусственным разделением программы на полностью выполненную до точки останова и
невыполненную после точки останова части. Отметим, что статус выполнения команд
при этом не меняется. Для того чтобы не возникло исключение эти пять тактов
выполняются при установленном в статусном регистре OSCR в модуле OnCD
необходимого флага, а в регистр РС каждый раз заносится адрес 0хbfc0_0000;
396
IRdec
PCwb
PCmem
PCexe
PCdec
PC
MEM_Ctr
OMAR, OMDR
DOUT_OnCD
DIN_OnCD
WRITE
READ
RDY
R
I
S
C
TDO
TRACE Logic
OTC
ISTRACE
PC[31:0]
ABUS[31:0]
WR
RD
BP Logic
OMLR0, MLR1,
OMBC, OBCR
M
U
X
R
I
S
C
ISBPT
OSCR
Trv_num[2:0]
EXC
Vector BP Lgic
ISVBP
TDI
IRd
Instraction OnCD
TCK
Cpt_DR
Sh_DR
Updt_DR
DEBUG_EN
reset
Contrl
Signals
Ctr_Stall_DB
Ctr_OnCD
Sel
GO
DEBUG_Req
Stall_DB
Stall_CPU
BREAKD
RUN
BP_dsp
R
I
S
C
DSP
Рис. 2. Структурная схема модуля OnCD

В силу того, что все последующие операции проводятся с использованием регистрового
файла, необходимо предварительно снять и запомнить его исходное состояние, для этого
выполняется 31 раз следующая последовательность действий:
один такт конвейера с предварительно занесенной командой перехода (Jamp Register, JR)
в IRdec и затем чтение РС. В РС будет находится содержимое регистра регистрового
файла, по которому был сделан переход. Заметим, что выполнение команд, занесенных в
IRdec, здесь и в последующем должно сопровождаться занесением в РС адреса
397
0хbfc0_0000. (Это начальный адрес программы, выполняемой RISC-процессором после
снятия сигнала RESET. Адрес - не транслируемый и не кэшируемый и всегда обеспечен
системой). Перед началом снятия состояния регистрового файла в регистре OSCR
устанавливаются необходимые флаги, которые блокируют возникновение исключений,
связанных с трансляцией виртуальных адресов, появляющихся в счетчике команд PC при
последующих операциях, и блокирует возникновение исключений из-за невыравненных
на границу слова адресов в РС и прерываний. После этого процессор готов для
выполнения команд, заносимых в IRdec и необходимых для индикации (или изменения)
состояний регистров;

выполняются привилегированные команды по чтению системных регистров в
регистровый файл (при необходимости можно также менять в них информацию).
Выполняются эти команды следующим образом. Заносится в IRdec требуемая команда, а
в РС адрес 0хbfc0_0000, после чего конвейер команд продвигается на пять шагов,
заполняя на каждом шаге, начиная со второго, в IRdec NOP операцию, а в РС адрес
0хbfc0_0000. Чтение информации из регистрового файла производится так же, как
описано выше.
5. Процедура восстановления состояния микроконтроллера. Восстанавливается конвейер РС (на
фоне NOP команд), а затем заносится команда в IRdec, которая была на момент останова.
Загружаются в модуль OnCD новые условия останова исполняемой программы, и
производится пуск программы на исполнение.
В микроконтроллерах серии «Мультикор» предусмотрена возможность отладки программ в
многопроцессорной системе. Адаптер может обеспечить отладку многопроцессорной системы, в
которой применяется до восьми микроконтроллеров серии «Мультикор». Схема соединения адаптера
для многопроцессорной системы с JTAG портами микропроцессоров приведена на рис. 3.
При отладке адаптер обеспечивает следующие функции:
 в каждый процессор индивидуально загрузку программы, данных, условий останова;
 одновременный запуск всех микропроцессоров на выполнение задания;
 сканирование состояния системы на признак её останова по заданным условиям. Отметим,
что останов всей системы при выполнении условий останова хотя бы в одном из
микропроцессоров, обеспечивается встроенными в микропроцессор средствами отладки
через сообщение по двунаправленному выводу Debug Enable (nDE);
 одновременный останов микропроцессоров по требованию адаптера через JTAG порт.
Мультикор №1
Мультикор №8
nDE
IBM PC
TDI TMS TDO TCK
nDE
TDI TMS TDO TCK
Адаптер
TDI
TMS [7:0]
TDO [7:0]
TCK
Рис. 3. Схема соединения адаптера с JTAG портами микропроцессоров
Обобщенная последовательность действий при отладке программ для однопроцессорной
системы представлена на рис. 4.
Приведенные в статье процедуры отладки далеко не исчерпывают всех возможных приёмов
по отладке. Например, для отладки кэшируемых программ или программ, расположенных во флэшпамяти, в OnCD предусмотрены аппаратные точки останова, для наблюдения прохождения
программы (без её модификации) по тактам продвижения конвейера с визуализацией состояния РС
конвейера, регистра команд и любого объекта, адрес которого находится в адресном пространстве
микроконтроллера, и многие другие сервисные функции, весьма полезные при отладочных
операциях. Применение разработанных программных отладочных средств нижнего уровня, наряду с
использованием инструментальной среды отладки программ MCStudio, предоставляет пользователям
микроконтроллеров серии «Мультикор» широкие возможности по организации отладочных работ,
как на уровне программ, так и на уровне аппаратуры.
398
Начало
Запрос режима отладки под системным сигналом RESET
нет
режим отладки ?
да
Снятие состояния микроконтроллера после системного
сигнала RESET
Загрузка отлаживаемой программы в память
Задание контрольных точек останова программы, запуск
программы на исполнение с контролем точек останова
режим отладки ?
нет
да
Снятие состояния микроконтроллера после остановки
программы, анализ полученных результатов
продолжить
отладку без коррекции
программы?
да
нет
Коррекция и компиляция программы
да
продолжить
отладку после коррекции
программы?
нет
Конец
Рис. 4. Блок-схема процедуры отладки программы
ЛИТЕРАТУРА
1.
Михаил Гук. Аппаратные средства IBM PC. Энциклопедия. Издательство «Питер», 2000. – 816 с.
2.
IEEE Standard Test Access Port and Boundary-Scan Architecture IEEE Std 1149.1-2001 (Revision of
IEEE Std 1149.1-1990).
399
Download