[an error occurred while processing this directive]
Profiling в Code Composer Studio
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Gil_24 15 июля 2004 г. 17:48

Не могу разобраться с измерением быстродействия алгоритма в Code Composer Studio (программирую под TMS6713). Меню Profiler имеет 2 различных инструмента - Clock, который можно View, и окно после Start new session.
Пытался разобраться следующим образом - собрал небольшой проект из нескольких сишных файлов, вывел в окне профилинга информацию по всем функциям проекта. Параллельно смотрел на Clock. Думал, что по идее значение в Clock равно сумме значений Inclusive Total для всех функций из окна. Значения разные, хотя и находятся в одном порядке величин. Это если стопорить Clock брейкпоинтом на последней фигурной скобке функции main. А если не стопорить, то выполняется еще какой-то код после окончания функции main. Вот это значение Clock уже сильнее отличается от суммарного значения Inclusive по всем функциям.
Собрал тот же проект с конфигурацией биоса (в предыдущем случае работал без конфигурационного файла биоса - просто собрал исходники, добавил rts6701.lib и простенький командный файл линковщика) - получил в несколько раз большее число затраченных циклов CPU. Ни фига ж себе, биос, блин, ради возможности через окошко руководить тредами и прерываниями в несколько раз возрос затраченный ресурс. Но весь этот доп. ресурс концентировался в несколько раз вписанной в таблицу функции ASM$(). В документации смотрел - не нашел. Ладно, как и в прошлом случае более менее одного порядка получается показание Clock по брейкпоинту и суммы Inclusive.
А в третьем эксперименте собрал другой проект, в котором помимо сишных файлов был один на асме. И вот тут пошло-поехало. Во-первых, показания Clock оказались больше, хотя этот второй проект - это тот же первый, но с переписанной на асме одной функцией. И явно валится весь ресурс на эту непомерную функцию ASM$(). А с окном профилинга вообще туфтень какая-то. Делаешь ресет измеряешь - одно показание в эту фкнцию ASM$() идет. Ресетишь, измеряешь заново, вместо того, чтобы как в норальном случае переписывать это показание и давать тот же результат, но прибавляет к нему! То есть с каждым последующим измерением показание в окне Inclusive ASM$() растет.

Вот мои соображения:
Clock действительно должен примерно совпадать с суммарным значением Inclusive.
ASM$() - это аппарат профилинга, который тоже считается наравне с рабочим кодом.
Почему он дичает и начинает суммироваться в проекте с асмовым файлом, я не понял.
Непонятно, что за код исполняется после закрывающей скобки mainовой функции.
Как вообще это все грамотно использовать для профилинга проектов?! - главный вопрос.

Поделитесь, пожалуйста, вашими соображениями, направьте к конкретной документации, где это может быть описано (в хелпе по CCS и в pdfах ничего путного не нашел).

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru