Контрольный код выполнения кода с Trace32

У меня есть встроенная система с кодом, который я хотел бы сравнить. В этом случае есть одна строка, которую я хочу знать, на сколько времени потрачено (это создание нового объекта, который запускает остальную часть нашего приложения).

Я могу открыть Trace->Chart->Symbols и посмотреть, сколько времени занимает область, выделенная моим курсором, но это громоздко и не так точно, как хотелось бы. Я также нашел Perf->Function Runtime, но я тестирую назначение нового объекта, а не какого-либо конкретного вызова функции (new вызывается в нескольких местах, а не только на интересующей линии).

Есть ли способ просмотреть реальное время, затраченное на строку кода с помощью Trace32? Пройдя дальше, чем на одну строчку: будет ли способ легко определить время между двумя контрольными точками?

2 ответа

Решение

Решение по codehearts, которое использует RunTime команды, это просто хорошо, если у вас нет трассировки в реальном времени. Он работает с любым инструментом Lauterbach и любым целевым процессором.

Однако, если у вас есть трассировка в режиме реального времени (например, процессор с ETM и Lauterbach PowerTrace hardare), я рекомендую использовать команду Trace.STATistic.AddressDURation <start-addr> <end-addr> вместо. Эта команда открывает окно, которое показывает среднее время между двумя адресами. Вы получите лучшие результаты, если вы выполните код между двумя адресами несколько раз.

Если вы используете процессор ARM Cortex, который поддерживает синхронизирующую информацию о времени цикла (обычно это все Cortex-A, Cortex-R и Cortex-M7), вы можете значительно повысить точность результата, используя настройки ETM.TImeMode.CycleAccurate (вместе с ETM.CLOCK <core-frequency>).

Если вы используете Lauterbach CombiProbe или uTrace (и вы не можете использовать ETM.TImeMode.CycleAccurate) Рекомендую настройку Trace.PortFilter.ON, (По умолчанию порт-фильтр установлен на PACK, что позволяет записывать больше данных и программ, но с немного меньшей точностью синхронизации.)

Открытие окна Misc->Runtime показывает общее время, затрачиваемое с момента "последнего запуска". Установив точку останова в первой строке вашего блока кода и другую после последней строки, вы можете увидеть время, прошедшее с первой точки останова до второй в столбце "фактический".

Другие вопросы по тегам