ООО ЭФО
Поиск по складу
Программа поставок 2016
Сегодня
www.powel.ru
источники питания
www.korpusa.ru
конструктивы и корпуса РЭА
www.wless.ru
беспроводные технологии
www.mymcu.ru
микроконтроллеры
altera-plis.ru
микросхемы Altera
www.infiber.ru
волоконно-оптические
компоненты в
промышленности
www.efo-power.ru
силовая электроника
www.efo-electro.ru
электротехническая
продукция
www.efometry.ru
контрольно-измерительные приборы
www.golledge.ru
кварцевые резонаторы и генераторы Golledge
www.sound-power.ru
профессиональные усилители класса D
Поиск по сайту
Подписка на новости

Система менеджмента
качества сертифицирована на соответствие требованиям:
ISO 9001, ГОСТ Р ИСО 9001 и СРПП ВТ - подтверждено сертификатами соответствия в системах сертификации Русского Регистра, ГОСТ Р, международной сети IQNet, "Оборонсертифика" и "Военный Регистр".

ООО "ЭФО" в 2011г. получило Лицензию Федеральной службы по экологическому, технологическому и атомному надзору на изготовление оборудования для ядерных установок.


Rambler s Top100



ChipFind - поисковая система по электронным компонентам
EEN
webmaster
Санкт-Петербург: (812) 327-86-54  zav@efo.ru Москва: (495) 933-07-43  moscow@efo.ru Екатеринбург: (343) 278-71-36  ural@efo.ru Пермь: (342) 220-19-44  perm@efo.ru
Казань: (843) 518-79-20  kazan@efo.ru Ростов-на-Дону: (863) 220-36-79  rostov@efo.ru Н. Новгород: (831) 434-17-84  nnov@efo.ru Новосибирск: (383) 286-84-96  nsib@efo.ru
о нас склад библиотека статьи
 
Отладка аппаратно-программного обеспечения реконфигурируемых систем на кристалле семейства A7 фирмы Triscend
Виктор Березин 
Роман Золотухо 
Шакиб Фахми
 
bvv73@mail.ru
roman@efo.ru
SSFahmi@mail.eltech.ru
Журнал "Компоненты и технологии" N7 2003г.

Использование эффективных средств отладки и верификации протекающих программно-аппаратных процессов значительно ускоряет цикл проектирования устройств цифровой обработки сигналов. Особенно это характерно для устройств класса реконфигурируемая система на кристалле [1, 2], объединяющей в себе такие узлы, как микропроцессор, память, массив программируемой логики, набор периферийных устройств, соединенные несколькими внутренними шинами обмена.

В состав системы на кристалле A7 фирмы Triscend входит встроенный контроллер JTAG-интерфейса, подключаемый через внешний аппаратный модуль к компьютеру, на котором происходит разработка аппаратного и программного обеспечения. Контроллер JTAG-интерфейса способен выполнять роль мастера шины и применяется, совместно с внешними инструментальными средствами, для отладки целевого программного и аппаратного обеспечения, обеспечивая при этом следующие возможности:

  • управления основными состояниями системы на кристалле;
  • обеспечение пошагового выполнения инструкций процессораного ядра ARM7TDMI;
  • задание аппаратных точек останова ;
  • загрузка аппаратно-программной конфигурации в различные виды памяти (как внутренней, так и внешней);
  • просмотр и модификация содержимого памяти (как внутренней, так и внешней), системных регистров, регистров процессора и адресных селекторов.

Тестирование и отладку системы на кристалле А7 можно проводить и традиционными средствами, однако встроенные аппаратные ресурсы позволяют это делать значительно эффективнее.

Система на кристалле А7 для целей отладки имеет два независимых блока прерываний по контрольным точкам (breakpoint unit - BPU):

  • cобственно BPU устройства А7, включающий две независимые аппаратные точки останова, называемые tracepoint, с возможностью ведения журнала пересылок (транзакций) trace. При этом возможно отслеживание разнообразных транзакций как на системной шине (CSI Bus), так и на локальной шине процессора (Local Bus). Этот блок конфигурируется в в пункте меню Tracepoint Dialog утилиты FastChip Device Link (FDL) ;
  • блок точек останова из состава ядра ARM7TDMI, согласно спецификации ARM EmbeddedICE. Он также обеспечивает две независимые аппаратные точки останова, но при этом анализируются транзакции только на внутренней локальной шине ARM. Этот блок конфигурируется в пункте меню Breakpoint Dialog утилиты FastChip Device Link (FDL).

Наиболее развитым из блоков отладки является собственный BPU устройства А7, который позволяет в реальном времени обнаруживать следующие условия:

  1. cовпадение состояния шины (Address Bus) с заданным разработчиком значением регистра Address Compare, с учетом ограничений задаваемой в регистре маскирования Address Mask ;
  2. совпадение состояния шины данных (Data Bus) с аналогичными задаваемыми параметрами Data Compare и Data Mask.
Табл. 1. Виды транзакций на шине, селектируемые BPU
N Вид транзакции Условие анализа транзакции
1 Memory Read Любой цикл чтения памяти
2 Memory Write Любой цикл цикла записи в память
3 ARM Read Обращение ядра ARM по чтению данных
4 ARM Write Обращение ядра ARM по записи данных
5 DMA Memory Read Чтение по шине CSI Bus, вызванное внутренним контроллером DMA
6 DMA Memory Write Запись по шине CSI Bus, вызванное внутренним контроллером DMA
7 CSL Event Процессы на шине CSI Bus, вызванные событиями в матрице CSL

Для целей отладки можно определить как режим обнаружения совпадений условий 1 и 2 (Match), так и несовпадения (Not Match), при котором производится увеличение счетчика Count выбранных признаков тестирования. Установка внутреннего триггера останова по контрольной точке (TPEvent) происходит в простейшем случае при установке триггера Tracepoint, что достигается при совпадении содержимого счетчика Count и заданного разработчиком значения TPCounter. Кроме этого, аппаратный блок отслеживает задаваемые конкретные типы транзакций. Для системной шины (CSI Bus), процессы на которой протекают с арбитражем нескольких активных ведущих устройств, может быть задана и раздельно обнаружена любая транзакция из табл. 1. В зависимости от задачи отладки разработчик может выбрать для анализа интересующий вид транзакции. Для внутренней локальной шины процессора ARM может быть задано обнаружение только транзакции чтения (CPU Read) или записи (CPU Write) процессорного ядра. Маскирование заключается в проведении поразрядной операции "И" 32-х битной шины (адреса или данных) и регистра маски. Единица в соответствующем разряде регистра маски приводит к участию этого разряда шины в сравнении с регистром (Address Compare или Data Compare), если же разряд регистра маски равен нулю, то этот бит шины исключается из сравнения. Например, для исключения из анализа на точку останова содержимого шины данных необходимо задать значения регистров Data Compare и Data Mask равными нулю. Такой механизм позволяет задавать сложные условия обнаружения состояний шин адреса и данных. Упрощенная блок-схема одного канала узла аппаратной точки останова приведена на рис. 1.

Блок-схема
Рис. 1. Блок-схема узла аппаратной точки останова

По обнаружению заданных условий отладки триггер контрольной точки TPEvent устанавливается, что вызывает заранее заданную разработчиком реакцию, перечень которых приведен в табл. 2. С целью отладки может быть выбран любой набор условий поведения системы на кристалле при установленном триггере, но реакция 3 и 4 не может быть задано одновременно, что является очевидным, т.к. процессор не может вызывать прерывания, будучи остановленным.

Табл. 2. Типы реакций системы при достижении условий останова
N Реакция на точку останова Характеристика действия
1 CSL Freeze Блокировка работы глобальных буферов матрицы программируемой логики CSL
2 CSL Match Формирование аппаратного выходного сигнала для целей отладки
3 CPU Freeze Формирование сигнала, останавливающее ядро ARM после выполнения текущей инструкции
4 CPU Interrupt Формирование сигнала прерывания процессора ARM
5 Arbitration Freeze Останов схемы арбитража активных устройств на шине
6 BCLK Freeze Прекращение подачи системной частоты в матрицу программируемой логики CSL

Как было отмечено выше, в состав встроенного BPU системы A7 входит две независимые точки останова Tracepoint0 и Tracepoint1, при этом логика установки триггера TPEvent допускает условную работу с целью выработки нетривиального сигнала останова. Так, например, разработчик может выбрать режим, при котором контрольная точка Tracepoint0 разрешает работу контрольной точки Tracepoint1, при этом формирование триггера TPEvent будет задано следующим аппаратно работающем в реальном времени алгоритмом:

while (TP0Counter != Count0)
{ TP1Counter = 0;
}
TPEvent = (TP1counter == Count1);

Отладчик BPU A7 позволяет аппаратно накапливать в реальном времени информацию о происходящих на системной шине транзакциях, определенных условиями контрольной точек. Для хранения такой информации организуется журнал, располагающийся в старших 8 KB встроенной оперативной памяти на кристалле. Чтение этого журнала производится по инициативе разработчика при отладке системы.

Анализ встроенного в А7 устройства BPU и его практическое использование позволяет сделать заключение об эффективности интегрированных инструментальных средств для отладки не только программного (исполняемого кода ARM процессора), но и аппаратного (конфигурации матрицы приграммируемой логики CSL) окружения. Так JTAG-модуль позволяет производить чтение и запись не только произвольного адреса памяти, но и чтение и возможную модификацию цепей во встроенной матрице прогаммируемой логики. Для динамических процессов в матрице CSL такой асинхронный мониторинг имеет прежде всего качественный результат - например можно узнать, работает ли размещенный в FPGA матрице счетчик, периодически считывая его значение по запросу из программного средства отладки. В случае же останова системы на кристалле по контрольной точке разработчик имеет возможность провести анализ статической картины сигналов внутри матрицы CSL.

Для иллюстрации вышесказанного проведем отладку программно-аппаратного проекта для реконфигурируемой системы на кристалле А7. Разместим в матрице программируемой логики (CSL) кристалла A7 восьмиразрядный счетчик Counter, на тактовый вход которого поступает системная частота. Выходы этого счетчика CountData[7:0] подключены ко входам программно-доступного регистра StatusReg, содержимое которого будет считываться программным обеспечением. В момент обращения к данному регистру сформируем выходной сигнал на выводе LedOut для индикации работы. При реализации проекта воспользуемся готовыми библиотечными аппаратными модулями, предоставляемыми системой проектирования FastChip, на рис. 2.а изображена конфигурация и электрические связи счетчика Counter, на рис. 2.б и 2.в - программно доступного регистра StatusReg и выходного элемента LedOut соответственно. На рис. 3 взаимосвязи указанных модулей отражены в САПР FastChip. Заметим, что конфигурацию аппаратной части можно определить и на языке описания аппаратуры (VHDL, Verilog), такое задание не отразится на процессе отладки.


Рис. 3. Взаимосвязи аппаратных элементов проекта

После проведения этапов размещения и разводки в среде FastChip будет образован файл конфигурации аппаратной части debug.csl. Также в FastChip производится генерация заголовочного файла debug.h, в котором содержатся адресные константы, в нашем случае в нем содержится адрес регистра StatusReg.

#define StReg 0x100ffffc /* size in byte(s) = 1, lane = LANEB0 */

Разработку программного обеспечения для ядра процессора ARM выполним на языке высокого уровня С. Ниже приведен текст программы.

#include "..\debug.h"
int main ()
{ volatile unsigned char Flag;
volatile unsigned int Result;
while(1)
{ Flag = *(volatile unsigned char*)StReg * 1000;
Result = Flag;
}
}

В заголовочном файле debug.h определен адрес программно-доступного регистра StatusReg, программа в бесконечном цикле считывает этот регистр и формирует результат умножая его значение на 1000. В результате компиляции получаем файл debug.hex, содержащий исполняемый код для ядра ARM.

С целью иллюстрации процесса отладки программное и аппаратное обеспечение имеет простейший вид, аппаратная реализация занимает менее 0.5 % отведенных ресурсов кристалла TA7S20-60QC, а программное обеспечение функции main() транслируется в 28 байт кода. При помощи утилиты FastChip Device Link (FDL), входящей в пакет FastChip, производится создание и загрузка по JTAG-интерфейсу конфигурационного файла debug.cfg, объединяющего в себе аппаратную конфигурацию debug.csl и исполняемый код debug.hex. Также при помощи этой утилиты будем производить отладку проекта.

Пусть цель отладки состоит в останове и анализе процессов в системе на кристалле после трех программных считываний регистра StatusReg. Заметим, что значения счетчика Counter изменяется непрерывно с системной тактовой частотой, программный же цикл состоит из нескольких периодов тактовой частоты, число которых связано со многими факторами (настройки компилятора, оптимизация, тип и быстродействие внешней памяти, настройка кэш-памяти и т.д.), поэтому можно утверждать, что последовательные считывания из регистра StatusReg не будут отличаться на единицу (за аппаратным счетом не угнаться даже ARM-у).

Загрузим файл debug.cfg в целевое устройство, затем при помощи осциллографа измерим периодичность сигнала обращения к программно-доступному регистру StatusReg. При системной частоте 40 МГц программный цикл, включающий считывание регистра и умножение на 1000, прокручивается за 350 нс. Во время обращения к регистру на выводе системы на кристалле формируется импульс положительной полярности и длительностью один такт частоты синхронизации 25 нс. Далее, в утилите FDL настроим параметры точки останова как показано на рис. 4.


Рис. 4. Настройка параметров точки останова

В целях отладки мы анализируем следующие параметры:

  • обращения ядра ARM по чтению (ARM Read) ;
  • обращение по адресу 0x100ffffc (регистр StatusReg, реализованный в матрице CSL) с учетом всех разрядов Address Mask = 0xFFFFFFFF ;
  • значение шины данных любое (Data Compare = Data Mask = 0xFFFFFFFF) ;
  • включаем триггер события TPEvent по накоплению трех описанных транзакций (Count = 3) ;
  • при обнаружению условий контрольной точки останавливаем процессор (CPU Freeze).

После определения этих таких настроек и пересылки их по JTAG-интерфейсу в целевое устройство, отладчик практически мгновенно переводит систему A7 в режим останова, тем самым сигнализируя, что заданные условия достигнуты. Произведем чтение аппаратного журнала трассировки, его содержимое отражено на рис. 5.


Рис. 5. Вид аппаратного журнала трассировки

Заметим, что информация этого журнала накапливалась в режиме реального времени в целевом устройстве, внешние инструментальные средства только задавали конфигурацию накопления. Журнал трассировки TraceDump содержит разнообразную исчерпывающую информацию о виде транзакции, состояния шин в момент пересылки, размеров пересылаемых данных и т.д. В частности, анализируя конкретный журнал событий можно сделать следующие выводы:

  • было проведено три операции чтения байта по адресу 0x100ffffc;
  • ввиду синхронности шины чтение производилось за два такта : на первом такте установка адреса, на втором - снятие данных;
  • ядро ARM обращалось к непосредственным данным, минуя кэш-память;
  • последовательные значения счетчика системной частоты, доступного через регистр составляли 0xFD, 0x0B, 0x19.

Легко можно подсчитать, что за время одного программного цикла (350 нс), внутренний аппаратный счетчик увеличивает свое значение на 0x19 - 0x0B = 14, следовательно, период системной частоты равен 350 нс / 14 = 25 нс, что с точностью до осциллографических измерений указывает на системную тактовую частоту 40 МГц.

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


Рис. 6. Вид окна отладки утилиты FastChip Device Link

На рис. 6 приведено содержимое окна отладки (Debug watch), при этом видно, что в качестве объектов отладки выступают не только традиционные регистры, но и электрические цепи, в том числе как заданные на этапе проектирования (CountData[7:0]), так и определяемые как результат машинного синтеза и реализации (Counter.sum[7:0], Counter.carry[6:0]) алгоритма функционирования. Инструментальные средства отладки позволяют на этапе загрузки проекта в целевое устройство вычленить список цепей, регистров и других встроенных или синтезируемых объектов и предоставить их разработчику для выбора.

Модель взаимодействия микроконтроллера со встроенным отладчиком и работа под управлением внешней программной среды отладки достаточно удачно отражена в работе [4]. Безусловно, как отмечено авторами [4], снаружи системы на кристалле имеется еще один процесс - внешний отладчик, который решает задачи управления, задания режимов встроенного отладчика, выполняя инструкции разработчика-пользователя. Для системы на кристалле Triscend A7 такой внешний отладчик выполнен по клиент-серверной технологии, сервером при этом является программное ядро, называющееся MultiJTAG Server, непосредственно имеющее низкоуровневый контакт со встроенным блоком отладки A7, а клиентское приложение, в частном случае FDL, позволяет задавать высокоуровневые команды и визуализировать ответы. Приведенные рисунки 4, 5, 6 - это и есть виды клиентского интерфейса, входящего в состав системы проектирования FastChip. При этом разработчик может самостоятельно, преследуя собственные цели тестирования и отладки, написать свое клиентское приложение, поскольку высокоуровневый интерфейс общения с сервером не является закрытым и хорошо отражен в документации. Например, на ранних стадиях отладки системы ввода и обработки изображении при помощи инструментального JTAG интерфейса производилась передача на головной компьютер достаточно больших объемов данных. В подобных случаях, когда отсутствует возможность внутрисхемной отладки, разработчик вынужден часть ресурсов контроллера (таких как время, память, последовательный порт и т.д.) выделять под цели тестирования, формировать свой отладочный монитор, что приводит к временным и аппаратным издержкам. В нашем же случае, для работы встроенного отладчика никакой программной поддержки со стороны процессорного ядра не требуется, более того, программная часть вообще может отсутствовать.

