Vasil_Riabko 9 28 августа, 2019 Опубликовано 28 августа, 2019 · Жалоба Собственно вопрос : что надо настроить чтобы работал счетчик циклов CYCLECOUNTER Вопрос закрыт. надо включить ВЦЕ DWT->CTRL =0X40000001; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 29 августа, 2019 Опубликовано 29 августа, 2019 · Жалоба Не понятно, а какое имеет это отношение к IAR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasil_Riabko 9 29 августа, 2019 Опубликовано 29 августа, 2019 · Жалоба При отладке ПО для процессора STM32L476 (в среде IAR ARM 7.6) в окне регистров имеется счетчик циклов CYCLECOUNTER при отладке его значение не изменялось в настройках IAR не нашел как активировать его . пришлось вначале программы включить DWT ( DWT->CTRL =0X40000001; ) и все заработало. Если есть другие варианты подскажите Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба 7 hours ago, Vasil_Riabko said: Если есть другие варианты подскажите Я к тому, что это не имеет отношение к IAR. Вы просто включили соответствующий модуль в МК. То же самое справедливо и для Keil, например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба 16 часов назад, haker_fox сказал: Я к тому, что это не имеет отношение к IAR. В ИАРе для других контроллеров этот счетчик в симуляторе работает (во всяком случае, раньше работал) сам. ИАРом давно не пользуюсь, но если бы пользовался - для меня было бы неочевидно, что в эмуляторе для некоторых ARM Cortex этот счетчик привязан к счетчику циклов DWT. Но я имею привычку читать документацию, наверняка там это описано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба 13 minutes ago, Сергей Борщ said: Но я имею привычку читать документацию, наверняка там это описано +1 13 minutes ago, Сергей Борщ said: ИАРом давно не пользуюсь GCC? 13 minutes ago, Сергей Борщ said: В ИАРе для других контроллеров этот счетчик в симуляторе работает Гм, а ведь и правда. Сейчас глянул проект на LPC4337, счётчик работает. Хотя, стоп! У меня WDT включен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasil_Riabko 9 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба В том то дело что в документе "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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 30 августа, 2019 Опубликовано 30 августа, 2019 · Жалоба 2 часа назад, haker_fox сказал: GCC? Он самый. +GDB, +Eclipse (CDT), +OpenOCD. 2 часа назад, haker_fox сказал: Сейчас глянул проект на LPC4337, счётчик работает. Хотя, стоп! У меня WDT включен. WDT != DWT. Не у всех кортексов есть DWT, поэтому я написал "для некоторых". А в симуляторе я его этот счетчик в свое время видел рабочим для MSP430, ARM7, AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба 5 hours ago, Сергей Борщ said: WDT != DWT. Опа, под вечер я и не разглядел различия))) Поздно было у меня на дворе... DWT я намеренно не включал. Ладно, на работе буду, погляжу в чём там дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба Для некоторых МК 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasil_Riabko 9 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба 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 . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба 22 минуты назад, Vasil_Riabko сказал: Вы ошибаетесь в документации на ядро : В чём ошибаюсь? Цитата Про включение можно подробнее . При чем здесь NVIC ? NVIC не при чём. При чём DEMCR. Прочитайте его описание - поймёте при чём. Но если DWT_CYCCNT используется только чтобы в IAR-е посмотреть такты, то возможно IAR его сам включает и тогда необязательно. Цитата DWT->CTRL =0X40000001 реально включает DWT . Значит повезло. На LPC например для "реального включения" вообще ничего не нужно было делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба Я думаю, здесь путают DWT, встроенный в МК, и счетчик тактов с измерителями интервалов, имеющийся в отладчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vasil_Riabko 9 31 августа, 2019 Опубликовано 31 августа, 2019 · Жалоба 2 hours ago, jcxz said: В чём ошибаюсь? NVIC не при чём. При чём DEMCR. Прочитайте его описание - поймёте при чём. Но если DWT_CYCCNT используется только чтобы в IAR-е посмотреть такты, то возможно IAR его сам включает и тогда необязательно. Значит повезло. На LPC например для "реального включения" вообще ничего не нужно было делать. Регистр DWT_CTRL - Read/write . Что касается регистра DEMCR то бит TRCENA при старте отладчика IAR установлен в 1 и никаких телодвижений не надо . А вот разрешить работу DWT надо DWT->CTRL =0X40000001 . Вопрос и возник из-за того что отладчик не включает DWT (возможно я не нашел в опциях разрешение работы DWT) . Поясните пожалуйста что значит следующая строка - NVIC.DEMCR |= B24; //разрешение работы DWT.CYCCNT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 2 сентября, 2019 Опубликовано 2 сентября, 2019 · Жалоба В 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 следует искать опять-же в том же мануале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться