|
Тонкости отладки, JTAG, printf, светодиоды, ножки + осциллограф |
|
|
|
Jul 3 2018, 09:00
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

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

|
Цитата(haker_fox @ Jul 3 2018, 13:16)  Банально, по причине изменившихся времён выполнения кода. Понимаю, что некорректное программирование. Но вот и надо отладить эти моменты. А по-этому и вижу целесообразность отлаживать сразу с оптимизацией. В общем хочется внешнего опыта по этому вопросу) Банально, но это обыкновенное "заметание проблемы под ковёр" как тут кто-то сказал. Вместо того, чтобы это своё "некорректное программирование" найти и исправить, Вы пытаетесь придумать костыль чтобы проблема не проявлялась. В медицине это ещё называют: "Борьба с симптомами вместо лечения причины". Нормально всё отлаживаются без оптимизации. После чего включают оптимизацию и просто проверяют, что программа не перестала функционировать. Отлаживать тут особо не надо. Ну если только в крайнем случае - посмотреть пару переменных в паре точек останова, но это можно и по асм-коду разобраться. Корректно написанная программа работает одинаково как с оптимизацией так и без. Ну разве что за исключением случаев, когда ресурса быстродействия - впритык. Цитата(Arlleex @ Jul 3 2018, 13:17)  Оптимизатор не исправляет ошибки пользователя - он лишь жестче показывает программисту, где он не прав, на мой взгляд  В точку!  Цитата(Arlleex @ Jul 3 2018, 13:17)  Ну а для устройств, которые должны отлаживаться далеко за пределами моего рабочего стола - я веду систему логгирования всего и вся на внутренний накопитель и при возникновении проблем - требую .log файл сессии, где уже с ним в поте лица сижу и думаю "шо цэ такое было". Тоже часто так делаю. Для сложных проектов. Ну и прочие комплексные сложные методы отладки. Например: Когда отлаживал своё графическое API и юзер-интерфейс на его основе, то сделал эмуляцию работы LCD на компе (через USB-канал (уже использовался в устройстве) периодически передавал содержимое видеобуфера на комп и там рисовал его в проге на VS). А положение мышки на компе - через этот же USB на устройство. Так отладка графического API значительно упростилась и ускорилась. Когда делали сложные устройства, длительное время работающие без выкл. питания и вдали от удобных мест отладки, то делали логгирование всяких критических событий (с полной инфой о них) в журналы во FRAM. С вытягиваением потом их по рабочему протоколу. Сейчас вот пишу осциллографирование - тоже для отладки, наблюдение за множеством переменных в сложной программе в runtime. Так что метода отладки сильно зависят от задачи. А то что обязательно всегда есть по дефолту: JTAG/SWD и отладочный вывод в UART.
|
|
|
|
|
Jul 4 2018, 09:48
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (jcxz @ Jul 4 2018, 16:07)  Вместо того, чтобы это своё "некорректное программирование" найти и исправить, Вы пытаетесь придумать костыль чтобы проблема не проявлялась. Вопрос был задан довольно ясно: есть ли альтернатива JTAG? QUOTE (jcxz @ Jul 4 2018, 16:07)  Корректно написанная программа работает одинаково как с оптимизацией так и без. Ключевое слово - корректно написанная. А если она написана некорректно? QUOTE (jcxz @ Jul 4 2018, 16:07)  но это можно и по асм-коду разобраться. Да? Вы серьёзно? Я вот такую квалификацию пока не заработал. QUOTE (jcxz @ Jul 4 2018, 16:07)  Когда делали сложные устройства, длительное время работающие без выкл. питания и вдали от удобных мест отладки, то делали логгирование всяких критических событий (с полной инфой о них) в журналы во FRAM. С вытягиваением потом их по рабочему протоколу. Вот это уже ближе к теме, мы что-то подобное делаем. Вообще, jcxz, вопрос мой был больше про методы отладки, кто что использует. И можно ли отладиться без JTAG. Вот и всё. Будем считать, что это мой личный интерес. QUOTE (jcxz @ Jul 4 2018, 16:18)  Ну и место такому поделию - соответствующее. Классное высказывание! У вас наверно идеальная продукция?!
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
haker_fox Тонкости отладки Jul 3 2018, 09:00    jcxz Цитата(haker_fox @ Jul 4 2018, 12:48) Да?... Jul 4 2018, 09:53 Arlleex Добрый день!
Вопрос больше религиозный - кому ... Jul 3 2018, 10:17 kolobok0 Цитата(Arlleex @ Jul 3 2018, 13:17) ..Воп... Jul 3 2018, 11:04 x893 Jlink (SWD) + RTT Jul 3 2018, 10:58 scifi Цитата(haker_fox @ Jul 3 2018, 12:00) Пол... Jul 3 2018, 11:49 haker_fox Коллеги, спасибо! Я не собираюсь отказываться ... Jul 3 2018, 13:36 Kabdim Конкретно поинт про ненужность дебагера у злтиго с... Jul 3 2018, 13:49 haker_fox QUOTE (Kabdim @ Jul 3 2018, 21:49) Конкре... Jul 3 2018, 13:59 jcxz Цитата(Kabdim @ Jul 3 2018, 16:49) Очень ... Jul 4 2018, 08:18  AlexandrY Цитата(jcxz @ Jul 4 2018, 11:12) Полность... Jul 4 2018, 08:22   Kabdim Цитата(AlexandrY @ Jul 4 2018, 11:22) GCC... Jul 4 2018, 09:25 AlexandrY Цитата(haker_fox @ Jul 3 2018, 12:00) Соб... Jul 3 2018, 14:08 uriy Компилю сразу с включенной оптимизацией, если надо... Jul 3 2018, 14:08 haker_fox QUOTE (AlexandrY @ Jul 3 2018, 22:08) Да ... Jul 3 2018, 14:34 AlexandrY Цитата(haker_fox @ Jul 3 2018, 17:34) ВО... Jul 3 2018, 16:59  haker_fox QUOTE (AlexandrY @ Jul 4 2018, 00:59) у м... Jul 4 2018, 04:34 k155la3 При работе с дебаггером :
Вместо отладочного prin... Jul 3 2018, 15:06 uriy ЦитатаRTT хорош когда у чипа нет вывода SWO.Не сог... Jul 3 2018, 17:59 AlexandrY Цитата(uriy @ Jul 3 2018, 20:59) Не согла... Jul 4 2018, 08:10 uriy Вот что оказывается надо сделать https://devzone.n... Jul 4 2018, 05:02 haker_fox Попробовал RTT. С наскоку (сразу) заработал вывод ... Jul 4 2018, 05:42 uriy ЦитатаЗдесь я SWO упомянул в связи с использование... Jul 4 2018, 09:57 haker_fox QUOTE (jcxz @ Jul 4 2018, 17:53) Тогда у ... Jul 4 2018, 10:19 jcxz Цитата(haker_fox @ Jul 4 2018, 13:19) Но ... Jul 4 2018, 10:30  haker_fox QUOTE (jcxz @ Jul 4 2018, 18:30) Ибо заче... Jul 4 2018, 12:28   jcxz Цитата(haker_fox @ Jul 4 2018, 15:28) Я н... Jul 4 2018, 12:43 AlexandrY Цитата(haker_fox @ Jul 4 2018, 13:19) Одн... Jul 4 2018, 10:36  jcxz Цитата(AlexandrY @ Jul 4 2018, 13:36) Так... Jul 4 2018, 11:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|