Перейти к содержанию
    

Как включить счетчик циклов в IAR ARM 7.6

Собственно вопрос : что надо настроить чтобы работал счетчик циклов CYCLECOUNTER

Вопрос закрыт.  надо включить ВЦЕ  DWT->CTRL =0X40000001;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понятно, а какое имеет это  отношение к IAR?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При отладке ПО для процессора STM32L476 (в среде  IAR ARM 7.6) в окне регистров имеется счетчик циклов CYCLECOUNTER при отладке его значение  не изменялось в настройках IAR не нашел как активировать его . пришлось вначале программы  включить DWT  (  DWT->CTRL =0X40000001; ) и все заработало. Если есть другие варианты подскажите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, Vasil_Riabko said:

Если есть другие варианты подскажите

Я к тому, что это не имеет отношение к IAR. Вы просто включили соответствующий модуль в МК. То же самое справедливо и для Keil, например. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, haker_fox сказал:

Я к тому, что это не имеет отношение к IAR.

В ИАРе для других контроллеров этот счетчик в симуляторе работает (во всяком случае, раньше работал) сам. ИАРом давно не пользуюсь, но если бы пользовался - для меня было бы неочевидно, что в эмуляторе для некоторых ARM Cortex этот счетчик привязан к счетчику циклов DWT. Но я имею привычку читать документацию, наверняка там это описано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, Сергей Борщ said:

Но я имею привычку читать документацию, наверняка там это описано

+1

13 minutes ago, Сергей Борщ said:

ИАРом давно не пользуюсь

GCC?:blum:

13 minutes ago, Сергей Борщ said:

В ИАРе для других контроллеров этот счетчик в симуляторе работает

Гм, а ведь и правда. Сейчас глянул проект на LPC4337, счётчик работает. Хотя, стоп! У меня WDT включен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В том то дело что в  документе "IAR Embedded Workbench® C-SPY® Debugging Guide" кроме фразы -

"CYCLECOUNTER Cleared when an application is started or reset and is
incremented with the number of used cycles during
execution.
CCSTEP Shows the number of used cycles during the last performed
C/C++ source or assembler step.
CCTIMER1 and
CCTIMER2
Two trip counts that can be cleared manually at any given
time. They are incremented with the number of used cycles
during execution."

ничего о настройке или запуске CYCLECOUNTER я не нашел. Буду признательным если подскажите где можно посмотреть рекомендации по работе с CYCLECOUNTER.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, haker_fox сказал:

GCC?:blum:

Он самый. +GDB, +Eclipse (CDT), +OpenOCD.

2 часа назад, haker_fox сказал:

Сейчас глянул проект на LPC4337, счётчик работает. Хотя, стоп! У меня WDT включен.

WDT != DWT. Не у всех кортексов есть DWT, поэтому я написал "для некоторых". А в симуляторе я его этот счетчик в свое время видел рабочим для MSP430, ARM7, AVR.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Сергей Борщ said:

WDT != DWT.

Опа, под вечер я и не разглядел различия))) Поздно было у меня на дворе... DWT я намеренно не включал. Ладно, на работе буду, погляжу в чём там дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для некоторых МК IAR или сам включает этот счётчик при подключении отладчика или он уже включен по дефолту после сброса. Насколько помню - на разных LPC он включён.

Я этот счётчик использую в firmware для отсчёта тактов CPU. Можно освободить один таймер. Правда при его включении потребление питания достаточно сильно растёт.

В 28.08.2019 в 22:37, Vasil_Riabko сказал:

Вопрос закрыт.  надо включить ВЦЕ  DWT->CTRL =0X40000001;

А зачем в read-only биты записываете? Прочитайте мануал на ядро с описанием регистра.

Кстати - и включение не совсем правильное. Про регистр DEMCR забыли. Я включаю этот счётчик так:

  NVIC.DEMCR |= B24;  //разрешение работы DWT.CYCCNT
  if (!(DWT.CTRL & B0)) DWT.CTRL = B0;

Работает и на STM32F4 и на XMC4xxx.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25 minutes ago, jcxz said:

А зачем в read-only биты записываете? Прочитайте мануал на ядро с описанием регистра.

Кстати - и включение не совсем правильное. Про регистр DEMCR забыли. Я включаю этот счётчик так:


  NVIC.DEMCR |= B24;  //разрешение работы DWT.CYCCNT
  if (!(DWT.CTRL & B0)) DWT.CTRL = B0;

 

Вы ошибаетесь   в документации на ядро :
"

8.3. DWT Programmers Model

Table 8.1 lists the DWT registers. Depending on the implementation of your processor, some of these registers might not be present. Any register that is configured as not present reads as zero.

Table 8.1. DWT register summary

Address Name Type

Reset

Description
0xE0001000 DWT_CTRL RW

See [a]

Control Register
0xE0001004 DWT_CYCCNT RW 0x00000000 Cycle Count Register

"

Про включение можно подробнее . При чем здесь NVIC ?

DWT->CTRL =0X40000001  реально включает DWT .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 минуты назад, Vasil_Riabko сказал:

Вы ошибаетесь   в документации на ядро :

В чём ошибаюсь?  :wacko2:

Цитата

Про включение можно подробнее . При чем здесь NVIC ?

NVIC не при чём. При чём DEMCR. Прочитайте его описание - поймёте при чём.

Но если DWT_CYCCNT используется только чтобы в IAR-е посмотреть такты, то возможно IAR его сам включает и тогда необязательно.

Цитата

DWT->CTRL =0X40000001  реально включает DWT .

Значит повезло. На LPC например для "реального включения" вообще ничего не нужно было делать.  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, здесь путают DWT, встроенный в МК, и счетчик тактов с измерителями интервалов, имеющийся в отладчике. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, jcxz said:

В чём ошибаюсь?  :wacko2:

 

NVIC не при чём. При чём DEMCR. Прочитайте его описание - поймёте при чём.

Но если DWT_CYCCNT используется только чтобы в IAR-е посмотреть такты, то возможно IAR его сам включает и тогда необязательно. 

Значит повезло. На LPC например для "реального включения" вообще ничего не нужно было делать.  :wink:

Регистр DWT_CTRL - Read/write .

Что касается регистра DEMCR то бит TRCENA  при старте отладчика IAR установлен в 1 и никаких телодвижений не надо . А вот разрешить работу DWT надо DWT->CTRL =0X40000001 . Вопрос и возник из-за того что отладчик не включает DWT (возможно я не нашел в опциях разрешение работы DWT) .
Поясните пожалуйста что значит следующая  строка  -

NVIC.DEMCR |= B24;  //разрешение работы DWT.CYCCNT
         
         
         

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 31.08.2019 в 14:09, Vasil_Riabko сказал:

Регистр DWT_CTRL - Read/write .

Откройте уж наконец-то мануал (ARM ® v7-M Architecture Reference Manual) и прочитайте описание битов DWT_CTRL!:

DWT_CTRL:NUMCOMP, bits[31:28] 
Number of comparators implemented.
A value of zero indicates no comparator support.
These bits are read-only. The reset value is IMPLEMENTATION DEFINED.

 

В 31.08.2019 в 14:09, Vasil_Riabko сказал:

Поясните пожалуйста что значит следующая  строка  -


NVIC.DEMCR |= B24;  //разрешение работы DWT.CYCCNT
 

Значит то, что работает DWT у Вас только потому, что 24-й бит в NVIC.DEMCR уже оказывается установленным (возможно ставится отладчиком). Если отладчик его не установит, то и работать DWT не будет.

Описание битов DEMCR следует искать опять-же в том же мануале.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...