Easyelectronics.ru

Электроника для всех
Текущее время: 26 фев 2018, 00:47

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 26 янв 2017, 11:42 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 463
Начал работать с FREERTOS и вот возникли некоторые вопросы
1)если я хочу использовать динамическое распределение памяти то freetros-ом будут заменнены ф-ции calloc, malloc, free и т.д. (естественно при использовании heap_1.c, heap_2, heap_4 )
2)и вопрос на скорость реакции той самой ОС. Есть такой дефайн в FREERTOSconfig.h configTICK_RATE_HZ и равен он 1000. Можно ль его, без катастрофических последствий, изменить на большее число чем 1000? Потому как если пытаться это сделать в mxCUBE то он грозится тем что мол получите деление на ноль..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 26 янв 2017, 16:02 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2511
1. Начиная с 9 версии разрабы добавили много функций постфиксом static, которые не используют кучу. Не знаю можно ли обойтись вообще без кучи. Про выбор heap_x можете почитать, хотя там все довольно просто. У себя, в проектах где есть динамическое выделение памяти с разным размером (задачи, очереди, просто выделение памяти pvPortMalloc()) использую heap_4, в других, где задачи не удаляются, создается всё лишь раз при старте использую heap_2.
2. Это лишь квант времени ОС, квант работы диспетчера и других сервисных задач. Аппаратные прерывания по прежнему реагируют также, да и диспетчер можно принудительно вызвать командами taskYIELD(). Задрать частоту можно, но надо понимать чем это грозит. Для начала можно почитать Курница, по сути перевод официальной доки FreeRTOSa.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 26 янв 2017, 23:06 
Старожил

Зарегистрирован: 11 фев 2013, 01:54
Сообщения: 339
kos писал(а):
2)и вопрос на скорость реакции той самой ОС. Есть такой дефайн в FREERTOSconfig.h configTICK_RATE_HZ и равен он 1000. Можно ль его, без катастрофических последствий, изменить на большее число чем 1000? Потому как если пытаться это сделать в mxCUBE то он грозится тем что мол получите деление на ноль..


А зачем нужно большее число?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 27 янв 2017, 10:40 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 463
Tester500 писал(а):
kos писал(а):
2)и вопрос на скорость реакции той самой ОС. Есть такой дефайн в FREERTOSconfig.h configTICK_RATE_HZ и равен он 1000. Можно ль его, без катастрофических последствий, изменить на большее число чем 1000? Потому как если пытаться это сделать в mxCUBE то он грозится тем что мол получите деление на ноль..


А зачем нужно большее число?


По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 27 янв 2017, 10:44 
Старожил
Аватара пользователя

Зарегистрирован: 29 янв 2010, 15:41
Сообщения: 1033
Откуда: Германия
kos писал(а):
Tester500 писал(а):
kos писал(а):
2)и вопрос на скорость реакции той самой ОС. Есть такой дефайн в FREERTOSconfig.h configTICK_RATE_HZ и равен он 1000. Можно ль его, без катастрофических последствий, изменить на большее число чем 1000? Потому как если пытаться это сделать в mxCUBE то он грозится тем что мол получите деление на ноль..


А зачем нужно большее число?


По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .

По идее - да.
И как следствие - быстрее переключение задач, но и меньшее время на непрерывное выполнение задачи.

С определенного значения, процессор просто остается жить в этом обработчике прерывания SysTick, не давая основному потоку (НЕ прерываниям) работать, и соответственно, все перестает работать вообще. Так что - наслаждаться увеличением этого числа надо с осторожностью.

_________________
Мои поделки
http://www.fun-electronic.net/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 27 янв 2017, 11:01 
Старожил

Зарегистрирован: 11 фев 2013, 01:54
Сообщения: 339
kos писал(а):

По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .


А зачем нужен более короткий тик?
Для какой задачи?
Намек - если задача выполняется за время меньшее чем отводит один тик, то управление будет предано следующей задаче. Если задач всего две, то управление каждой задаче будет передаваться чаще, чем 1/1000 сек (ну и зависит от самой задачи).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 27 янв 2017, 12:07 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 463
Tester500 писал(а):
kos писал(а):

По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .


А зачем нужен более короткий тик?
Для какой задачи?
Намек - если задача выполняется за время меньшее чем отводит один тик, то управление будет предано следующей задаче. Если задач всего две, то управление каждой задаче будет передаваться чаще, чем 1/1000 сек (ну и зависит от самой задачи).


Пока что это скорее как теоретические изыскания. Знание возможностей и невозможностей всегда дает бонусы.
А за идею спасибо! Действительно не подумал о том что отдача управления сразу приведет к виртуальному увеличению частоты. Но вполне реальному возрастанию скорости.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 27 янв 2017, 12:09 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 463
MasterAlexei писал(а):

По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .
По идее - да.
И как следствие - быстрее переключение задач, но и меньшее время на непрерывное выполнение задачи.

С определенного значения, процессор просто остается жить в этом обработчике прерывания SysTick, не давая основному потоку (НЕ прерываниям) работать, и соответственно, все перестает работать вообще. Так что - наслаждаться увеличением этого числа надо с осторожностью.



Да накладные расходы возрастают.. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 18 фев 2017, 02:31 
Заглядывает иногда

Зарегистрирован: 16 фев 2017, 17:48
Сообщения: 38
Tester500 писал(а):
kos писал(а):

По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .


А зачем нужен более короткий тик?
Для какой задачи?
Намек - если задача выполняется за время меньшее чем отводит один тик, то управление будет предано следующей задаче. Если задач всего две, то управление каждой задаче будет передаваться чаще, чем 1/1000 сек (ну и зависит от самой задачи).


Ну получается быстрее будет время реакции на событие. Если у вас в таске опрашивается флаг, то время реакции по умолчанию 1 мс, надо быстрее - ставишь время тика меньше. Как вариант, но тут есть свои недостатки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 20 фев 2017, 15:14 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 463
_SayHello писал(а):
Tester500 писал(а):
kos писал(а):

По сути это частота тика ОС. Чем больше число тем короче тик. Я так себе эту ситуацию понимаю .


А зачем нужен более короткий тик?
Для какой задачи?
Намек - если задача выполняется за время меньшее чем отводит один тик, то управление будет предано следующей задаче. Если задач всего две, то управление каждой задаче будет передаваться чаще, чем 1/1000 сек (ну и зависит от самой задачи).


Ну получается быстрее будет время реакции на событие. Если у вас в таске опрашивается флаг, то время реакции по умолчанию 1 мс, надо быстрее - ставишь время тика меньше. Как вариант, но тут есть свои недостатки.


Вообще как справедливо было замечено то при правильной организации программы все получается довольно красиво и время пререключения меж задачами может быть меньше чем 1мс. А из прирывания вообще можно улететь сразу туда куда надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Несколько вопросов по freertos по работе с кучей и не только
СообщениеДобавлено: 01 мар 2017, 19:03 
Старожил

Зарегистрирован: 26 янв 2010, 21:47
Сообщения: 314
_SayHello писал(а):
Если у вас в таске опрашивается флаг

В РТОСе опрашивать флаги - нонсес. Если нужно отработать по событию, нужно юзать семафоры, событие произошло (прерывание), семафор отдался, запустилась задача по обработке. Всё, и никаких флагов.


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

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


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

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


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

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

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