Добрый день, коллеги!
Собственно говоря, вопрос в теме. Просьба поделиться, кто как отлаживает свои проекты, выполненные на микроконтроллерах. Ядро не принципиально, но лучше Cortex-M0/3/4(F).
Почему возник вопрос? Раньше я не пользовался для отладки JTAGом. В не меньшей степени этому способствовали отзывы об этом инструменте уважаемого zltigo. Кто на форуме давно, тот поймёт. Поэтому я поднимал консольку. И работал с ней. Где было необходимо посмотреть вывод программы, добавлял свои версии printf. Либо махал лапками, с подключенным оциллографом. Потом, попробовав вкусности, предоставляемые JTAG, пользовался только им. При этом вывод в консоль стал если не вторым по приоритету, то точно на равне с отладчиком. Но вот проблема. Пользователю нужно отправлять программу с выставленными уровнями оптимизации (обычно balanced для IAR). Отладживать же программу с этим уровнем не всегда удобно, т.к. исчезают переменные, ветвления и даже функции. Т.е. возниакает предположение, что JTAG годится только для черновой и грубой отладки. Дальше поднимаем уровень оптимизации, и пользуемся printf'ом и подобными инструментами. Но как принтфом получить информацию, что, скажем содержится в регистрах ssp или dma модуля, как остановить программу в нужном месте и посмотреть переменные? Как отследить call stack? Уважаемый zltigo часто говорил, что ему хватает только консольки, и за отладчик он берётся только в особо сложных случаях.
В общем я снова стал приходить к выводу, что отлаживаться через аппаратный отладчик - бесполезная затея. Нужно сразу выставлять уровень оптимизации на максимум, и использовать иные способы. В связи с этим у меня возникла определённая каша в голове, и захотелось услышать мнение коллег по этому вопросу? Возможно ли использовать что-то вместо JTAG при отладке, почти не уступающее ему по возможностям? Или может быть я вообще не тем путём иду?
Спасибо!