CIKLCOUNTER не работает
CIKLCOUNTER не работает
Отлаживаю STM32F051 на IAR EW и ST LINK. Почему-то CIKLCOUNTER не работает, всегда 0. Кто-нибудь знает, что с этим сделать?
- Реклама
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: CIKLCOUNTER не работает
[uquote="protoder",url="/forum/viewtopic.php?p=3792607#p3792607"]Кто-нибудь знает, что с этим сделать?[/uquote]
Взять мк на котором CYCCNT есть(Cortex-M3 и выше).
Взять мк на котором CYCCNT есть(Cortex-M3 и выше).
Re: CIKLCOUNTER не работает
[uquote="Reflector",url="/forum/viewtopic.php?p=3792670#p3792670"][uquote="protoder",url="/forum/viewtopic.php?p=3792607#p3792607"]Кто-нибудь знает, что с этим сделать?[/uquote]
Взять мк на котором CYCCNT есть(Cortex-M3 и выше).[/uquote]
Я думал, везде есть. Не так?
То есть в младших моделях нет какого-то средства точно определять скорость выполнение команд? Я пробовал таймер, но даже задать остановку таймера при отладке, все равно добавляются лишние такты. В итоге одна команда двигает счетчик на 5 - 7 тактов.
Взять мк на котором CYCCNT есть(Cortex-M3 и выше).[/uquote]
Я думал, везде есть. Не так?
То есть в младших моделях нет какого-то средства точно определять скорость выполнение команд? Я пробовал таймер, но даже задать остановку таймера при отладке, все равно добавляются лишние такты. В итоге одна команда двигает счетчик на 5 - 7 тактов.
Re: CIKLCOUNTER не работает
[uquote="protoder",url="/forum/viewtopic.php?p=3792719#p3792719"]Я думал, везде есть. Не так?[/uquote]
Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Любой таймер тикающий каждый такт ничем принципиально от CYCCNT не отличается. Включил таймер, что-то сделал, выключил. А при пошаговой отладке замерять время выполнения кода не имеет особого смысла, хотя некоторые среды так умеют используя тот же CYCCNT, т.к. с выключенной оптимизацией скорость может отличаться в разы, а с включенной нормально шагать по коду очень проблематично.То есть в младших какого-то средства точно определять скорость выполнение нет возможности? Я пробовал таймер, но даже при его остановке при отладке добавляются такты.
- Реклама
Re: CIKLCOUNTER не работает
[uquote="Reflector",url="/forum/viewtopic.php?p=3792734#p3792734"][uquote="protoder",url="/forum/viewtopic.php?p=3792719#p3792719"]Я думал, везде есть. Не так?[/uquote]
Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Да смысл-то есть. Можно ведь отлаживать ассемблер или шагать в дизассемблере. В первую очередь с целью изучения работы самого контроллера, возможностей оптимизации и т.д. Подобная информация была бы не лишней.
Добавлено after 6 minutes 19 seconds:
>> Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Мне это кажется не удачным ответом. Вы сделали мне не приятно, но ответа на вопрос я так и не получил. Основания ожидать CYCCNT во всех Cortex у меня есть. Казалось бы, наличие его предполагается стандартами ARM. Или я ошибаюсь?
Должен ли я понимать ваш ответ так, что во всех контролерах, ниже M3, этой функции не заложено? А 103-е? Там ведь вроде тоже Cortex M3& Или не от того зависит?
Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Любой таймер тикающий каждый такт ничем принципиально от CYCCNT не отличается. Включил таймер, что-то сделал, выключил. А при пошаговой отладке замерять время выполнения кода не имеет особого смысла, хотя некоторые среды так умеют используя тот же CYCCNT, т.к. с выключенной оптимизацией скорость может отличаться в разы, а с включенной нормально шагать по коду очень проблематично.[/uquote]То есть в младших какого-то средства точно определять скорость выполнение нет возможности? Я пробовал таймер, но даже при его остановке при отладке добавляются такты.
Да смысл-то есть. Можно ведь отлаживать ассемблер или шагать в дизассемблере. В первую очередь с целью изучения работы самого контроллера, возможностей оптимизации и т.д. Подобная информация была бы не лишней.
Добавлено after 6 minutes 19 seconds:
>> Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Мне это кажется не удачным ответом. Вы сделали мне не приятно, но ответа на вопрос я так и не получил. Основания ожидать CYCCNT во всех Cortex у меня есть. Казалось бы, наличие его предполагается стандартами ARM. Или я ошибаюсь?
Должен ли я понимать ваш ответ так, что во всех контролерах, ниже M3, этой функции не заложено? А 103-е? Там ведь вроде тоже Cortex M3& Или не от того зависит?
Re: CIKLCOUNTER не работает
[uquote="protoder",url="/forum/viewtopic.php?p=3792737#p3792737"]Да смысл-то есть. Можно ведь отлаживать ассемблер или шагать в дизассемблере. В первую очередь с целью изучения работы самого контроллера, возможностей оптимизации и т.д. Подобная информация была бы не лишней.[/uquote]
Это не AVR, в окне дизассма шагать можно, но такты подсчитанные таким образом не будут соответствовать таковым при непрерывном выполнении.

Это не AVR, в окне дизассма шагать можно, но такты подсчитанные таким образом не будут соответствовать таковым при непрерывном выполнении.
А как это еще можно понять? У M3/M4/M7 CYCCNT есть, у M0/M0+ нет. Какое ядро у F103 или любого другого ST32 можно и самому посмотретьДолжен ли я понимать ваш ответ так, что во всех контролерах, ниже M3, этой функции не заложено? А 103-е?
Re: CIKLCOUNTER не работает
>> Это не AVR, в окне дизассма шагать можно, но такты подсчитанные таким образом не будут соответствовать таковым при непрерывном выполнении.
То есть CYCCNT в M3 этой проблемы тоже не решит? И скорость выполнения можно смотреть только на больших алгоритмах.
Ясно. Спасибо.
То есть CYCCNT в M3 этой проблемы тоже не решит? И скорость выполнения можно смотреть только на больших алгоритмах.
Ясно. Спасибо.
Re: CIKLCOUNTER не работает
В G0 есть DWT (правда ядро M0+). Но есть ли CYCCNT сложно сказать.Reflector писал(а):Чего вдруг? Так можно думать, что у M0 есть деление или FPU...
Если он 32-ух битный, то да.Reflector писал(а):Любой таймер тикающий каждый такт ничем принципиально от CYCCNT не отличается.
Он посчитает такты.protoder писал(а):То есть CYCCNT в M3 этой проблемы тоже не решит?
Re: CIKLCOUNTER не работает
>> Он посчитает такты.
Я смотрел на M0 на основании базового таймера, получалось, что время выполнения команд 5-7 тактов. Боюсь, что на переход процессора в режим отладки требуется несколько тактов, в течении которых таймеры продолжают счет. Вот интересно, поведет ли CYCCNT себя по-иному.
Я смотрел на M0 на основании базового таймера, получалось, что время выполнения команд 5-7 тактов. Боюсь, что на переход процессора в режим отладки требуется несколько тактов, в течении которых таймеры продолжают счет. Вот интересно, поведет ли CYCCNT себя по-иному.


