Поделюсь своим опытом отладки достаточно сложных устройств.
Обычно проблемы возникают не в низкоуровневой логике проекта, а в более высоком уровне. JTAG в этом случае малополезен - прохождение программы по шагам долгое утомительное занятие, дающее переизбыток информации. На мой взгляд куда более полезна грамотная отладочная печать, вставленная в критические точки программы. Причем - печатать или нет зависит от установленного уровня: if (PrintLevel > 3) printf("Что-то полезное\n");
Достоинства метода: 1. Требуемое оборудование - всего лишь кабель к ком-порту или USB. 2. Требуемое ПО - только терминал (можно HyperTerminal из виндов, хотя это ещё та гадость). 3. Полученную трассу можно сохранить для последующего анализа. 4. Через тот же кабель можно залить новую версию ПО. 5. Через тот же кабель можно шить дополнительную флеш-память в устройстве (если она есть). 6. Для получения трассы не требуется высокая квалификация оператора.
Недостатки: 1. Чтобы посмотреть то, что не предусмотрено в программе, нужно грузить новую версию ПО. 2. Дополнительные требования к памяти программ. 3. Замедление работы при снятии трассы.
В программе обычно я добавляю также небольшой монитор, воспринимающий текстовые команды, также вводимые с терминала. Идеологию взял у пультовых отладчиков младших моделей PDP-11/LSI-11. С клавиатуры вводится число и команда, например адрес, затем стрелка вправо или '/' - открыть ячейку памяти. Чтобы изменить значение ячейки, нужно ввести новое число и нажать Enter. Стрелки вверх/вниз или +/- - переход по ячейкам. На буквы назначены различные команды, например T - запуск тестов, P - вывод или изменение уровня печати, G - выход из отладчика и продолжение работы.
Короче, JTAG (еслм есть) используется только на начальном уровне освоения нового процессора, затем вся работа по отладке идет через COM-порт. Проверено в тои или ином виде на 51, AVR, MSP430, ARM.
|