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

 
 
> Тонкости отладки, 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
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 32)
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
Arlleex
сообщение Jul 3 2018, 10:17
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



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

Цитата
Но как принтфом получить информацию, что, скажем содержится в регистрах ssp или dma модуля, как остановить программу в нужном месте и посмотреть переменные?

Отладчик читает эту информацию ровно так же, как и программное чтение. Если Вы отладчиком прочитаете чувствительный к чтению регистр, программа и под дебаггером будет вести себя эпично-эпилепсично. Программу остановить можно, по крайней мере в Cortex-Mx, инструкцией программной точки останова BKPT + некое шаманство с регистрами отладчика (режим Halt вроде).
Отказываться от отладчика, ИМХО, глупо. Ну а насчет отладки в оптимизированных программах - то, как было сказано выше, это бесполезно (понятное дело, почему). Программа должна работать одинаково на любых уровнях оптимизации. Если это не так - это уже повод подсуетиться и посидеть денек над облагораживанием программы на предмет возможных скрытых багов. Оптимизатор не исправляет ошибки пользователя - он лишь жестче показывает программисту, где он не прав, на мой взгляд laughing.gif
Ну а для устройств, которые должны отлаживаться далеко за пределами моего рабочего стола - я веду систему логгирования всего и вся на внутренний накопитель и при возникновении проблем - требую .log файл сессии, где уже с ним в поте лица сижу и думаю "шо цэ такое было".
Осциллографом и лапкой МК смотрю обычно правильность настройки частоты этого МК по таймерам. Светодиодов пару всегда на устройствах ставлю - это дэ-факто. Ну а насчет call stack - программно тоже можно сделать, достаточно проанализировать состояние CPU и содержимое стека.

Сообщение отредактировал Arlleex - Jul 3 2018, 10:19
Go to the top of the page
 
+Quote Post
x893
сообщение Jul 3 2018, 10:58
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Jlink (SWD) + RTT
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jul 3 2018, 11:04
Сообщение #6


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



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


предлагаю перевести в плоскость "какие существуют" или "какие юзали-знаете"...

у мну зависило от задачи, камня, возможностей(читай лапок).
ногодрыг (осцил, светодиодик), jtag отладка, в лог файл (конфигурирование из ini файла)
не юзал, но на мой взгляд заслуживают внимания: - по сети (если проект поддерживает сеть)
так-же интересен подход в 1 пин (делается декодер на скорострельной плисине), делается код на сях (разница нолика от единички - в один ноп) и всё...достаточно шустро и не зависит от тактовой...

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


как то так...
(круглый)
Go to the top of the page
 
+Quote Post
scifi
сообщение Jul 3 2018, 11:49
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Интересное ограничение. Откуда взялся такой привередливый пользователь? Прямо так и говорит: "включайте оптимизацию, адназначна"? wacko.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 3 2018, 13:36
Сообщение #8


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

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



Коллеги, спасибо! Я не собираюсь отказываться от отладчика. Просто интересно было услышать какие есть альтернативы ему кроме тех, которые мне известны.
Обработчики на hardfault, stack overflow и out of heap у меня есть. Также использую configASSERT (из FreeRTOS). В eeprom пижу журнал на 20 событий, прямо текстом в случае наступления этих событий. EEPROM находится внутри МК, поэтому доступ к ней 100%, даже в обход штатных драйверов под управлением оси. Помогает видеть статистику сбоев.

QUOTE (scifi @ Jul 3 2018, 19:49) *
Интересное ограничение. Откуда взялся такой привередливый пользователь? Прямо так и говорит: "включайте оптимизацию, адназначна"? wacko.gif

Если это стёб, то как принято сейчас говорить очень толсто!. Я ничего не говорил о требованиях пользователя. Но я сказал, что пользователю требуется отправлять. По нашим внутренним требованиям.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 3 2018, 13:49
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Конкретно поинт про ненужность дебагера у злтиго считаю снобским и вредным. Он работает для самого злтиго и 5% таких же как он. А его попытка убедить всех что его рецепт применим для всех, а если пользуешься дебагером то "нипрограмист" откровенна вредна. Спустя десятки лет набитых шишок десятки схожих задач и проектоа, возможно дебагер и правда будет не нужен, но это значит только то что человек которому не нужен дебагер вошел таки в эти 5%.

