реклама на сайте
подробности

 
 
> Тонкости отладки, JTAG, printf, светодиоды, ножки + осциллограф
haker_fox
сообщение Jul 3 2018, 09:00
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 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 при отладке, почти не уступающее ему по возможностям? Или может быть я вообще не тем путём иду?
Спасибо!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jul 3 2018, 09:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(haker_fox @ Jul 3 2018, 12:00) *
Отладживать же программу с этим уровнем не всегда удобно, т.к. исчезают переменные, ветвления и даже функции.

А зачем, извините, отлаживать программу с включённой оптимизацией? wacko.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 3 2018, 10:16
Сообщение #3


Познающий...
******

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



QUOTE (jcxz @ Jul 3 2018, 17:15) *
А зачем, извините, отлаживать программу с включённой оптимизацией? wacko.gif

Потому что по мой опыт подсказывает, что программа с включенной оптимизацией может работать несколько по-другому. Банально, по причине изменившихся времён выполнения кода. Понимаю, что некорректное программирование. Но вот и надо отладить эти моменты. А по-этому и вижу целесообразность отлаживать сразу с оптимизацией. В общем хочется внешнего опыта по этому вопросу)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 4 2018, 08:07
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(haker_fox @ Jul 3 2018, 13:16) *
Банально, по причине изменившихся времён выполнения кода. Понимаю, что некорректное программирование. Но вот и надо отладить эти моменты. А по-этому и вижу целесообразность отлаживать сразу с оптимизацией. В общем хочется внешнего опыта по этому вопросу)

Банально, но это обыкновенное "заметание проблемы под ковёр" как тут кто-то сказал.
Вместо того, чтобы это своё "некорректное программирование" найти и исправить, Вы пытаетесь придумать костыль чтобы проблема не проявлялась. В медицине это ещё называют: "Борьба с симптомами вместо лечения причины".
Нормально всё отлаживаются без оптимизации. После чего включают оптимизацию и просто проверяют, что программа не перестала функционировать. Отлаживать тут особо не надо. Ну если только в крайнем случае - посмотреть пару переменных в паре точек останова, но это можно и по асм-коду разобраться.
Корректно написанная программа работает одинаково как с оптимизацией так и без. Ну разве что за исключением случаев, когда ресурса быстродействия - впритык.

Цитата(Arlleex @ Jul 3 2018, 13:17) *
Оптимизатор не исправляет ошибки пользователя - он лишь жестче показывает программисту, где он не прав, на мой взгляд laughing.gif

В точку! cool.gif

Цитата(Arlleex @ Jul 3 2018, 13:17) *
Ну а для устройств, которые должны отлаживаться далеко за пределами моего рабочего стола - я веду систему логгирования всего и вся на внутренний накопитель и при возникновении проблем - требую .log файл сессии, где уже с ним в поте лица сижу и думаю "шо цэ такое было".

Тоже часто так делаю. Для сложных проектов.
Ну и прочие комплексные сложные методы отладки.
Например: Когда отлаживал своё графическое API и юзер-интерфейс на его основе, то сделал эмуляцию работы LCD на компе (через USB-канал (уже использовался в устройстве) периодически передавал содержимое видеобуфера на комп и там рисовал его в проге на VS). А положение мышки на компе - через этот же USB на устройство. Так отладка графического API значительно упростилась и ускорилась.
Когда делали сложные устройства, длительное время работающие без выкл. питания и вдали от удобных мест отладки, то делали логгирование всяких критических событий (с полной инфой о них) в журналы во FRAM. С вытягиваением потом их по рабочему протоколу.
Сейчас вот пишу осциллографирование - тоже для отладки, наблюдение за множеством переменных в сложной программе в runtime.

Так что метода отладки сильно зависят от задачи.
А то что обязательно всегда есть по дефолту: JTAG/SWD и отладочный вывод в UART.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 09:48
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 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) *
Ну и место такому поделию - соответствующее.

Классное высказывание! У вас наверно идеальная продукция?!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 03:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016