Регистрация системных аварий
Дженни ГРОССЛАИТ (Jennie GROSSLiGHT)
jennie_grosslight@agilent.com
В статье пойдет речь о применении логических анализаторов для отладки устройств пользователя, а именно для регистрации системных аварий.
Введение
Системные аварии трудно устранять, особенно если они происходят раз в несколько дней. И хотя причина каждой системной аварии обычно уникальна, описанные в трех следующих разделах концепции, методы и средства логического анализа возможно применить в диагностике любых системных аварий.
• Раздел 1. Если во время аварии выходит из строя генератор тактовой частоты, современные логические анализаторы предлагают макрос «Работать до останова пользователя» и кнопку «Стоп», которая позволяет захватывать события, блокирующие систему. Эти удобные команды запуска и останова позволяют регистрировать данные состояния в течение месяца после возникновения системной аварии.
• Раздел 2. Если после аварии системный генератор тактовой частоты продолжает работать, система запуска логического анализатора должна применять более творческий подход к захвату событий, вызвавших системную аварию. Применение запуска с задержкой для регистрации сигналов, параметры которых вышли за допустимые пределы, позволяет просматривать события, непосредственно предшествующие аварии.
• Раздел 3. Измерения можно упростить, воспользовавшись расширенными функциями и возможностями современных логических анализаторов. В этом разделе описываются способы применения различных функций и возможностей таких анализаторов для устранения системных аварий.
Независимо от метода или набора инструментов, применяемого для устранения системной аварии, для определения главной причины аварии важно воссоздать вызвавшие ее условия. Файлы журналов, сведения о том, какие программы или тесты в этот момент исполнялись, настройки BЮS, температура и питающие напряжения могут дать полезную информацию для диагностики системной аварии. Прежде чем приступить к устранению системной аварии, нужно собрать как можно больше информации о нормальной работе системы и о симптомах отказа.
Раздел 1
Если во время аварии выходит из строя генератор тактовой частоты, запуск логического анализатора в значительной степени зависит от того, в каком режиме работает анализатор: в режиме логических состояний или в режиме временных диаграмм.
В режиме логических состояний логический анализатор делает выборки, синхронизируясь от сигнала тактовой частоты тестируемого устройства. Этот тип тактирования обеспечивает синхронизацию захвата данных с тактовой частотой тестируемого устройства. Если генератор тактовой частоты тестируемого устройства останавливается, логический анализатор перестает регистрировать данные.
Многие анализаторы при отсутствии тактовой частоты выдают предупреждение «Низкая частота или отсутствие сигнала тактовой частоты». Некоторым анализаторам в режиме логических состояний требуется непрерывная подача тактовой частоты, тогда как другие довольствуются пакетами (пакетные генераторы тактовой частоты временно отключаются, например, когда система находится в режиме ожидания). Требования к тактовой частоте приведены в техническом описании каждого логического анализатора.
Примечание. Если возникает ошибка «Перепады тактовой частоты расположены слишком близко», это значит, что перепады тактовой частоты сблизились настолько, что логический анализатор не может их надежно захватить. В этом случае подозрение падает на системный генератор тактовой частоты (или на его соединение с логическим анализатором), и его работу нужно скорректировать. Такая ошибка может быть вызвана плохим заземлением.
Макрос «Работать до останова пользователя» или эквивалентный ему макрос имеется в большинстве современных логических анализаторов (рис. 1). Этот макрос переводит логический анализатор в режим отсутствия запуска, и для просмотра захваченных данных нужно нажать кнопку останова. Каждый макрос снабжен всплывающей диаграммой, поясняющей его работу.
В режиме логических состояний, макрос «Работать до останова пользователя» являет-
Рис. 1. Макрос «Работать до останова пользователя» логического анализатора Agilent 16950B
ся эффективным средством синхронизации для захвата системных аварий, во время которых прекратилась подача сигнала тактовой частоты, поскольку логический анализатор прекращает регистрацию при отсутствии системной тактовой частоты. При нажатии кнопки «Стоп» логический анализатор выдает два дополнительных перепада тактовой частоты (если нужно), чтобы успеть завершить обработку данных.
Современные логические анализаторы оборудованы счетчиками, которые позволяют нажать кнопку останова в течение 32 дней после аварии. К сожалению, многие старые модули логического анализа имеют счетчики меньшей емкости, которые переполняются уже через несколько секунд, что делает практически невозможным захват данных системной аварии с помощью кнопки останова. (Когда счетчик логического анализатора переполняется и начинает счет сначала, прибор теряет возможность определить положение одного события относительно другого.)
Чтобы обеспечить захват максимального объема данных и использовать весь объем памяти анализатора для отображения событий, предшествующих аварии, необходимо установить положение запуска на 0% объема памяти после момента запуска.
В режиме временных диаграмм логический анализатор генерирует внутреннюю тактовую частоту для регистрации данных и событий тестируемой системы, асинхронную
с тактовой частотой тестируемой системы. При выполнении измерений в режиме временных диаграмм рекомендуется использовать частоту выборок, как минимум в четыре раза превышающую тактовую частоту. Чем больше частота выборок, тем лучше разрешение. (При выполнении межканальных измерений необходимо учесть межканальную точность и разрешение.)
Когда логический анализатор работает в режиме временных диаграмм, метод нажатия кнопки «Стоп» непригоден для захвата системных аварий. Это связано с тем, что скорость захвата логического анализатора значительно превышает скорость человеческих рефлексов. Даже если пользователь быстро заметит системную аварию, к тому моменту, когда он нажмет кнопку останова, память анализатора заполнится бесполезными поставарийными данными, не содержащими информацию о событиях, вызвавших системную аварию.
Режим переходных процессов — это специальный режим, имеющийся в некоторых логических анализаторах. В этом режиме логический анализатор синхронизируется от внутреннего источника тактовой частоты только в момент перепада сигнала. Запуск по останову является очень важным способом синхронизации в режим переходных процессов.
Один из макросов, доступных в режиме временных диаграмм, может использоваться для захвата сигналов, если в результате аварии перепады тактовой частоты «отстоят слишком далеко». Как показано на рис. 2, логический анализатор запускается в том случае, если фронт сигнала тактовой частоты не появится в переделах 4 нс от предыдущего фронта. Этот режим запуска хорош для частот выше 270 МГц, а для более низких тактовых частот нужно выбирать период больше 4 нс. Здесь вполне достаточно грубой оценки, поскольку цель заключается в том, чтобы логический анализатор заметил останов системной тактовой частоты и запустился до заполнения памяти поставарийными данными, не пред-
Рис. 2. Пример работы анализатора Agilent 16950B в режиме временных диаграмм
ставляющими большого интереса. Если для захвата аварии в системе с тактовой частотой 250 МГц используется внутренний тактовый генератор с периодом захвата 4 нс, что соответствует тактовой частоте 250 МГц, логический анализатор будет выполнять ложные запуски всякий раз, когда регистрируется нарушение этого интервала из-за низкого разрешения выборок. Обратите внимание, что макрос включает диаграмму и описание условий запуска, что позволяет вписать в пустые места наименования сигналов.
Раздел 2
Если после аварии системный генератор тактовой частоты продолжает работать, система синхронизации логического анализатора должна применять более творческий подход к захвату событий, вызвавших системную аварию. В этом случае ожидание нажатия кнопки «Стоп» после системной аварии неприемлемо даже для режима логических состояний, и системная тактовая частота больше не может использоваться в качестве синхросигнала в режиме временных диаграмм для захвата аварии.
Часто наиболее трудной частью настройки сложного режима синхронизации является разделение проблемы на составные части. В общем случае при настройке сложного режима синхронизации логического анализатора необходимо:
1) Разбить проблему на события, которые не происходят одновременно. Эти события должны соответствовать последовательным уровням синхронизации логического анализатора.
2) Пролистать весь список режимов синхронизации и найти такой, который соответствует всем событиям, определенным на первом этапе. Настройка режима синхронизации логического анализатора существенно упрощается при использовании готовых функций синхронизации (макросов).
Если событие не соответствует ни одному из готовых макросов, нужно разбить его на логические выражения и выбрать соответствующую операцию для каждого выражения. Каждая пара приложение/операция соответствует отдельной ветви уровня последовательности. Логические выражения дают результат в виде значений ИСТИНА или ЛОЖЬ, например: утверждение PattemA = FFF является либо истинным, либо ложным, в зависимости от значения PattemA при сравнении его с FFF. Один из методов синхронизации с системными авариями при наличии системной тактовой частоты заключается в том, что нужно найти сигнал, появляющийся регулярно или в пределах указанного интервала времени, и настроить запуск на тайм-аут появления этого сигнала. Это может быть сигнал некоторой шины, сигнал прерывания, сигнал, который можно подать в систему через имитатор шины, или любой сигнал,
который должен появляться в системе при выполнении некоторого теста.
Например, рассмотрим встроенную систему с памятью DDR2. Команда регенерации памяти состоит из трех отдельных сигналов и действует лишь в том случае, если линия выбора микросхемы находится в нуле (CS0#). Для сохранения данных в памяти регенерация должна выполняться через регулярные интервалы времени. Статическая регенерация памяти DDR2 (и предшествующих технологий DRAM) выполняется каждые 64 мс. Это значит, что каждая ячейка памяти регенерируется, по крайней мере, раз в 64 мс, в противном случае данные могут быть повреждены.
Следовательно, для регистрации аварий в системах с памятью DDR2 можно использовать синхронизацию по превышению интервала регенерации (рис. 3). Применение таблицы символов для обозначения команды упрощает автоматический выбор авторегене-рации/саморегенерации. Эта концепция/алгоритм может работать и в режиме логических состояний, и в режиме временных диаграмм. Комментарии помогают отслеживать поток синхрокоманд и упрощают изменение условий синхронизации для аналогичных ситуаций.
В некоторых случаях время на регистрацию системной аварии сокращается, для DDR2 средний интервал между каждой авторегенерацией равен 7,81 мкс. Наблюдая нормально работающую систему и контролируя нормальную частоту регенерации в этой системе, можно найти более короткий интервал и использовать его в качестве индикатора аварии такой системы.
Если логический анализатор делает выборки через регулярные интервалы, то счетчик можно заменить таймером, причем таймер можно имитировать, подсчитывая число сделанных выборок. Например, если логический анализатор делает выборки каждые 2,5 нс (частота выборок 200 МГц, по фронту и спаду), то 25 600 выборок соответствуют интервалу 64 мс.
В этом случае может оказаться, что логический анализатор уже имеет макрос синхронизации в режиме логических состояний, который можно использовать для заполнения числа состояний и наименований сигналов (рис. 4).
Аналогично, в режиме временных диаграмм можно выбрать макрос синхронизации «Время отсутствия последовательности >t».
Другой вариант заключается в инжекции известной последовательности или сигнала, который легко распознается с помощью программной функции, генератором последовательностей или имитатором шины. (Многие логические анализаторы имеют встроенный генератор последовательностей. В системах с имитатором PCI или PCI Express можно инжектировать команды, создающие известные последовательности данных в шине PCI/PCI Express, шине процессора или шине памяти.)
Рис. 3. Пример синхронизации Agilent 16950B по задержке регенерации для регистрации аварий в системе с памятью DDR2
Рис. 4. Слишком много состояний между командами регенерации, поэтому для выделения нужной команды было добавлено условие CS0# = «0»
Раздел 3
Измерения можно упростить, воспользовавшись расширенными функциями и возможностями. Разные функции и возможности логического анализатора дают мощные средства отладки системных аварий:
• большой объем памяти;
• сохранение по условию;
• динамические пробники FPGA;
• сравнение;
• специализированные пробники;
• глазковые диаграммы;
• объединение сигналов, захваченных логическим анализатором и осциллографом.
Большой объем памяти
Захват сигналов, послуживших причиной системной аварии, критически важен для определения главной причины аварии. Процедура установки соединения, разделенные транзакции, конвейерная обработка, на-
рушение порядка операций и регистр FIFO (первым вошел, первым вышел) большого объема означают, что проблема может распределяться на тысячи, если не на миллионы, циклов шины. Частота появления проблемы может колебаться от одного раза за цикл шины до одного раза в несколько недель.
Поскольку истинная причина аварии может появиться до аварии, при настройке измерений полезно воспользоваться большим объемом памяти логического анализатора.
Многие логические анализаторы имеют лицензию на последующее расширение памяти. (Самым большим на сегодняшний день объемом памяти обладает логический анализатор Agilent 16951B, стандартный объем памяти которого равен 256 или 512 Мбайт в полуканальном режиме временных диаграмм.)
Сохранение по условию
Сохранение по условию позволяет эффективнее использовать имеющуюся память, а не заполнять ее ненужной информацией, такой как пустые циклы или циклы ожидания. Функция сохранения по условию определяет, следует ли заносить в память захваченный образец, или его надо отбросить.
Простейший метод настройки сохранения по условию заключается в настройке сохранения по умолчанию, то есть пока очередной шаг последовательности не нарушит заданного условия. Например, пользователь желает сохранять выборки лишь в том случае, если система не находится в режиме ожидания. По умолчанию анализатор настроен
на сохранение всех захваченных выборок. Пользователь может изменить настройку так, чтобы по умолчанию не сохранялось ничего. Это значит, что образцы не будут сохраняться до тех пор, пока шаг последовательности не нарушит условие сохранения по умолчанию.
Сохранение по условию означает, что в пределах определенного уровня синхронизации будут сохраняться лишь некоторые выборки, то есть сохранение по условию действует до выхода из последовательности с помощью команды «перейти» или «запустить». Это полезно, если нужно определить разные условия сохранения для каждого шага последовательности. Например, в микропроцессорной системе может потребоваться ничего не сохранять до ADDR = 1000, а затем сохранять только выборки, ADDR которых лежит в диапазоне от 1000 до 2000.
Настройка сохранения по условию требует применения дополнительной ветви и всегда имеет более высокий приоритет, чем сохранение по умолчанию, но только для специально указанных условий сохранения шага последовательности. Это важно для понимания механизма взаимодействия сохранения по умолчанию и сохранения шага последовательности.
Динамические пробники FPGA
Динамические пробники FPGA появились в результате сотрудничества компаний, создающих логические анализаторы, и компаний, создающих FPGA (конкретные функции зависят от производителя логического анализатора и модели FPGA). С помощью динамического пробника FPGA пользователь может наблюдать внутренние сигналы FPGA. Допустим, схема пользователя имеет внутренний сигнал FPGA, который в нормальном режиме работы появляется через регулярные временные интервалы. Доступ к этому сигналу легко осуществляется с помощью функций синхронизации, используемых для захвата системных аварий.
Перемещение точек измерения внутрь FPGA обычно отнимает много времени, тогда как применение динамического пробника FPGA позволяет измерять разные наборы внутренних сигналов за считаные секунды без внесения изменений проекта FPGA. Важно отметить, что при использовании динамического пробника временные сдвиги между наборами внутренних сигналов FPGA остаются постоянными.
Богатый набор функций динамических пробников FPGA позволяет автоматически привязать внутренние сигналы и наименования шин FPGA к каналам логического анализатора, что снижает вероятность ошибок и экономит часы работы.
Сравнение
Функция сравнения позволяет сравнивать захваченные данные с эталоном. Эта функция
работает так, чтобы выделить различия между известной эталонной и последней последовательностью состояний, или она прекращает повторные запуски и высылает извещение по электронной почте после обнаружения указанного числа отличий. Функция сравнения может первой позволить заметить проблему, послужившую причиной системной аварии, если диагностика аварии должна выполняться во время начальной загрузки системы (или во время тестов, которые могут определяться или ограничиваться маркерами).
Специализированные пробники
Специализированные пробники позволяют исследовать схему, не оказывая влияния на ее работу, и к тому же обеспечивают настройку логического анализатора, синхронизацию и декодирование для специальных приложений. Также они позволяют выполнять коррелированный во времени анализ и синхронизацию от последовательности событий на нескольких шинах, что упрощает отслеживание транзакций, данных и пакетов при прохождении данных через систему. Имеются специализированные пробники для следующих шин (приведенный список далеко не полон):
• PCI Express (PCIe);
• Advanced Switching Interface (ASI);
• Serial ATA (SATA) и Serial Attached SCSI (SAS);
• Serial RapidIO;
• Parallel RapidIO;
• SPI 4.2 (System Packet Interface, POS PHY L4);
• InfiniBand;
• I2C;
• FlexRay;
• SPI (последовательный периферийный интерфейс).
Примечание. Для инженеров, использующих PCI-Express 2: шлюз Agilent Technologies P2L (от протокола к логике) объединяет в себе функции логического анализатора и анализатора протокола. Он позволяет выполнять коррелированные по времени межшинные измерения и поддерживает перекрестную синхронизацию. При этом логический анализатор и анализатор протокола работают на одном ПК, причем логический анализатор выступает в роли ведущего устройства.
Глазковые диаграммы
Глазковые диаграммы помогают в считаные минуты оценить целостность сигналов на всей шине. Результаты можно просматривать в виде отдельных сигналов или в виде групп сигналов или шин. Глазковые диаграммы можно использовать:
• для наблюдения сдвига фазы между сигналами;
• поиска и устранения неверных порогов тактовой частоты и сигналов;
• диагностики нарушений целостности сигнала, связанных с длительностью фронта, длительностью спада или с допустимой шириной окна данных;
• быстрой оценки целостности сигнала в разных условиях работы.
Отображение шины в виде отдельных линий
позволяет выявить отдельные проблемные сигналы и провести параметрический анализ.
Объединение сигналов логического анализатора и осциллографа
Объединение сигналов логического анализатора и осциллографа на экране логического анализатора позволяет контролировать правильность временных соотношений между аналоговыми и цифровыми
Рис. 5. Функции осциллографа, входящие в стандартную конфигурацию логических анализаторов серии Agilent 16800 и 16900 (логические имена сигналов выделены фиолетовым цветом, а имена сигналов осциллографа — синим)
компонентами системы. Программные помощники по настройке и минимальное число соединений с помощью стандартных кабелей LAN и BNC существенно упрощают схему измерения.
Захваченное логическим анализатором неверное значение данных на шине может запускать осциллограф для исследования аналоговых характеристик сигнала. И наоборот, обнаруженный осциллографом выброс может запускать логический анализатор.
В примере, показанном на рис. 5, логический анализатор запускается по циклу чтения с подозрительными данными на шине DDR3. Объединение с внешним высококлассным осциллографом, измеряющим тактовую частоту DDR3, строб данных и сигнал данных, позволяет контролировать несколько аналоговых характеристик подозрительно -го пакета данных. Для точного измерения временных соотношений между командой чтения и началом пакета данных, связанного с этой командой, можно использовать функцию растяжки. А для измерения преамбулы (времени, когда строб данных имеет низкий уровень), предшествующей пакету данных, пригодится функция сжатия.
Логические анализаторы предлагают широкий набор функций и возможностей, упрощающих диагностику трудноуловимых системных аварий. Во время диагностики системной аварии рекомендуется придерживаться такой последовательности действий:
• собрать информацию о нормальной работе системы;
• воссоздать условия возникновения аварии;
• учесть природу системной аварии (например, прекратил ли работу генератор тактовой частоты;
• определить средства, доступные для диагностики системы;
• используя описанные концепции, выбрать способ синхронизации логического анализатора и соответствующим образом его настроить.
Заключение
Описанные в настоящей статье концепции, методы и функции логического анализатора широко используются для диагностики системных аварий. Исследуя природу системной аварии, важно понять, прекратил ли работу генератор тактовой частоты. Если в результате аварии генератор тактовой частоты вышел из строя, современные логические анализаторы предлагают макрос «Запуска по останову пользователя» и кнопку «Стоп», которая позволяет захватывать события, вызвавшие блокировку системы. Если после системной аварии тактовый генератор продолжает работать, система запуска логического анализатора должна применять более творческий подход к захвату событий, вызвавших системную аварию. Применение запуска с задержкой для регистрации сигналов, параметры которых вышли за допустимые пределы, позволяет просматривать события, непосредственно предшествующие аварии. ■