время выполнения программы на AVR

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

время выполнения программы на AVR

Сообщение toshas » 10 сен 2007, 19:07

Часто встает вопрос о скорости выполнения программы.
понятно что она однозначно связана с частотой работы чипа, и как-то совсем нетривиально с используемым компилятором, уровнем оптимизации, условия внешней среды...
но все же есть ли способы  прикинуть/посчитать сколько будет выполняться программа ?
(что-то типа таблицы соответствия "оператор - число тактов" ?)

кроме того какие наиболее удобные, точные или часто применяемые методы определения скорости уже с обратной стороны, т.е. на почти готовом устройстве.
встраивание в код замеров по таймерам, измерение осциллографом, еще что-то ?

как вы решаете эти задачи ?

спасибо!
Аватара пользователя
toshas
 
Сообщения: 90
Зарегистрирован: 31 янв 2006, 14:37
Откуда: Москва

Сообщение avr123.nm.ru » 10 сен 2007, 19:38

так как вы и написали - расчет или измерение.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение toshas » 10 сен 2007, 20:04

как выполнить такой расчет с достаточной точностью?
Аватара пользователя
toshas
 
Сообщения: 90
Зарегистрирован: 31 янв 2006, 14:37
Откуда: Москва

Сообщение EdGull » 10 сен 2007, 20:33

Батенька вы не поверите!!! Как ни странно прочитать даташит!!! :-)))
там расписано какая команда сколько тактов занимает, правда это актуально только для ассемблера.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 10 сен 2007, 20:55

EdGull писал(а):Батенька вы не поверите!!! Как ни странно прочитать даташит!!! :-)))
там расписано какая команда сколько тактов занимает, правда это актуально только для ассемблера.


Вы не поверите !!! Но он спрашивал про ОПЕРАТОРЫ компилятора а не про АСМ инструкции.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение EdGull » 10 сен 2007, 21:05

Ага, ассемблер это уже не компилятор значит... :-)))
И вообще зря я тут с вами болтаю, у вас у обоих города не заполненые.
Так что для меня здесь эта тема закрыта, пока не исправитесь :-)))
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение toshas » 10 сен 2007, 22:14

ok поправил )
Аватара пользователя
toshas
 
Сообщения: 90
Зарегистрирован: 31 янв 2006, 14:37
Откуда: Москва

Сообщение -= Александр =- » 10 сен 2007, 23:02

Можно попробовать в симуляторах покрутить...  :roll:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение avr123.nm.ru » 11 сен 2007, 00:18

EdGull писал(а):Ага, ассемблер это уже не компилятор значит... :-)))


А какие в асме могут быть УРОВНИ ОПТИМИЗАЦИИ ???
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение -= Александр =- » 11 сен 2007, 01:18

avr123.nm.ru писал(а):
EdGull писал(а):Ага, ассемблер это уже не компилятор значит... :-)))


А какие в асме могут быть УРОВНИ ОПТИМИЗАЦИИ ???


Там он только один - "оптимизация вручную"  :wink:
Аватара пользователя
-= Александр =-
Мастер Самоделкин
 
Сообщения: 3678
Зарегистрирован: 11 окт 2004, 19:20
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич

Сообщение EdGull » 11 сен 2007, 11:14

Когда мне надо точно замерить скорость выполненя, я выставляю на ноге 1, а после завершения ставлю на ней 0. После этого цифровым осцилоскопом всё сразу видно ;-) Естественно прерывания приходится отключать.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение matracc » 12 сен 2007, 22:25

Простите, но я не понял, что такое операторы компилятора...
Если задача стоит понять сколько циклов (у avr цикл это вроде бы один такт?) потребуется для выполнения ассемблерной программы - в datasheet в instruction set reference должно быть указано сколько циклов требуется на каждую отдельную команду (1, ну может 2, редко больше).
Если речь идет о программе на си - надо посмотреть ассемблерный код, в который транслируется ваша программа, при используемых опциях оптимизации, inlining и пр.
И конечно же еще есть профайлер. Если есть))
Измерять осциллографом - как минимум не точно. А иногда это вообще не представляется возможным.
matracc
 
Сообщения: 40
Зарегистрирован: 18 ноя 2006, 20:13
Откуда: Москва

Сообщение EdGull » 12 сен 2007, 22:33

Измерять осциллографом - как минимум не точно

Это измерение де-факто, а по тактам де-юро. Точней чем по осцилографу не бывает!
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Сообщение avr123.nm.ru » 13 сен 2007, 09:42

EdGull писал(а):Когда мне надо точно замерить скорость выполненя, я выставляю на ноге 1, а после завершения ставлю на ней 0. После этого цифровым осцилоскопом всё сразу видно ;-)


По моему нужно вычесть из показаний время выполнения "сделать 1 на ноге".
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение avr123.nm.ru » 13 сен 2007, 09:45

EdGull писал(а):Точней чем по осцилографу не бывает!


Смотря какой осцил. Большинство аналоговых не имеют кварца вообще ! Так что точность там ни какая в сравнении с симулятором.

ИМХО самое точное измерение в симуляторе - там точность АБСОЛЮТНАЯ математически-даташитная. Такая практически будет и с обычным кварцем.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16