реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> вопрос по IAR, как замерить сколько тактов/команд выполняется та или иная функция
asen
сообщение Oct 23 2006, 05:39
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 513
Регистрация: 5-09-05
Из: Барнаул
Пользователь №: 8 220



как замерить сколько тактов/команд выполняется та или иная функция
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 23 2006, 06:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(asen @ Oct 23 2006, 13:39) *
как замерить сколько тактов/команд выполняется та или иная функция
В ИАРе, не знаю, а вот в AVRStudio можно замерить вплоть до муллиметра))) в ИАР в опциях Linker->Output или Linker->Extra Output ставишь тип выходного файла ubrof 7 (forced). После компиляции появляется файлих с расширением *.dbg. Его то Студией и открываешь. Ну а там все такты посмотреть можно. Кроме того, что бы в Студии был виден не только ассемблерный, но и Си-шный код, на вкладке Compiler->Output надо поставить галку на Generate debug information...


--------------------
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 23 2006, 06:13
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(asen @ Oct 23 2006, 12:39) *
как замерить сколько тактов/команд выполняется та или иная функция

В симуляторе? В окошке, где регистры (основные) должен быть типа регистр Cycles. Вот по нему и можно засекать.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
gormih
сообщение Oct 23 2006, 07:10
Сообщение #4


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



Если IAR умеет создавать объектный файл - то легко можно загрузить его в AVR отладчик, и посмотреть по счетчику выполненых команд.


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 23 2006, 09:36
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Михаил Горюнов @ Oct 23 2006, 10:10) *
Если IAR умеет создавать объектный файл - то легко можно загрузить его в AVR отладчик, и посмотреть по счетчику выполненых команд.


IAR, естественно, умеет создавать объектные файлы. В том числе такой, который понимает AVR Studio (UBROF8). Это если смотреть из симулятора.

Иногда необходимо посмотреть время исполнения значительного объёма проги. Причём в динамике. И, например замерить максимальное значение времени исполнения какого-то куска. Я это делаю так.

1. Выделяю и инициализирую под это дело таймер.
2. Вначале данного куска вставляю
...
uint16_t MaxT; // %%%% Для отладки
TCNT5 = 0; // %%%% Для отладки
...

3. В конце данного куска вставляю
...
__disable_interrupt();
MaxT = TCNT5;
__enable_interrupt();
if(MaxTime<MaxT) MaxTime=MaxT;
...

Это я взял из реальной проги.

Если таймер запущен в режиме CLK/1, то вот тебе и такты. smile.gif
Go to the top of the page
 
+Quote Post
arttab
сообщение Oct 23 2006, 09:45
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



если точность не требуется, а достаточно узнать свободные временные ресурсу на главный цикл и прерывания, то делаю так:
свободный вывод выставляю в 1, а в прерывании в 0и при выходе из прерывания восстанавливаю в 1. И смотрю на цифровом осциле время 1 и 0.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
gormih
сообщение Oct 23 2006, 11:02
Сообщение #7


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



Это все излишество... с таймером.
В симуляторе AVR Studio 4 во время отладки в окне WorkSpace есть Группа Processor, так вот в этой группе есть такая замечательная весчь - Cycle Counter. Если взять ее значение в начале какого того фрагмента кода, и вычесть это значение из значения в конце фрагмента кода - то получишь количество циклов, которое данный фрагмент выполняется. С точностью до цикла :-) excl.gif
юзаем Breakpoints


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 23 2006, 15:40
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(arttab @ Oct 23 2006, 12:45) *
И смотрю на цифровом осциле время 1 и 0.

a14.gif Так делал, даже когда осциллографы не были цифровыми. biggrin.gif
Удобно, что виден разброс в зависимости от прочих ситуаций, прерываний и проч.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Old1
сообщение Oct 23 2006, 17:55
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(Михаил Горюнов @ Oct 23 2006, 14:02) *
Это все излишество... с таймером.
В симуляторе AVR Studio 4 во время отладки в окне WorkSpace есть Группа Processor, так вот в этой группе есть такая замечательная весчь - Cycle Counter. Если взять ее значение в начале какого того фрагмента кода, и вычесть это значение из значения в конце фрагмента кода - то получишь количество циклов, которое данный фрагмент выполняется. С точностью до цикла :-) excl.gif
юзаем Breakpoints

ИМХО не такое уж и излишество, если отлаживать через JTAG, то Cycle Counter неактивен и вариант с таймером, предложенный SasaVitebsk , нормальное решение...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 23 2006, 20:42
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Old1 @ Oct 23 2006, 20:55) *
ИМХО не такое уж и излишество, если отлаживать через JTAG, то Cycle Counter неактивен и вариант с таймером, предложенный SasaVitebsk , нормальное решение...


Совершенно в дырочку. smile.gif Причём я же оговорился: "на больших отрезках проги". Иногда даже на моей машине и то никаких сил не хватит ждать результатов симулятора. А иногда это просто нельзя сделать по простой причине, - симулятор не эмулирует внешнего оборудования, тем более если оно сложное. Но чаще всего такое приходится делать на изделии где несколько прерываний разного уровня. И есть шанс повторного входа в прерывание. Можно конечно на ножку и осциллографом, как предложили, но это оценочный путь. Так можно проценты посмотреть или среднее значение, а моим я максимальное определяю на больших статистических данных.
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 23 2006, 21:06
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Можно и в Run-time определять:
Перед вызовом функции обнулить и запустить таймер, после - остановить.
прочитать значение таймера (время выполнения функции в тактах).
Go to the top of the page
 
+Quote Post
gormih
сообщение Oct 24 2006, 05:37
Сообщение #12


nofb
***

Группа: Свой
Сообщений: 430
Регистрация: 18-05-06
Из: Москва, Зеленоград
Пользователь №: 17 218



Цитата(SasaVitebsk @ Oct 24 2006, 00:42) *
Цитата(Old1 @ Oct 23 2006, 20:55) *

ИМХО не такое уж и излишество, если отлаживать через JTAG, то Cycle Counter неактивен и вариант с таймером, предложенный SasaVitebsk , нормальное решение...


Причём я же оговорился: "на больших отрезках проги". Иногда даже на моей машине и то никаких сил не хватит ждать результатов симулятора. А иногда это просто нельзя сделать по простой причине, - симулятор не эмулирует внешнего оборудования, тем более если оно сложное. Но чаще всего такое приходится делать на изделии где несколько прерываний разного уровня. И есть шанс повторного входа в прерывание. Можно конечно на ножку и осциллографом, как предложили, но это оценочный путь. Так можно проценты посмотреть или среднее значение, а моим я максимальное определяю на больших статистических данных.


w00t.gif ну все зависит от поставленной задачи... исходных данных нет. Может у человека нет эмулятора, и отрезок кода у него оч. маленький, без вложенных прерываний . glare.gif


--------------------
Это не то что вы подумали ...

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 02:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016