Для чувствительных ко времени и плавающих багов, вначале ищу примерное место с браком. Потом добавляю туда бинарный логер, который никуда не выводит данные, а тихонько их накапливает в буфер. В некритичные моменты времени проверяю буфер на наличие признаков ошибочности. При наличии обычно bkpt и уже курю результат на паузе.
Цитата(scifi @ Jul 3 2018, 14:49) *
Интересное ограничение. Откуда взялся такой привередливый пользователь? Прямо так и говорит: "включайте оптимизацию, адназначна"? wacko.gif

Очень правильный пользователь, которых хочет отсечь бракоделов с UB. Высокий уровень оптимизации хорошо выявляет таких "индусов".
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 3 2018, 13:59
Сообщение #10


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

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



QUOTE (Kabdim @ Jul 3 2018, 21:49) *
Конкретно этот поинт

У меня есть предложение, давайте говорить либо на чистом английском, если вы умеете, а не на кальке, либо на русском rolleyes.gif 5 минут вчитывался в слово, и думал, вы допустили опечатку rolleyes.gif
QUOTE (Kabdim @ Jul 3 2018, 21:49) *
это значит только то что человек которому не нужен дебагер вошел таки в эти 5%.

Понятно, у меня примерно такие же измышления.
QUOTE (Kabdim @ Jul 3 2018, 21:49) *
При наличии обычно bkpt и уже курю результат на паузе.

Это уже интересно. Т.е. ассемблерная вставка (или макрос) с командой. Но, получается, что JTAG должен быть подключен.
QUOTE (Kabdim @ Jul 3 2018, 21:49) *
Очень правильный пользователь, которых хочет отсечь бракоделов с UB. Высокий уровень оптимизации хорошо выявляет "индусов".

Давайте будем жить реалиями. Большая часть пользователей вообще не разбирается в программировании. И оптимизация делается не для них, а по причине того, что прошивка должна войти в строго ограниченный объём флешки. Зачем это делается - говорить не буду. Но кто в теме, догадается)))
QUOTE (Kabdim @ Jul 3 2018, 21:49) *
Высокий уровень оптимизации хорошо выявляет "индусов".

Прежде всего это для собственного (я про себя) самолюбия и гордости. Без иронии. Ну, и посольку, я не один проект выполняю, мнение коллег тоже учитывается.

Кстати, отладчик не очень помогает, когда снаружи микроконтроллера висит железка, дающая этак 8 кГц на ногу прерываний, по прерываниям запускаются транзакции DMA и т.п. В момент остановки отладчиком, обычно выпадаем в ошибку DMA, или сразу после возобновления выполнения ПО. Т.к. потеряна синхронизации пакетов.


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


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(haker_fox @ Jul 3 2018, 12:00) *
Собственно говоря, вопрос в теме. Просьба поделиться, кто как отлаживает свои проекты, выполненные на микроконтроллерах. Ядро не принципиально, но лучше Cortex-M0/3/4(F).
Почему возник вопрос? Раньше я не пользовался для отладки JTAGом. В не меньшей степени этому способствовали отзывы об этом инструменте уважаемого zltigo. Кто на форуме давно, тот поймёт.

Да что-то давно не слышно zltigo.
Его искрометный сарказм здОрово веселил в былые времена.
С тех пор мало что изменилось в отладке.

Ну вот я стал ставить RGB светодиоды. Эт честно был прорыв в нашей сфере. Конкуренты увяли.
Они лепили кастомные платы, ставили туда десяточек одноцветных диодов и преподносили это как великолепную диагностическую панель.
А мы повесили дешевую RGB ленту и вывели на нее сотни! диагностических сигналов.
Ну надписали их конечно.
Один взгляд и практически сразу ясно что случилось с системой.
Откуда собственно и растут ноги у этого проекта - https://habr.com/post/373027/
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 3 2018, 14:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Компилю сразу с включенной оптимизацией, если надо что-то отлаживать по шагам оптимизацию отключаю.
Логи вывожу через RTT + китайский Jlink (правда мне в нем не нравится отсутствие возможности вывода цветного текста) или uart в putty (тут с цветным текстом нет проблем).
Логический анализатор saleae китайский клон, usb-uart переходник.
Tracealyzer для Freertos
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 3 2018, 14:34
Сообщение #13


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

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



QUOTE (AlexandrY @ Jul 3 2018, 22:08) *
Да что-то давно не слышно zltigo.

Да, без него скучно... И опыт у него огромный. Жаль, что исчез(((

QUOTE (uriy @ Jul 3 2018, 22:08) *
Логи вывожу через RTT
Tracealyzer для Freertos

ВО! Точно, давно о них знаю, но всё никак не попробовал.
Как я понимаю, RTT абсолютно даром выкачивается с сеггера.
А вот Traceanalyzer врод как за денежку. Не подскажете, есть на наших закромах "нежадная" версия?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 3 2018, 15:06
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



При работе с дебаггером :
Вместо отладочного printf - использую "log" breakpoint. (это не требует перекомпиляции, изменения кода, можно менять-переставлять BP во время отладки).
Для отладки в "жестком" реалтайме (таймеры, прерывания, RTOS) - ногодрыг, выводимый на осцилограф с лог.анализатор или ЛА Saleae.
Критерий правильности софта - когда debug и release версии работают одинаково. Опции оптимизации - по необходимости, но когда после их изменения что-то перестает работать - стараюсь разобраться в причине.
JTAG экономит много времени и невров.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 3 2018, 16:59
Сообщение #15


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(haker_fox @ Jul 3 2018, 17:34) *
ВО! Точно, давно о них знаю, но всё никак не попробовал.

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

Но консоль сама по себе довольно устаревший подход.
Я тут в инетах видел гуляет микриумовский uC/Probe.
Правда сам не пробовал, у меня есть неплохой аналог, но за такими штуками будущее отладки.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 3 2018, 17:59
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
RTT хорош когда у чипа нет вывода SWO.
Не соглашусь. Насколько я знаю через SWO невозможно выводить по прерываниям. SWO работает только через поллинг. Это значит ваш код с выключенными отладочными сообщения будет работать совсем по другому. Если я не прав покажите как выводить через SWO по прерываниям.
RTT же работает по прерываниям. Причем можно настроить разное поведение по переполнению буфера. Можно ждать когда в нем появится место а можно откинуть данные. Вот тут отличная статья о нем https://habr.com/post/259205/

Цитата
А так следует учесть, что консоль работающая по RTT сразу схлопывается если выключить режим отладки, скажем перейти в редактирование.
В смысле RTT viewer приходится перезапускать? Да это напрягает. Иногда он работает после рестарта кода иногда нет.

Цитата
Как я понимаю, RTT абсолютно даром выкачивается с сеггера.
Не знаю. Я ставлю скачанный софт для jlink с закромов там вроде сразу все ставится. Отдельно RTT вроде не ставил.

Tracealyzer https://electronix.ru/forum/index.php?showtopic=127646

Для вывода данных через RTT использую вот такие макросы

Код
#define DEBUG_MSG    // default color
#define INFO_MSG    // green color
#define WARNING_MSG    // yellow
#define ERROR_MSG    // red


#ifdef DEBUG_MSG
#define DEBUG(fmt, args...) \
        SEGGER_RTT_printf(0,"%s%s %-20s:%-4d: " fmt "%s\r\n", RTT_CTRL_TEXT_WHITE, GetUpTimeASCII(), __func__, __LINE__, ## args, RTT_CTRL_RESET)
#else
    #define DEBUG(fmt, args...)
#endif

#ifdef INFO_MSG
#define INFO(fmt, args...) \
        SEGGER_RTT_printf(0,"%s%s %-20s:%-4d: " fmt "%s\r\n", RTT_CTRL_TEXT_BRIGHT_GREEN, GetUpTimeASCII(), __func__, __LINE__, ## args, RTT_CTRL_RESET)
#else
    #define INFO(fmt, args...)
#endif

#ifdef WARNING_MSG
#define WARNING(fmt, args...) \
        SEGGER_RTT_printf(0,"%s%s %-20s:%-4d: " fmt "%s\r\n", RTT_CTRL_TEXT_BRIGHT_YELLOW, GetUpTimeASCII(), __func__, __LINE__, ## args, RTT_CTRL_RESET)
#else
    #define WARNING(fmt, args...)
#endif

#ifdef ERROR_MSG
#define ERROR(fmt, args...) \
        SEGGER_RTT_printf(0,"%s%s %-20s:%-4d: " fmt "%s\r\n", RTT_CTRL_TEXT_BRIGHT_RED, GetUpTimeASCII(), __func__, __LINE__, ## args, RTT_CTRL_RESET)
#else
    #define ERROR(fmt, args...)
#endif
для putty через uart туда добавляю еще эскейп последовательности для цвета. Если надо оставить например только сообщения об ошибках закрываю дефайны в самом верху.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 04:34
Сообщение #17


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

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



QUOTE (AlexandrY @ Jul 4 2018, 00:59) *
у меня есть неплохой анало

Можно подробнее?


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


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Вот что оказывается надо сделать https://devzone.nordicsemi.com/f/nordic-q-a...wer/68926#68926 чтобы в RTT пошел цветной текст
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 05:42
Сообщение #19


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

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



Попробовал RTT. С наскоку (сразу) заработал вывод в буфер 0. Ввод не делал. В буфер 1 не работает. Полагаю, надо что-то настраивать. Порадовало, что судя по документации виртуальных консолей доступно более, чем может понадобиться. Также добавляет уверенность наличие исходников RTT для TARGET. С ними не разбирался, но в будущем можно понять, какой добавляется избыток в программу)))) Traceanalyzer не осилил. Он не подклчается к микроконтроллеру. Но там настроек очень много, а времени на это сейчас нет. В общем, uriy, выражаю вам благодарность за то, что напомнили мне об этих инструментах!

QUOTE (k155la3 @ Jul 3 2018, 23:06) *
Критерий правильности софта - когда debug и release версии работают одинаково.

Скажем, необходимое, но недостаточное условие rolleyes.gif Но я согласен!
Но всё же, хотелось бы по-максимум исключить стадию перевода проекта на более выскоий уровень оптимизации. Хотя, как показывает беседа, от этого придётся отказаться. Любое средство отладки (или почти любое?) вносит свои нюансы в целевое устройство. Да даже банальный осциллограф оказывает воздействие на схему. ОФФ: помню, как долго добивался работоспособности nand-флешки на высокой частоте, пока не догадался отключить логический анализатор. А он у нас не китай, а lecroy rolleyes.gif


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


Гуру
******

Группа: Свой
Сообщений: 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
AlexandrY
сообщение Jul 4 2018, 08:10
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(uriy @ Jul 3 2018, 20:59) *
Не соглашусь. Насколько я знаю через SWO невозможно ....
Вот тут отличная статья о нем

Эт моя статья. biggrin.gif
Здесь я SWO упомянул в связи с использованием такой фичи Cortex-ов как Trace Port Interface Unit
Вот действительно очень нужная, просто критически необходимая вещь.

Почему здесь о ней ни разу ничего не видел даже странно.
Этот интерфейс связывает отладчик с Instrumentation Trace Macrocell (ITM)
Например в IAR есть хидер arm_itm.h с объявлениями типа ITM_EVENT8(channel, value)
Это как раз симулирует вывод на виртуальный пин сигнала чтобы посмотреть временную характеристику.
Только смотрят не осциллографом, а прямо в окне отладчика в виде графика.
Таких сигналов можно сотнями создавать, программе они обходятся в пару тактов.
И измерять их время с точностью до наносекунд. Можно среднее смотреть, можно худшее-лучшее время.
Именно с помощью ITM можно надежно посмотреть как оптимизация влияет на скорость разных функций и прерываний.
Кстати, временные характеристики (когда случились, сколько длились, кого прервали) всех прерываний выводятся через ITM автоматически без вставки каких либо команд.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 4 2018, 08:18
Сообщение #22


Гуру
******

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



Цитата(Kabdim @ Jul 3 2018, 16:49) *
Очень правильный пользователь, которых хочет отсечь бракоделов с UB. Высокий уровень оптимизации хорошо выявляет таких "индусов".

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

Цитата(AlexandrY @ Jul 3 2018, 17:08) *
Да что-то давно не слышно zltigo.

Видимо столкнулся с багом, который никак не находится без JTAG. А использовать JTAG - религия не позволяет. Вот и ищет его до сих пор. biggrin.gif

Цитата(AlexandrY @ Jul 3 2018, 17:08) *
Конкуренты увяли.
Они лепили кастомные платы, ставили туда десяточек одноцветных диодов и преподносили это как великолепную диагностическую панель. А мы повесили дешевую RGB ленту и вывели на нее сотни! диагностических сигналов.

Следующий ответный шаг конкурентов: вывести отладочную инфу в UART. biggrin.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 4 2018, 08:22
Сообщение #23


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(jcxz @ Jul 4 2018, 11:12) *
Полностью согласен. Хотя даже тут, на форуме, приходится видеть фразы типа: "никогда не включаю оптимизацию". Видимо если её включить - всё повалится, а чел не хочет/не может искать свои баги. Ну и место такому поделию - соответствующее.

GCC-шниками что есть оптимизация что нет все одинаково, вот и не используют.
А так нормальная практика когда отладил без оптимизации, потом включил оптимизацию скомпилировал и отдал не глядя.
Но это уже надо иметь железную интуицию.

Цитата(jcxz @ Jul 4 2018, 11:18) *
Следующий ответный шаг конкурентов: вывести отладочную инфу в UART. biggrin.gif

Не UART, а облака.
И да, они тут нас урыли, но надеюсь ненадолго.
Go to the top of the page
 
+Quote Post
Kabdim
сообщение Jul 4 2018, 09:25
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



Цитата(AlexandrY @ Jul 4 2018, 11:22) *
GCC-шниками что есть оптимизация что нет все одинаково, вот и не используют.

Обоснуйте вашу точку зрения, пожалуйста.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 09:48
Сообщение #25


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

Группа: Свой
Сообщений: 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
jcxz
сообщение Jul 4 2018, 09:53
Сообщение #26


Гуру
******

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



Цитата(haker_fox @ Jul 4 2018, 12:48) *
Да? Вы серьёзно? Я вот такую квалификацию пока не заработал.

Тогда у Вас всё впереди laughing.gif

Цитата(haker_fox @ Jul 4 2018, 12:48) *
Вообще, jcxz, вопрос мой был больше про методы отладки, кто что использует. И можно ли отладиться без JTAG. Вот и всё. Будем считать, что это мой личный интерес.

Тогда вопрос поставлен неправильно. Ибо зачем "без JTAG"? Чтобы создать себе трудности, чтоб жизнь мёдом не казалась? rolleyes.gif Для достижения результата стОит (и нужно) использовать все методы, позволяющие достичь его с бОльшей скоростью и меньшими тратами.

Цитата(haker_fox @ Jul 4 2018, 12:48) *
Классное высказывание! У вас наверно идеальная продукция?!

При чём тут идеальность? Моя продукция не валится при включении оптимизации. Ибо когда такое происходит, я берусь за отладчик и не двигаюсь дальше, пока не найду причину.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 4 2018, 09:57
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Здесь я SWO упомянул в связи с использованием такой фичи Cortex-ов как Trace Port Interface Unit
AlexandrY это вам тема для новой статьи!
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 10:19
Сообщение #28


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

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



QUOTE (jcxz @ Jul 4 2018, 17:53) *
Тогда у Вас всё впереди laughing.gif

Ну так мне это действительно интересно! Я и тему это создал ради интереса, удовлетворения потребности расширения кругозора))) Когда у меня реальные трудности на работе, я практически не создаю темы, а сижу, и упорно решаю задачу. Так, что созданные темы на форуме - скорее показатель жажды знаний.
QUOTE (jcxz @ Jul 4 2018, 17:53) *
Тогда вопрос поставлен неправильно. Ибо зачем "без JTAG"? Чтобы создать себе трудности, чтоб жизнь мёдом не казалась? rolleyes.gif Для достижения результата стОит (и нужно) использовать все методы, позволяющие достичь его с бОльшей скоростью и меньшими тратами.

Вполне возможно, я посавил вопрос некорректно для других людей. Но ещё раз: я использую JTAG. Каждый рабочий день. На равне с этим я использую printf, консоль из состава FreeRTOS, журнал событий в EEPROM, ведётся логгирование на NAND. Но мне стало интересно, а можно ли без него, но по возможностям, не уступающим? Неужели, вы никогда не пробуете сделать что-то не стандарным путём, а альтернативным?

QUOTE (jcxz @ Jul 4 2018, 17:53) *
При чём тут идеальность? Моя продукция не валится при включении оптимизации. Ибо когда такое происходит, я берусь за отладчик и не двигаюсь дальше, пока не найду причину.

Ещё раз, я интересуюсь альтернативным путём. Работа моя (за которые деньги получаю) не стоит. Мне не платят за одни мечтания. Поэтому я тоже беру все отладочные средства, которые у меня имются, и ищу проблему. Ибо начальнику нужен результат.

З.Ы. Может быть вы не позволяете себе мечтать?)))))

QUOTE (jcxz @ Jul 4 2018, 17:53) *
(и нужно) использовать все методы, позволяющие достичь его с бОльшей скоростью и меньшими тратами.

Я не возражаю против этого по отношению к вам. Но сам с этим не согласен. Иногда считаю полезным пройти другим путём. Знаете ли, полезно)))) Люблю эксперементировать.

QUOTE (jcxz @ Jul 4 2018, 17:53) *
я берусь за отладчик и не двигаюсь дальше, пока не найду причину.

Если вы про J-Link, то тут главное не стать рабом этого средства) Потому, что оказавшись в поле, один на один с объектом, вы можете быть лишены возможности подключить отладчик, и даже вскрыть корпус. Но вам никто не запретит воткнуть USB кабель, и получить канал связи в своё распоряжение. Хотя можно J-Link запаять на плату в устройство, как вариант. Но это мне не подходит. Да и не одобрят мне такой подход. А вот консоль, журналы и т.д. и т.п. использовать можно.

Одно из наших устройств работает на электрической подстанции. И никто не будет отключать оперативное напряжение для того, чтобы мы открыли корпус. Но подключить ETHERNET/USB вполне могут. Вот и как отлаживать?


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


Гуру
******

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



Цитата(haker_fox @ Jul 4 2018, 13:19) *
Но мне стало интересно, а можно ли без него
да
Цитата(haker_fox @ Jul 4 2018, 13:19) *
, но по возможностям, не уступающим?
нет.
Ибо зачем бы его тогда придумывали и лепили (прямо в ядро уже), если и без него можно и нет никакой разницы?
Цитата(haker_fox @ Jul 4 2018, 13:19) *
Неужели, вы никогда не пробуете сделать что-то не стандарным путём, а альтернативным?

Трусы всегда надеваю через ноги, через голову никогда не пробовал. Если Вы про это.... cool.gif

Цитата(haker_fox @ Jul 4 2018, 13:19) *
Если вы про J-Link, то тут главное не стать рабом этого средства) Потому, что оказавшись в поле, один на один с объектом, вы можете быть лишены возможности подключить отладчик, и даже вскрыть корпус. Но вам никто не запретит воткнуть USB кабель, и получить канал связи в своё распоряжение.

Я не про J-Link. Я про весь отладочный комплекс.
Видимо Вы не читаете мои сообщения..... sad.gif Прочитайте моё сообщение выше, про каналы отладки, которые мне приходилось использовать: https://electronix.ru/forum/index.php?showt...p;#entry1570953

Цитата(haker_fox @ Jul 4 2018, 13:19) *
Одно из наших устройств работает на электрической подстанции. И никто не будет отключать оперативное напряжение для того, чтобы мы открыли корпус. Но подключить ETHERNET/USB вполне могут. Вот и как отлаживать?

Вы не поверите, но уже десятки тысяч моих устройств работают на электрических подстанциях РФ и соседних стран (и не очень соседних). И никто не отключает напряжение, когда нам надо что-то проверить в своих устройствах laughing.gif
PS: А вот USB на подстанциях не место. Имхо.....
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 4 2018, 10:36
Сообщение #30


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(haker_fox @ Jul 4 2018, 13:19) *
Одно из наших устройств работает на электрической подстанции. И никто не будет отключать оперативное напряжение для того, чтобы мы открыли корпус. Но подключить ETHERNET/USB вполне могут. Вот и как отлаживать?

Хм, у меня на сети подстанций в узлах рядом с релейной защитой стояли SNMP шлюзы к системам климата.
Не так ответственно, но все равно режимные объекты.
Так на ура открывали двери и пускали. Я молча открывал корпус и сразу присоединялся к JTAG-у.
Более того я и на ARM-ы 7-ые в свое время перешел только из-за JTAG-а.
А то мне и 51-х которые на 300МГц работали хватало.

Даже сервисным инженерам на местах посылали свои адаптеры JTAG.

Встраиваемый JTAG тож интересная тема, но тормозит не дополнительная цена, а то что его функции будут урезанными и в результате получится ни то ни сё.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 4 2018, 11:32
Сообщение #31


Гуру
******

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



Цитата(AlexandrY @ Jul 4 2018, 13:36) *
Так на ура открывали двери и пускали. Я молча открывал корпус и сразу присоединялся к JTAG-у.

А если не девайсе стоит пломба(ы)? Сможете не нарушив её на "ура" подсоединиться? smile3009.gif

Да и объекты видимо были не очень режимными, т.к. даже пару инструктажей по ТБ не провели cool.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jul 4 2018, 12:28
Сообщение #32


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

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



QUOTE (jcxz @ Jul 4 2018, 18:30) *
Ибо зачем бы его тогда придумывали и лепили (прямо в ядро уже), если и без него можно и нет никакой разницы?

Да мало ли зачем.
QUOTE (jcxz @ Jul 4 2018, 18:30) *
Трусы всегда надеваю через ноги, через голову никогда не пробовал. Если Вы про это.... cool.gif

Понятно.
QUOTE (jcxz @ Jul 4 2018, 18:30) *
Я не про J-Link. Я про весь отладочный комплекс.
Видимо Вы не читаете мои сообщения..... sad.gif

Ну как же не читаю. Ваши как раз в одну из первых очередей. Это правда.
Просто конкретно в этом случае я вас не правильно понял.
QUOTE (jcxz @ Jul 4 2018, 18:30) *
Вы не поверите, но уже десятки тысяч моих устройств работают на электрических подстанциях РФ и соседних стран (и не очень соседних).

Я не про количество устройств, а про модельный ряд. Одно из наших устройств также будет растиражировано. Но это десятки тысяч одной модели!
QUOTE (jcxz @ Jul 4 2018, 18:30) *
моих устройств

Вы их один делаете (вряд ли), значит вы руководитель отдела/группы?
QUOTE (jcxz @ Jul 4 2018, 18:30) *
устройств работают на электрических подстанциях РФ и соседних стран

Что вы делаете? РЗиА или ?
QUOTE (jcxz @ Jul 4 2018, 18:30) *
PS: А вот USB на подстанциях не место. Имхо.....

Вполне возможно. Но есть ещё ETHERNET.

QUOTE (AlexandrY @ Jul 4 2018, 18:36) *
Так на ура открывали двери и пускали.

Я не знаю, как обстоят дела с этим у вас (где вы живёте), у нас не всё так просто. Но прямо удивительно, что на действующую электроустановку просто брали и открывали двери...

QUOTE (jcxz @ Jul 4 2018, 18:30) *
И никто не отключает напряжение, когда нам надо что-то проверить в своих устройствах laughing.gif

Как вы осуществляете доступ к своим устройствам? Удалённо? Я ещё раз повторюсь, энергетики просто так никого не пускают на действующие электроустановки в РФ. Либо у вас есть допуск (не знаю какой и кем оформленный), либо ваше устройство имеет удалённый интерфейс.

Конкретно: привод высоковольтного выключателя 110 кВ. Какой ответственный за подстанцию в своём уме пустит туда постороннего? Они своих-то по двое запускают на опертивные переключения, да ещё с камерой на каске. Чтобы вот такие моменты фиксировать)


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


Гуру
******

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



Цитата(haker_fox @ Jul 4 2018, 15:28) *
Я не про количество устройств, а про модельный ряд. Одно из наших устройств также будет растиражировано. Но это десятки тысяч одной модели!

Ну и в модельном ряду 7-8 шт. точно есть.

Цитата(haker_fox @ Jul 4 2018, 15:28) *
Вы их один делаете (вряд ли), значит вы руководитель отдела/группы?

Делал. На прошлой работе. В группе конечно. Но значительную часть ПО.

Цитата(haker_fox @ Jul 4 2018, 15:28) *
Что вы делаете? РЗиА или ?

АСКУЭ, АСТУЭ, АСДУЭ.

Цитата(haker_fox @ Jul 4 2018, 15:28) *
Как вы осуществляете доступ к своим устройствам? Удалённо? Я ещё раз повторюсь, энергетики просто так никого не пускают на действующие электроустановки в РФ. Либо у вас есть допуск (не знаю какой и кем оформленный), либо ваше устройство имеет удалённый интерфейс.

Удалённо обычно. В действующие лично - только при проблемах. Со всеми необходимыми бумажками, согласованиями, инструктажами и т.п. в допустимые технологические окна.

Цитата(haker_fox @ Jul 4 2018, 15:28) *
Конкретно: привод высоковольтного выключателя 110 кВ. Какой ответственный за подстанцию в своём уме пустит туда постороннего?

Когда есть бумажка, то ты уже не посторонний. rolleyes.gif В составе бригады и всех надзирающих и руководителей работ канеш. Которые подскажут где надо пригнуться, а куда лучше вообще не приближаться. biggrin.gif
А подобные моменты сам лично наблюдал. Правда не такие суровые. Ну так то была 30-ка всего crying.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 06:53
Рейтинг@Mail.ru


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