Перейти к основному содержимому

Отладчик MDB

В ряде случаев для отладки может быть предпочтительнее использование отладчика командной строки MDB, нежели графической IDE MCStudio. Типовые случаи, когда MDB удобнее — это отладка аппаратной части нового устройства, а также тестирование устройств на производстве. В данном документе рассмотрено применение отладчика MDB в указанных выше целях. Кроме того, рассмотрена отладка ПО безотносительно отладки или тестирования аппаратной части изделия.

Отладка аппаратной части

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

  • соединение с процессором по интерфейсу JTAG;
  • подача сигнала nRST на процессор;
  • перевод процессора в режим отладки (останов);
  • выполнение команд предварительной настройки (окно «Startup registers»);
  • загрузка программы в память процессора;
  • изменение значения регистра PC на адрес точки входа в программу.

В случае ошибок в отлаживаемом устройстве, ошибка на одном из приведенных этапов приведет к тому, что MCStudio выведет довольно общее сообщение об ошибке, по которому затруднительно будет понять, на каком именно этапе появилась проблема. Кроме того, возможен более неприятный случай, когда ошибка, возникшая на первом этапе, компенсируется вторым этапом. В результате она может быть пропущена в ходе отладки, и будет выявлена только на стадии внедрения финальной версии ПО. Отладчик MDB позволяет выполнить указанные этапы по отдельности, убедившись в корректном прохождении каждого из них. Таким образом снижается вероятность пропустить ошибку в устройстве.

Установка соединения по JTAG

Для запуска отладчика необходимо вызвать его из командной строки. Отладчик соединяется с процессором по интерфейсу JTAG сразу после запуска. Если установить соединение удается — отладчик определяет подключенный процессор, после чего выводит приглашение своей командной строки:

mdblib version: 6.0.0.4029<ad5cb9c940> (May 22 2017)
Connecting to the default JTAG server.
Successfully connected to \\.\Pipe\mdb_pipe.
List of suitable devices:
0. NVCom-02T on EZ-USB0 SN: 1412025
Opening device: EZ-USB0
mdb>

Если нет — отладчик выводит сообщение об ошибке. Одним из частных случаев является ситуация, когда, например, не установлен драйвер эмулятора MC-USB-JTAG, и отладчик не может его «найти». В данном случае выводится следующее сообщение

mdblib version: 6.0.0.4029<ad5cb9c940> (May 22 2017)
Connecting to the default JTAG server.
Successfully connected to \\.\Pipe\mdb_pipe.
No suitable devices found.
mdb>

Данная ситуация, естественно, не имеет отношения к неисправностям платы. Решение подобных проблем описано в отдельном документе «Работа с эмулятором MC-USB-JTAG для микропроцессоров серии «Мультикор», доступном на сайте. При установке соединения по JTAG отладчик запрашивает у процессора ID блока OnCD. В случае, если полученный ID не совпадает с необходимым или его не удалось считать, выводится сообщение:

Error: The board is not connected.

Появление такого сообщения свидетельствует о том, что есть проблема либо с линиями интерфейса JTAG между процессором и эмулятором MC-USB-JTAG, либо из строя вышел один из выводов JTAG на процессоре, либо неисправен эмулятор MC-USB-JTAG. В частности, при сгоревших входах JTAG на процессоре их сопротивление к «земле» становится порядка сотен Ом, в результате чего уровень сигнала на выходе MC-USB-JTAG снижается до 1-1.5 В, и процессор данного сигнала просто «не видит». Подобный выход из строя выводов JTAG процессора вызван обычно неправильной последовательностью подключения эмулятора к плате. Корректная последовательность подключения указана в этикетке на эмулятор.

Также некорректно разведенные линии сигналов JTAG на плате могут приводить к искажению формы сигналов. В этом случае прочитанный ID будет некое произвольное значение. В таком случае отладчик не сможет определить подключенный чип и выведет сообщение:

Error: Unknown board.

В любом случае, каждая из вышеописанных ситуаций с некорректным ID требует изучения сигналов на линиях TDI, TDO, TMS, TCK с помощью осциллографа.

Подача сигнала nRST и перевод процессора в режим отладки

Для подачи сигнала nRST на процессор необходимо ввести в командной строке отладчика команду «reset». MDB, подавая сигнал nRST, также переводит процессор в режим отладки.

В случае успешного выполнения команды выводится приглашение командной строки отладчика. Еще одной проблемой, проявляющейся на данном этапе, может стать отсутствие сигнала тактовой частоты на входе XTI процессора. В этом случае отладчик после команды «reset» ожидает ответа от процессора в течение длительного времени (десятки секунд), после чего на экран может быть выведена как вышеприведенная картина, так и сообщение об ошибке «debug request error».

Выполнение команд предварительной настройки

Имеются в виду команды, предназначенные для настройки тактирования и порта внешней памяти микросхемы перед загрузкой программы в память. В среде разработки MCStudio эти команды расположены в окне «Startup registers» и могут быть выполнены в отладчике MDB без изменений. На данном этапе может проявиться ошибка, связанная с отсутствием тактирования, которая описана в предыдущем разделе. Проявляться она будет тоже в форме длительных таймаутов при выполнении каждой из команд.

Загрузка программы в память процессора и запись адреса точки входа в регистр PC

В случае использования среды разработки на данном этапе могут быть следующие проблемы:

  • некорректно загруженные в память данные (код);
  • поскольку происходит изменение регистра PC — может пройти незамеченным тот факт, что значение регистра PC не было корректным после подачи сигнала сброса. При использовании отладчика MDB данная проблема решается на стадии подачи команды «reset».

При загрузке программы в память процессора MCStudio производит также верификацию загруженных областей памяти на предмет соответствия секциям в файле с программой. Недостатком является тот факт, что в случае несоответствия среда разработки выдает лишь первый не совпавший байт или первое не совпавшее слово, из чего сложно сделать вывод о причинах некорректной работы памяти. В отладчике MDB для загрузки программы удобнее всего использовать команду loadelf, которая производит загрузку секций программы в память, читает из ELF-файла адрес точки входа и вносит этот адрес в регистр PC.

примечание

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

На случай подобной ошибки в отладчике MDB предусмотрена команда «testmem», в которой задается стартовый адрес проверяемой области памяти, ее длина и количество проходов. Заданная область памяти заполняется случайными значениями, после чего проверяется соответствие считанных и записанных данных.

В случае наличия ошибок отладчик выводит в консоль количество ошибочно прочитанных ячеек памяти (в процентах от общего размера тестируемой области), а также небольшую выборку некорректных значений, где приведено записанное и считанное значение для некоторых из ячеек. По разнице между записанными и прочитанными значениями (а также по адресам ошибочных ячеек) можно сделать вывод о проблемах с памятью. В частности, если изо всей тестируемой области памяти считывается одно и то же значение — можно предположить дефект монтажа вывода nCS или стробов чтения. В случае, если ошибка присутствует в одном и том же разряде данных — логично предположить, что дефект монтажа именно в этой линии данных. И так далее, исходя из общих соображений, в данном случае уже не имеющих отношения непосредственно к архитектуре микросхем серии «Мультикор».