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

 
 
> Отсчёт времени/тактов в симуляторах 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
Ответов
Dimonira
сообщение Jun 27 2007, 18:32
Сообщение #2


Местный
***

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



Ну, я ж говорю не про работу симулятора в реальном времени. Пусть медленно работает, но правильно.
Уж этому АРМу столько времени, что можно было бы за это время что-то приличное сделать. Тем более, что эти продукты (Keil и IAR) стоят немеряно денег!
Если бы у меня так работало то что я делаю, меня бы уже давно с работы выперли...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 27 2007, 22:07
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Dimonira @ Jun 27 2007, 21:32) *
Уж этому АРМу столько времени, что можно было бы за это время что-то приличное сделать.
Вам rezident уже намекал, что время исполнения инструкции у ARM в отличие от AVR, PIC и т.д. зависит не только от тактовой частоты, а и от реализации различных ускорителей чтения из флеш, делителей шин, области памяти (RAM/ROM/EXT RAM/EXT ROM/периферия) и кучи связанных с этим настроек, которые у каждого процессора свои. В ARM9 и выше еще прибавьте кеш-память и всякие навороты вроде предсказателя переходов. Учесть все эти зависимости при симуляции - малореально, по сложности сопоставимо с созданием самого кристалла. А еще производители пекут новые кристаллы чем дальше тем быстрее. Так что вместо огрызаний лучше последуйте упомянутому совету. Симулятор честно показывает количество циклов ядра согласно спецификации ARM на ядро (кстати, растактовки команд у ARM7TDMI и ARM7TDMI-S отличаются), и не его вина, что циклы ядра и такты генератора у процессоров на основе ARM - это совсем не одно и то же.

Уж насколько AVR простой как трехлинейная винтовка, а и то в AVRStudio не вся периферия симулируется. К чему бы это?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
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
|- - rezident   Цитата(Dimonira @ Jun 28 2007, 00:32) Есл...   Jun 27 2007, 19:00
- - vetal   ЦитатаТем более, что эти продукты (Keil и IAR) сто...   Jun 27 2007, 19:03
- - WhiteFang   Хочу оценить время выполнения участка программы (о...   Jul 18 2010, 06:09
|- - sergeeff   Цитата(WhiteFang @ Jul 18 2010, 09:09) Хо...   Jul 18 2010, 10:29
|- - WhiteFang   Цитата(sergeeff @ Jul 18 2010, 13:29) Пис...   Jul 18 2010, 10:54
|- - rezident   Цитата(WhiteFang @ Jul 18 2010, 16:54) А ...   Jul 18 2010, 11:11
||- - 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 Текстовая версия Сейчас: 21st July 2025 - 15:10
Рейтинг@Mail.ru


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