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

 
 
> Отсчёт времени/тактов в симуляторах Keil и IAR, Какое-то сплошное враньё!?
Dimonira
сообщение Jun 26 2007, 20:29
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 405
Регистрация: 4-10-04
Пользователь №: 777



Контроллер ADuC7024.
Делал сначала софт в IAR 4.41. Мне нужна была дубовая функция задержки с параметром в миллисекундах. Чтобы "настроить" её, я запустил программу в симуляторе, через профайлер посмотрел сколько выполняется функция задержки и исходя из этого скорректировал вычисление нужного счётчика в функции.
Но в реальности мне показалось, что задержки выполняются дольше рассчитанного времени. На глаз показалось, что на треть. Получилось, что симулятор IAR врёт в более быструю сторону.

Потом решил код частично отладить в Keil mdk 3.10, т.к. там удобнее (чем в IAR) в симуляторе смотреть такты и время выполнения отдельных строчек кода. Начал как раз с функции задержки, т.к. она простая. И тут выяснилось, что та же функция выполняется (по симулятору) вдвое дольше. Количество тактов и время выполнения в симуляторе соответствуют друг другу (проверил на всякий). Решил посмотреть на реальном выполнении. В результате задержка, которая в симуляторе была 20с (по тактам и счётчику времени), реально выполнялась где-то за 14.3с. Получается, что симулятор насчитывает больше тактов, чем проходит в реальности. Подобрал расчёт счётчика в функции задержки по реальному выполнению. Теперь задержка в 10с в симуляторе проходит за 14.3с. Получилось, что пришлось уменьшить значение счётчика примерно на столько, на сколько мне казалось медленнее работает задержка в реальном выполнении в IAR.

Короче, в итоге, реальная задержка выполняется одинаково, что после Keil, что после IAR.
А вот симуляторы врут, причём в разные стороны и довольно прилично.

В чём тут трабл? Или изначально ориентироваться на временные отсчёты в симуляторах не стоило?

Просто мне бы надо отработать/отладить "трудоёмкий" код, где вычисления с плавающей точкой и хотелось бы иметь достаточно правдивый "инструмент" замера тактов/времени.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WhiteFang
сообщение Jul 18 2010, 06:09
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 16-04-09
Из: Томск
Пользователь №: 47 801



Хочу оценить время выполнения участка программы (от одной точки останова до другой)... Как это сделать в IAR EW ARM ?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 18 2010, 10:29
Сообщение #3


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(WhiteFang @ Jul 18 2010, 09:09) *
Хочу оценить время выполнения участка программы (от одной точки останова до другой)... Как это сделать в IAR EW ARM ?


Писалось об этом многократно. Самый надежный и простой метод - формирование импульса на время вызова участка программы и его измерение осциллографом. Надежный в том смысле, что это реальная длительность с учетом все возможных прерываний и прочего.
Go to the top of the page
 
+Quote Post
WhiteFang
сообщение Jul 18 2010, 10:54
Сообщение #4





Группа: Участник
Сообщений: 14
Регистрация: 16-04-09
Из: Томск
Пользователь №: 47 801



Цитата(sergeeff @ Jul 18 2010, 13:29) *
Писалось об этом многократно. Самый надежный и простой метод - формирование импульса на время вызова участка программы и его измерение осциллографом. Надежный в том смысле, что это реальная длительность с учетом все возможных прерываний и прочего.


Этот способ не принадлежит среде разработки и требует дополнительного оборудования - осциллографа. Это как крайний вариант который можно сделать всегда, но не всегда это удобно.
В моём вопросе речь про штатные средства среды IAR для вычисления процессорных тактов. Например, в CodeComposer для TMS320 такой счетчик есть и учитывает он все произошедшие прерывания. Видел также такой счечик в IAR AVR... А вот для ARM не могу найти

Сообщение отредактировал WhiteFang - Jul 18 2010, 10:59
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 18 2010, 11:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(WhiteFang @ Jul 18 2010, 16:54) *
А вот для ARM не могу найти
Потому, что у ARM имеется конвейер и учет тактов весьма трудная задача.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dimonira   Отсчёт времени/тактов в симуляторах Keil и IAR   Jun 26 2007, 20:29
- - rezident   "По-уму" точные задержки обычно формирую...   Jun 26 2007, 20:38
- - Dimonira   Да мне не задержки точные нужны, это не проблема. ...   Jun 27 2007, 04:51
- - rezident   Тогда наверное стоит почитать что-нибудь про саму ...   Jun 27 2007, 09:56
- - Dimonira   Блин, такие советы я и сам могу давать кому угодно...   Jun 27 2007, 11:12
- - rezident   Если вы хорошо знаете архитектуру, то попробуйте п...   Jun 27 2007, 11:32
|- - Wano   Кароче это фуфло я узнал ещё давно. Как мне показа...   Jun 27 2007, 11:52
- - vetal   Сделать такой симулятор, который будет со 100% точ...   Jun 27 2007, 12:23
- - Dimonira   Ну, я ж говорю не про работу симулятора в реальном...   Jun 27 2007, 18:32
|- - rezident   Цитата(Dimonira @ Jun 28 2007, 00:32) Есл...   Jun 27 2007, 19:00
|- - Сергей Борщ   Цитата(Dimonira @ Jun 27 2007, 21:32) Уж ...   Jun 27 2007, 22:07
- - vetal   ЦитатаТем более, что эти продукты (Keil и IAR) сто...   Jun 27 2007, 19:03
||- - WhiteFang   Цитата(rezident @ Jul 18 2010, 15:11) Пот...   Jul 18 2010, 11:22
|- - VslavX   Цитата(WhiteFang @ Jul 18 2010, 13:54) В ...   Jul 18 2010, 11:34
- - scifi   Цитата(Dimonira @ Jun 27 2007, 00:29) Мне...   Jul 18 2010, 17:33


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:30
Рейтинг@Mail.ru


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