Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [avr] Как работать с avr-gprof под виндой?


Автор: UniBomb 19.4.2011, 13:25
Добрый день. Захотелось тут поковыряться с профайлером. До этого необходимости в нём не было. Итак, прочитав доку по профайлеру я в мейкфайл добавил вожделенный ключик -pg. Всё скомпилировалось. Далее расчехляю профайлер:

Код

avr-gprof myprogram.o


Конечно же ничего не происходит, т.к. нет файла gmon.out. Порыскав по интернетам я обнаружил деталь, которую не заметил в доке на профайл - скомпилированную программу надо запустить и прогнать несколько раз ( ./myprogram 50). Но как это сделать во-первых под виндой, а во-вторых не исполняемый файл? Я понимаю, что что-то ещё упускаю и говорю глупости, но никак не могу понять что  smile 

В общем подскажите - как жить счастливо? 

Автор: xvr 19.4.2011, 15:35
Очень и очень сомнительная перспектива по профилированию чего бы то ни было на железном AVR  smile Ему просто некуда сбрасывать профиль (да и считать не на чем)
Только под симуляторами  smile 

Можно посмотреть, что там в newlib'е для avr написали в mcount (эту функцию вставляет компилятор для профилирования)
 

Автор: UniBomb 19.4.2011, 15:49
xvr, я вообще даже и не думал профилировать на реальном железе  smile  Насчёт симулятора я думал в сторону simulavr, но не понятно что к чему прикручивать и возможно ли. В прошлую мою попытку освоить avr-gcc я не смог прикрутить avr-gdb к нему, а тут даже в доках не указана возможность с профайлером. И порой у меня возникает чувство, что 66% процентов (треть из-за того, что заточена под linux, треть из-за того, что даже на линуксе не работает) winavr под виндой вообще не работает и таскается из релиза в релиз исключительно в целях "комплекностти".

Цитата(xvr @  19.4.2011,  16:35 Найти цитируемый пост)
Можно посмотреть

А как?  smile 

Автор: xvr 19.4.2011, 17:25
Скачал (не поленился) avr-libc. Никаких упоминаний профилирующих функций там не нашел (вообще!)
Как оно собралось с -pg не очень представляю

Добавлено через 1 минуту и 27 секунд
А можно какой нибудь откомпилированный файлик (с -pg и -S) ?

Автор: UniBomb 20.4.2011, 08:16
Откомпилил с ключами:
Код

avr-gcc -g -c -pg -S -mmcu=atmega64 -Os -DF_CPU=7372800 -std=gnu99 test.c



Автор: xvr 20.4.2011, 10:58
От профайлера обраружены счетчики в сегмента данных, с которыми никто не работает  smile 
Код

    .data
.LP10:
    .byte   0
    .byte   0
    .byte   0
    .byte   0
    .text
/* profiler 10 */.LM2:
и так в начале всех функций.

Резюме - профайлер не работоспособен, хотя до конца из сорцов компилятора и не вычесан  smile 
А avr-gprof вообще фикция.

Автор: UniBomb 20.4.2011, 11:45
Цитата(xvr @  20.4.2011,  11:58 Найти цитируемый пост)
А avr-gprof вообще фикция

 smile Зачем же тогда эти ироды его таскают за WinAvr все эти годы? 


xvr, а ты знаешь ещё какие-нибудь средства оценки времени выполнения программы?

Автор: xvr 20.4.2011, 19:57
Цитата(UniBomb @  20.4.2011,  11:45 Найти цитируемый пост)
 Зачем же тогда эти ироды его таскают за WinAvr все эти годы? 

Они могут быть вообще не в курсе - ну собралось там что то, и фиг с ним  smile 

Цитата(UniBomb @  20.4.2011,  11:45 Найти цитируемый пост)
xvr, а ты знаешь ещё какие-нибудь средства оценки времени выполнения программы?

Не задавался таким вопросом (применительно к МК). Наверное можно в симуляторе что то посчитать, ну и на реальной железке померять (если найдется свободная нога у процессора - вывести туда 1 в начале куска кода и 0 в конце. Дальше осциллограф  smile )

Автор: UniBomb 21.4.2011, 08:05
Цитата(xvr @  20.4.2011,  20:57 Найти цитируемый пост)
Они могут быть вообще не в курсе

 smile 

Цитата(xvr @  20.4.2011,  20:57 Найти цитируемый пост)
Наверное можно

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

Автор: xvr 21.4.2011, 15:58
Цитата(UniBomb @  21.4.2011,  08:05 Найти цитируемый пост)
В симуляторе такое воспроизвести сложнее, а для метода с осцильником мне не хватает второго щупа (что бы остлеживать и возникновение прерывания, и длительность выполнения обработчика) 
Для этого достаточно одного щупа. В начале обработчика взводишь ногу в 1, в конце сбрасываешь в 0. Дальше смотришь осциллографом скважность. Если она подползает к 100%, то что то в прерывании пора чинить  smile 

Цитата(UniBomb @  21.4.2011,  08:05 Найти цитируемый пост)
Но всё оказалось намного проще и банальней - из-за невнимательности я допустил глупую опечатку

Ну вот, а так хотелось попрофилировать  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)