Easyelectronics.ru

Электроника для всех
Текущее время: 26 фев 2021, 03:44

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Загруженность контроллера
СообщениеДобавлено: 31 июл 2019, 23:19 
Заглядывает иногда

Зарегистрирован: 20 май 2015, 11:18
Сообщения: 96
Доброго времени суток!
Возник интересный вопрос. Есть контроллер STM32 под FreeRTOS. Можно ли как-нибудь вычислить процент его загрузки? Как это делается на настольных процессорах, т.е. в винде, например, в диспетчере задач.
Если ОЗУ, которая уходит на выполнение программы, можно хоть как-то прикинуть, то с загрузкой ядра непонятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 31 июл 2019, 23:41 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
http://easyelectronics.ru/avr-uchebnyj- ... llera.html

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 01 авг 2019, 00:03 
Заглядывает иногда

Зарегистрирован: 20 май 2015, 11:18
Сообщения: 96
Спасибо за информацию, попробую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 01 авг 2019, 00:08 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
В файле кофига РТОС прописываем это: #define configUSE_IDLE_HOOK 1 , затем где-нибудь (например в main.c) создаем ф-цию void vApplicationIdleHook(void) { } и пишем в нее инкремент счетчика. Чем БОЛЬШЕ насчитал счетчик за некоторый промежуток времени, тем МЕНЬШЕ загрузка ЦП.
Физически значение счетчика показывает, сколько времени на отрезке времени наблюдения МК находится в задаче Idle. Ни разу не зашел - загрузка 100%, постоянно выполняются какие-то задачи, свободного времени нет.

В статье по ссылке - это, извините, вчерашний день. Хотя, так оно и есть, если верить дате 2008 год


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 01 авг 2019, 00:36 
Старожил

Зарегистрирован: 28 сен 2018, 00:25
Сообщения: 371
https://habr.com/ru/post/352782/#five


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 01 авг 2019, 10:05 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3093
BusMaster писал(а):
В файле кофига РТОС прописываем это: #define configUSE_IDLE_HOOK 1 , затем где-нибудь (например в main.c) создаем ф-цию void vApplicationIdleHook(void) { } и пишем в нее инкремент счетчика. Чем БОЛЬШЕ насчитал счетчик за некоторый промежуток времени, тем МЕНЬШЕ загрузка ЦП.

С примером кода похожий метод даже:
http://we.easyelectronics.ru/os-rtos/fr ... ation.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 01 авг 2019, 22:21 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Если всяких ртосов нет или интересно время торчания только в прерывании, то вполне годный метод.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 02 авг 2019, 15:30 
Здравствуйте!

Зарегистрирован: 25 май 2013, 17:57
Сообщения: 1
В кубе в примерах есть файл \Utilities\CPU\cpu_utils.h
функция uint16_t osGetCPUUsage (void);
используется в \Demonstrations\STemWin

Применял в своем проекте - работает

/********************** NOTES **********************************************
To use this module, the following steps should be followed :

1- in the _OS_Config.h file (ex. FreeRTOSConfig.h) enable the following macros :
- #define configUSE_IDLE_HOOK 1
- #define configUSE_TICK_HOOK 1

2- in the _OS_Config.h define the following macros :
- #define traceTASK_SWITCHED_IN() extern void StartIdleMonitor(void); \
StartIdleMonitor()
- #define traceTASK_SWITCHED_OUT() extern void EndIdleMonitor(void); \
EndIdleMonitor()
*******************************************************************************/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загруженность контроллера
СообщениеДобавлено: 06 авг 2019, 00:04 
Заглядывает иногда

Зарегистрирован: 20 май 2015, 11:18
Сообщения: 96
Вариант со счетчиком в идле помог. Вывел счетчик через уарт и стало понятно насколько загружено ядро.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB