IgorAVR2 1 29 ноября, 2022 Опубликовано 29 ноября, 2022 · Жалоба Есть такой отладчик (трассировщик) J-Trace Pro от Segger. Он позволяет в реальном времени показывать время выполнения той или иной функции на Си. Но цена его у производителя 2 тыс. евро. А в России намного дороже. Есть ли альтернативы ему? Может быть есть трассировщики других производителей и дешевле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 29 ноября, 2022 Опубликовано 29 ноября, 2022 · Жалоба Махание ногой на входе-выходе интересующей функции и логический анализатор - китайский аналог saleale. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба Коллеги, не растолкуете мне чуть более подробнее: чем лучше иметь трассировщик по сравнению с отладчиком (J-Link например)? Насколько я помню, на 20-ногий разъём JTAG выводятся дополнительные ножки для трассировочной информации. А в случае интерфейса SWD у нас есть одна линия SWO. Т.е., как я понимаю, отладчик может и трассировать тоже? Или есть какие-то нюансы? Я сам не пользовался этой возможностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 4 часа назад, IgorAVR2 сказал: Есть ли альтернативы ему? Может быть есть трассировщики других производителей и дешевле? Откройте какой-нить отладчик. Например IAR. Найдите в нём окошко "Current CPU Registers". Найдите в нём регистры: И измеряйте по ним время выполнения вашей функции сколько угодно раз и совершенно бесплатно. 58 минут назад, haker_fox сказал: Коллеги, не растолкуете мне чуть более подробнее: чем лучше иметь трассировщик по сравнению с отладчиком (J-Link например)? Имхо: Самое главное достоинство трэйсера - возможность обратной трассировки. Обычно по SWD такая функция недоступна. Правда в некоторых МК, которые имеют свой встроенный ETB (enhanced trace buffer вроде), за счёт него имеют возможность обратной трассировки, даже через обычный JTAG/SWD с обычным эмулятором без трэйсера. Но ETB имеют очень редкие МК. Кстати: LPC43xx - один из немногих, в которых ETB как раз имеется. Вам должно быть это известно (Вы же вроде LPC43xx используете?) Когда я имел счастье работать с LPC4370, я пользовался его шикарным ETB, не тратясь на трэйсер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 14 minutes ago, jcxz said: Вам должно быть это известно (Вы же вроде LPC43xx используете?) Когда я имел счастье работать с LPC4370, я пользовался его шикарным ETB, не тратясь на трэйсер. Да, я использую LPC4337. Да, знаю о наличие ETB, но как-то не сложилось им пользоваться. Не возникало необходимости наверное. Либо не распробовал сладкий вкус этой отладки 15 minutes ago, jcxz said: возможность обратной трассировки. Простите, чтобы сейчас не заниматься переводом с английского на русский, под обратной трассировкой Вы подразумеваете, что можно от точки Г пройти назад к точке А и проследить "флешбэк" (по аналогии с фильмом) ошибки или странной ситуации в программе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 5 минут назад, haker_fox сказал: под обратной трассировкой Вы подразумеваете, что можно от точки Г пройти назад к точке А и проследить "флешбэк" (по аналогии с фильмом) ошибки или странной ситуации в программе? Да, именно так. Позволяет проследить "как мы докатились до такого безобразия, на которое сейчас смотрит наш PC". 5 минут назад, haker_fox сказал: знаю о наличие ETB, но как-то не сложилось им пользоваться. Не возникало необходимости наверное. Видимо Вы - один из тех немногих счастливцев, которые никогда не сталкивались с вышеописанным безобразием. Остаётся только позавидовать 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 1 minute ago, jcxz said: Да, именно так. Позволяет проследить "как мы докатились до такого безобразия, на которое сейчас смотрит наш PC". Спасибо) 1 minute ago, jcxz said: Видимо Вы - один из тех немногих счастливцев, которые никогда не сталкивались с вышеописанным безобразием. Остаётся только позавидовать Возможно, что я просто игнорировал данный способ отладки. Теперь не буду. Правда вместо LPC4337 мне светит либо GD32F450, либо AT32F437... А у этих зверьков я ещё не исследовал все возможные способы отладки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorAVR2 1 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 11 hours ago, Сергей Борщ said: Махание ногой на входе-выходе интересующей функции и логический анализатор - китайский аналог saleale. Вопрос у меня не в том как изменить время выполнения одной функции, это я спокойно и раньше делал аналогичным способом, а в том как анализировать куча разных функций, код в которые всё время пишется, да при этом их нужно выполнять максимально быстро. Других путей как эта функция трассировщика пока не придумал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 1 час назад, IgorAVR2 сказал: а в том как анализировать куча разных функций, код в которые всё время пишется Чем мой способ не подходит? И дописывать ничего не нужно и измеряет с точностью до такта CPU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 8 hours ago, haker_fox said: Да, я использую LPC4337. Да, знаю о наличие ETB, но как-то не сложилось им пользоваться. Не возникало необходимости наверное. Либо не распробовал сладкий вкус этой отладки Простите, чтобы сейчас не заниматься переводом с английского на русский, под обратной трассировкой Вы подразумеваете, что можно от точки Г пройти назад к точке А и проследить "флешбэк" (по аналогии с фильмом) ошибки или странной ситуации в программе? обычно под бэктрейсом подразумевается раскрутка стека по фрэйм-поинтерам, то есть сугубо С-шная отладка (вряд ли кто-то стэк фрейм на ассемблерном коде поддерживает) по ETB и подобным логам можно ходить назад, но если была например инструкция XOR R1, R2 то восстановить R1 и R2, зная результат не получится, а таке трэйсы, которые хранят вообще все, возможны по-моему, только в HDL симуляции, в кремний такое не засунешь... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 2 часа назад, yes сказал: обычно под бэктрейсом подразумевается раскрутка стека по фрэйм-поинтерам, то есть сугубо С-шная отладка (вряд ли кто-то стэк фрейм на ассемблерном коде поддерживает) Может это Вы так подразумеваете, но если почитать описание функционала J-Trace с segger.com, то они это понимают именно так, как я описывал: Цитата Unlimited instruction trace The main information which can be retrieved from the trace data is the execution flow of the system, so which instructions have been executed or not executed. Debugger applications can visualize the instruction trace data, usually done in a backtracing fashion. The most recently executed instructions are displayed and optionally mapped to the application's sources. This allows navigating through them to see what happened last in the target system. With non-stream trace probes, the available instructions for backtracing is limited to the internal trace buffer of the trace probe, which only holds the latest trace data when the target system is halted. Using target system internal trace capabilities, like the Embedded Trace Buffer (ETB), which can store a few kilobytes of trace data in internal RAM, limits the available trace data even more. The J-Trace PRO streaming trace capability technically enables instruction tracing of the whole system execution from the startup to its current point. To find issues in the execution a limited trace buffer might be sufficient, but streaming trace allows a complete analysis of the system to be used for code coverage and profiling analysis. 2 часа назад, yes сказал: по ETB и подобным логам можно ходить назад, но если была например инструкция XOR R1, R2 то восстановить R1 и R2, зная результат не получится, а таке трэйсы, которые хранят вообще все, возможны по-моему, только в HDL симуляции, в кремний такое не засунешь... Обратная трассировка даёт возможность проследить последовательность выполненных команд. Это обычно самое полезное. И (как видно из цитаты выше) преимущество трэйсера в том, что он сразу (in real time) выдаёт наружу инфу трассировки. Таким образом снимается ограничение размером ETB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorAVR2 1 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 2 hours ago, jcxz said: Чем мой способ не подходит? И дописывать ничего не нужно и измеряет с точностью до такта CPU. Не подходит тем что он не показывает в реальном времени да ещё и по нескольким функциям. И совсем не наглядно, т.к. показывает в тактах, а не во времени в процентах. Или я не правильно как то понимаю ваш способ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 8 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 51 minutes ago, jcxz said: Может это Вы так подразумеваете, но если почитать описание функционала J-Trace с segger.com, то они это понимают именно так, как я описывал: не я один gdb backtrace - такая есть команда ---------------------------------------- по поводу ETB у меня всегда были вопросы с реалтаймовостью, особенно с теми ETB, которые читаются через SWD, а не через специальный порт с много-много ножек да, там насколько я понимаю, используется некая компресия - ну типа не все подряд пишется, а только инструкции перехода и т.п. но все равно, гарантий, что успеет скачаться по жидкому проводку без торможения ядра.... я использую всякие полусамодельные логгеры для отладки каких-либо "coredump-ов" типа эксепшинов и т.п. а в реалтайме все-таки другие методы нужны - ну тот же светодиод или перформанс счетчики... upd: ну то есть в железке (HDL) прикрутить самодельный аналог ETB не проблема, сложнее написать толковый разборщик содержимого этиих буферов. поэтому я, например, люблю библиотеку Gaisler-а - код RTL там может и не самый прямой и к тому же VHDL, но зато великолепный отладчик grmon, который все это умеет "ис коропки" тут из-за известных событий проекты в РФ у меня прекратились и я не успел, но хотел прикрутить вот эту штуку (ее может и с готовым процем запустить, не с софткоре-м) https://baical.net/p7.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба То о чём говорится - требует jtag отладчика с реальными аппаратными линиями трассировки, через swd трассировка в реальном времени невозможна. GTAG + 16линий трассы + аппаратный полный usb3.1 + быстрая память на пару гиг ->>> имеет ценник выше 1к зелени. Предназначен для очень жирных фпга и мк. Программное обеспечение тоже имеет не гуманный ценник, и не продаётся в нашей стране. Кроме того, железяка в любой момент может превратиться в кирпич, если заокеанскому партнёру чего-то не понравится. Офлайн железка работать не умеет, и кстати не продаётся у нас. Свистоперделки с одной линией трассировки, не способны на трассировку в реальном времени даже на заниженной до 1МГц тактовой ядра мк. Оригинальный stlink3 - тоже не может, я проверял. Я не знаю других вариантов, но с удовольствием послушал-бы о них. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 30 ноября, 2022 Опубликовано 30 ноября, 2022 · Жалоба 1 час назад, IgorAVR2 сказал: Не подходит тем что он не показывает в реальном времени да ещё и по нескольким функциям. И совсем не наглядно, т.к. показывает в тактах, а не во времени в процентах. Если надо в реальном времени - никто не мешает читать этот же счётчик программно. И сколько функций нужно - столько и меряйте, тоже не проблема. Чтобы показывать в процентах, их надо считать относительно чего-то. Если знаете относительно чего, опять-же - кто мешает вычислить отношение? 1 час назад, yes сказал: по поводу ETB у меня всегда были вопросы с реалтаймовостью, особенно с теми ETB, которые читаются через SWD, а не через специальный порт с много-много ножек да, там насколько я понимаю, используется некая компресия - ну типа не все подряд пишется, а только инструкции перехода и т.п. но все равно, гарантий, что успеет скачаться по жидкому проводку без торможения ядра.... Вы не прочитали цитату, которую я привёл выше.... ETB - это не для реалтаймовой выдачи потока инструкций наружу. ETB сохраняет их внутри, в кольцевой буфер во внутренней ОЗУ МК. А выдаёт наружу только по требованию, например: когда вы остановили выполнение отладчиком и открыли окошко "tracing". И скорость чтения поэтому не важна, даже через SWD она такая, что не успеете глазом моргнуть как окошко заполнится. Соответствено никаких "компрессий" в ETB нет. А вот J-Trace - он сохраняет не во внутренний буфер, а выдаёт наружу в реальном времени. Я же специально привёл цитату с сайта segger - советую всё-же прочитать её. Там это всё написано. 1 час назад, yes сказал: я использую всякие полусамодельные логгеры для отладки каких-либо "coredump-ов" типа эксепшинов и т.п. а в реалтайме все-таки другие методы нужны - ну тот же светодиод или перформанс счетчики... При разрушении стека и улёта выполнения по произвольному адресу, никакой светодиод не поможет. А вот трэйсер в такой ситуации весьма полезен. 1 час назад, yes сказал: ну то есть в железке (HDL) прикрутить самодельный аналог ETB не проблема Вот откуда такое стремление всё колхозить на коленке??? Неужто свободного времени вагон? Ведь трэйсер - это уже готовое решение, колхоз не нужен. 1 час назад, AVI-crak сказал: То о чём говорится - требует jtag отладчика с реальными аппаратными линиями трассировки, через swd трассировка в реальном времени невозможна. ETB выполняет трассировку именно в реальном времени. Только наружу выдаёт не в реальном, через бутылочное горлышко. Советую всё же почитать мануал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться