Технология отладки «систем на кристалле»

серии «Мультикор»

, ,

ГУП НПЦ «ЭЛВИС», 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.  Аппаратные точки останова:

-  по заданному виртуальному адресу выборки команды или по попаданию в заданный диапазон таковых адресов, при этом может быть задано количество выполнения указанных условий, по достижении которого будет выполнен останов;

-  по заданному виртуальному адресу обращения к памяти с учетом вида обращения (только запись данных или только чтение данных или любое из них), или при обращении в заданный диапазон таковых адресов также с учетом вида обращения, при этом может быть задано количество выполнения указанных условий, по достижении которого будет выполнен останов;

-  по заданному виртуальному адресу выборки команды и по заданному виртуальному адресу обращения к памяти с учетом вида обращения. Останов происходит по событию, которое наступило раньше;

-  по заданному значению одного векторного исключения или любой выборкой из векторов исключений.

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;

-  выполнением в программе микроконтроллера команды BREAKD - команды входа в режим отладки. Для этого модифицируется исходная программа заменой штатной команды в требуемом логикой отладки месте на команду BREAKD.

Рис. 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;

Рис. 2. Структурная схема модуля OnCD

·  В силу того, что все последующие операции проводятся с использованием регистрового файла, необходимо предварительно снять и запомнить его исходное состояние, для этого выполняется 31 раз следующая последовательность действий:

один такт конвейера с предварительно занесенной командой перехода (Jamp Register, JR) в IRdec и затем чтение РС. В РС будет находится содержимое регистра регистрового файла, по которому был сделан переход. Заметим, что выполнение команд, занесенных в IRdec, здесь и в последующем должно сопровождаться занесением в РС адреса 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 порт.

Рис. 3. Схема соединения адаптера с JTAG портами микропроцессоров

Обобщенная последовательность действий при отладке программ для однопроцессорной системы представлена на рис. 4.

Приведенные в статье процедуры отладки далеко не исчерпывают всех возможных приёмов по отладке. Например, для отладки кэшируемых программ или программ, расположенных во флэш-памяти, в OnCD предусмотрены аппаратные точки останова, для наблюдения прохождения программы (без её модификации) по тактам продвижения конвейера с визуализацией состояния РС конвейера, регистра команд и любого объекта, адрес которого находится в адресном пространстве микроконтроллера, и многие другие сервисные функции, весьма полезные при отладочных операциях. Применение разработанных программных отладочных средств нижнего уровня, наряду с использованием инструментальной среды отладки программ MCStudio, предоставляет пользователям микроконтроллеров серии «Мультикор» широкие возможности по организации отладочных работ, как на уровне программ, так и на уровне аппаратуры.

Рис. 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).