Рассмотрим далее кратко второй блок отладки, входящий в состав системы на кристалле Triscend A7, - отладчик из состава ядра ARM7TDMI, выполненный согласно спецификации ARM EmbeddedICE [3]. Его возможности по сравнению с предыдущим блоком скромнее, он обеспечивает анализ транзакций только по локальной шине ARM при выборке кода или пересылке данных. Механизм маскирования значений шины адреса и данных подобен вышеописанному, что позволяет избирательно формировать условия останова.

Основное достоинство этого блока заключается в его стандартности, широко распространенной спецификации. Это позволяет использовать для работы с ним отладочные средства сторонних производителей, что является актуальным прежде всего для отладки программного обеспечения. Ниже рассмотрим пример конфигурации отладчика AXD Debugger из состава среды проектирования Arm Developer Suite (ADS) для работы с системой на кристалле Triscend A7. Отладчик AXD обеспечивает:

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

При помощи AXD можно провести и программную симуляцию работы процессора, однако наибольший интерес представляет режим аппаратной внутрисхемной отладки при непосредственной работе с целевой платой. Взаимодействие отладчика с интегрированными инструментальными средствами происходит через MultiJTAG Server при помощи свободно распространяемой библиотеки библиотеки TriscendA7.dll (она доступна на сайте фирмы Triscend www.triscend.com). Такой способ взаимодействия обусловлен тем, что кроме собственно ядра ARM в системе на кристалле А7 имеется механизм управления картой памяти, а также несколько видов системного сброса, что требует специфического управления.


Рис. 7. Настройка библиотекиTriscendA7.dll для работы в составе отладчика AXD

На рис. 7 приведено окно конфигурации библиотеки TriscendA7.dll для работы в составе AXD. После настройки отладчика и запуска целевой программы на выполнение разработчик может задавать точки останова, просматривать и изменять содержимое памяти.


Рис. 8. Вид окна отладчика AXD

На рис. 8 представлен вид окна при отладке приведенной выше тестовой программы, в строке 10 разработчиком задана точка останова и при ее достижении производится анализ программного состояния. Разработчик может включить пошаговый режим и просмотреть содержимое всех банков регистров ядра ARM. Представляет интерес дизассемблированный код тестовой программы. Как видно из рис. 8, компилятор произвел умножение считанного из регистра StatusReg значения на 1000 без применения встроенной команды умножения. В системах реального времени для критических участков необходимо анализировать получаемый машинный код с целью оптимизации временных характеристик. Также из окна отладчика видно, что операция присвоения на языке высокого уровня (Result = Flag) в машинном коде оказалась вырожденной, т.е. ей не соответствует никаких низкоуровневых инструкций.

Таким образом, встроенные средства отладки системы на кристалле A7 обеспечивают широкие возможности внутрисхемной отладки и позволяют автоматизировать тестирование аппаратуры и программного обеспечения. При этом максимум внимания разработчик уделяет основной цели тестирования - выработке эффективных воздействий на систему с целью диагностики ее функционирования, а не созданию инструментов отладки. Опыт реального проектирования 32-х разрядной системы на кристалле [5] для целей формирования и ввода изображений отражает значительное ускорение разработки при использовании встроенных инструментальных средств.

Литература
  1. Е.К. Александров, Р.И. Грушвицкий, М.С. Куприянов и др. Под общ. ред. Д.В. Пузанкова Микропроцессорные системы: Учебное пособие для вузов/ СПб.: Политехника, 2002. - 935 с.
  2. А.К. Цыцулин. Телевидение и космос: Учеб. пособие. - СПб., Изд-во СПбГЭТУ "ЛЭТИ", 2003. -228 с.
  3. Application Note 28. The ARM7TDMI Debug Architecture ARM DAI 0028A. URL: http://www.arm.com/
  4. А. Ключев, А. Платунов. Встроенные инструментальные средства современных микроконтроллеров. "Электронные компоненты" N7 2002 г., С. 94 - 97.
  5. В. Березин Р. Золотухо. 32-разрядная реконфигурируемая система на кристалле фирмы Triscend. "Компоненты и технологии" N 4 2003 г. C 128 - 132.
© 1999-2016 All Right Reserved. EFO Ltd. При использовании материалов ссылка на источник обязательна.
Контактная информация