Какой простой метод можно использовать для отладки встроенного процессора без последовательного порта или видео? - PullRequest
5 голосов
/ 16 сентября 2008

У нас есть небольшая встроенная система без каких-либо видео- или последовательных портов (т.е. мы не можем выводить текст через printf).
Мы хотели бы отслеживать ход выполнения нашего кода с помощью последовательности инициализации.
Есть ли какие-то простые вещи, которые мы можем сделать, чтобы помочь с этим.
Он не работает под управлением любой ОС, а аппаратная платформа несколько настраиваема.

Ответы [ 8 ]

10 голосов
/ 16 сентября 2008

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

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

5 голосов
/ 16 сентября 2008

Существует несколько стратегий, которые вы можете использовать для отладки:

Если у вас есть выходные выводы, вы можете подключить их к светодиодам (или осциллографу) и переключать выходные / высокие выводы, чтобы указать, что в коде достигнуты определенные точки.
Например, 1 мигание может быть загружено программой, 2 мигания инициализировано foozbar, 3 мигания принимают входные данные ...

Если у вас есть несколько доступных выходных линий, вы можете использовать 7-сегментный светодиод для передачи дополнительной информации (цифры / буквы вместо миганий).

Если у вас есть возможность считывать память и иметь немного доступной оперативной памяти, вы можете использовать функцию sprint для отладки, аналогичной printf, но вместо перехода к экранному / последовательному порту она записывается в память.

2 голосов
/ 17 сентября 2008

Вы можете легко эмулировать последовательную связь (UART), используя битовые удары от выводов ввода-вывода системы. Подключите его к одному из выводов карты и подключите к нему конвертер RS232 (конвертеры TTL в RS232 легко купить или построить), который подключается к последовательному порту вашего ПК.

2 голосов
/ 16 сентября 2008

Это зависит от типа отладки, которую вы пытаетесь выполнить, в частности, если вам нужен временный метод трассировки или если вы пытаетесь предоставить инструмент, который можно использовать в качестве индикатора состояния во время жизнь проекта (или продукта).

С одной стороны, очень полезной может быть детальная трассировка и отладка внутрисхемного отладчика (например, jtag). Однако они наиболее полезны в тех случаях, когда для отладки требуются установка точек останова и исследование памяти и регистров, что дает мало пользы, когда вы решаете проблемы, критичные ко времени.

Если вам нужно определить состояние программы, не оказывая существенного влияния на работу вашей системы, будет полезно использовать светодиоды, подключенные к запасным выводам ввода / вывода. Они также могут использоваться в качестве входа для цифрового запоминающего осциллографа (DSO) или логического анализатора. Эту технику можно сделать более мощной, выбрав уникальные комбинации импульсов, которые можно будет идентифицировать в DSO.

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

Если вы пытаетесь обеспечить более длительную индикацию состояния как часть нормальной работы вашего продукта, светодиоды снова являются дешевым и простым способом. Однако в этой ситуации лучше всего выбирать схемы импульсов, которые являются достаточно медленными, чтобы их можно было легко идентифицировать визуальным осмотром. Это все, что вы со временем выучите определенный шаблон, который представляет «нормальное» поведение.

0 голосов
/ 24 апреля 2009

Идея использования ПО UART с побитными битами хороша, но для ее написания требуются определенные усилия, а также вам нужны свободные таймеры и прерывания. Если ваше оборудование имеет какой-либо другой неиспользуемый последовательный интерфейс (SPI, I2C, ...), их будет проще использовать. С небольшим микроконтроллером вы можете преобразовать интерфейс в RS-232.

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 16 сентября 2008

Если у вас нет JTAG, светодиоды, предложенные другими, являются отличной идеей - хотя вы, как правило, попадаете в цикл тестирования / восстановления, чтобы попытаться отследить проблему.

Если у вас есть больше времени и запасных аппаратных выводов, а также памяти, которую вы можете сэкономить, вы всегда можете поразить битовый низкоскоростной последовательный интерфейс. Я нашел это довольно полезным в прошлом.

0 голосов
/ 16 сентября 2008

Отладчик JTAG также является опцией, хотя и неудобен в настройке.

...