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

 
 
 
Reply to this topicStart new topic
> Отладка KEIL 4.6 (STM32), Отслеживание времени выполнения программы
Falkon_99
сообщение Nov 13 2012, 19:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Недавно начал программировать в среде Keil uVision, очень удобная,все нравится. В режиме отладки внизу пишется время хода программы. Но это время далеко отличается от реального.
Стало интересно, а можно ли смотреть количество тактов процессора, как например в AVR Studio? Думаю эта информация будет более правдивая =)

ps использую плату STM32-VLDiscovery
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 13 2012, 19:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Falkon_99 @ Nov 13 2012, 21:23) *
Стало интересно, а можно ли смотреть количество тактов процессора, как например в AVR Studio? Думаю эта информация будет более правдивая =)

Если у вас Cortex-m3, то добавьте такой код в свою программу
Код
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC


static inline void DWT_Init()
{
   SCB_DEMCR  |= 0x01000000;
   DWT_CYCCNT  = 0;
   DWT_CONTROL|= 1; // enable the counter
}

int main ()
{
     DWT_Init();
}


Значение счётчика можно посмотреть в окне Expression (должно быть такое)
Код
*(uint32_t *)0xE0001004


В случае, если вариант с Expression почему-либо не подходит значение счётчика можно читать-задавать в нужных мастах программы:

Код
uint32_t FuncWorkTime;

DWT_CYCCNT=0;

Func1();

FuncWorkTime=DWT_CYCCNT;
Go to the top of the page
 
+Quote Post
011119xx
сообщение Nov 14 2012, 03:49
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Как впечатление от Keil 4.6, стОит ли устанавливать вместо 4.23, или тоже есть проблемы, как с 4.5?
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Nov 14 2012, 07:40
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Цитата(_Артём_ @ Nov 13 2012, 21:41) *
Если у вас Cortex-m3, то добавьте такой код в свою программу
Код
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC

}


Спасибо за ответ, да действительно работаю с Cortex-M3. только не понятно что это за макросы, и куда указывают((
Я так понимаю, что мой Cortex-M3 сам считает пройденные такты???

С предыдущими версиями KEIL не работал. До этого юзал IAR с AVR контроллерами. Keil 4.6 показал себя только с хорошей стороны, недавно разобрался как писать коменты на русском языке, ато без них было не удобно))
Собрал в нём уже несколько проэктов на STM32, постоянно пользуюсь отладкой через SWD интерфейс, пока все замечательно. А какие проблемы были в 4.5?
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 14 2012, 07:53
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Falkon_99 @ Nov 14 2012, 11:40) *
Спасибо за ответ, да действительно работаю с Cortex-M3. только не понятно что это за макросы, и куда указывают((

Вот тут написано.
На самом деле при конфигурировании ядра разработчики МК могут убрать эти регистры. Но в STM32 они точно есть.
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Nov 14 2012, 08:03
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Интересная информация) вечером попробую!!! Всё таки тяжело производить отладку вслепую без информации о пройденый тактах.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 14 2012, 08:44
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Falkon_99 @ Nov 14 2012, 11:03) *
Интересная информация) вечером попробую!!! Всё таки тяжело производить отладку вслепую без информации о пройденый тактах.

Такты показаны в том же окне, где и регистры.
Go to the top of the page
 
+Quote Post
011119xx
сообщение Nov 14 2012, 08:44
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



Цитата(Falkon_99 @ Nov 14 2012, 12:40) *
А какие проблемы были в 4.5?

Проблемы с русским языком.
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Nov 14 2012, 17:46
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Да! в версии 4.6 остались проблемы с языком. Проблему решили здесь здесь.
После копирования файла UvEdit.dll все заработало.

Цитата(ViKo @ Nov 14 2012, 10:44) *
Такты показаны в том же окне, где и регистры.


))))) Да реально, спасибо что ткнули носом!!! называется States

Цитата(_Артём_ @ Nov 13 2012, 21:41) *
Если у вас Cortex-m3, то добавьте такой код в свою программу
Код
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC


static inline void DWT_Init()
{
   SCB_DEMCR  |= 0x01000000;
   DWT_CYCCNT  = 0;
   DWT_CONTROL|= 1; // enable the counter
}

int main ()
{
     DWT_Init();
}


Тоже работает. Спасибо! Очень полезная функция, можно задержки организовывать с этим счетчиком))
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 12:01
Рейтинг@Mail.ru


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