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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> FreeRTOS общие вопросы
Mr.Woland
сообщение Nov 12 2009, 06:02
Сообщение #31





Группа: Участник
Сообщений: 14
Регистрация: 8-09-09
Пользователь №: 52 247



Здравствуйте, не поскажите, есть-ли в FreeRTOS поддержка рабоы на 2х ядрах PowerPC405/440 ?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 09:10
Сообщение #32


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Заранее извиняюсь за плохое знание аглицкого. Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ?

И ещё вопросик: Почему прерывание таймера, переключающее тред на следующий сделано с максимальным приоритетом? ИМХО логичнее делать минимальный.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 12 2009, 09:30
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Nov 12 2009, 12:10) *
Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ?

Вопрос не совсем понятен - проблемы, например, с хитро-английским модальным глаголом should, так в этом конкретном случае для выражения меньшей степени уверенности, нежели must - т.е. хорошо ложится на русское "может быть"? Или проблемы с переводом комментариев?
Цитата
Почему прерывание таймера, переключающее тред на следующий сделано с максимальным приоритетом? ИМХО логичнее делать минимальный.

Это относится к конкретному порту - делайте, как считаете нужным в Вашем конкретном случае.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 09:38
Сообщение #34


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Nov 12 2009, 15:30) *
Вопрос не совсем понятен - проблемы, например, с хитро-английским модальным глаголом should, так в этом конкретном случае для выражения меньшей степени уверенности, нежели must - т.е. хорошо ложится на русское "может быть"? Или проблемы с переводом комментариев?

Для тех, кто в танке повторю вопрос:
Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ?

За ответ на второй вопрос спасибо.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 12 2009, 09:47
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Nov 12 2009, 12:38) *
Для тех, кто в танке повторю вопрос:

Тогда считайте, что я в танке, ибо отвечать не понимая, что Вам не понятно не могу.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 09:51
Сообщение #36


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



На что влияет установка configIDLE_SHOULD_YIELD в 0 или в 1 ?
Надеюсь так понятней.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 12 2009, 10:07
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Nov 12 2009, 12:51) *
Надеюсь так понятней.

Это написано в комментариях
/* When using preemption tasks of equal priority will be
timesliced. If a task that is sharing the idle priority is ready
to run then the idle task should yield before the end of the
timeslice.
*/
В реальности в Idle может быть полезным следить не сколько за наличием задач с приоритетом равным Idle (лично я не пользую таких), сколько за приоритетными задачами которые были включены в список в результате работы планировщика из обработчика прерывания, но сам обработчик не содержит громоздкого сохранения контекста и соответственно YIELD() из такого обработчика не вызывается.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 12 2009, 13:07
Сообщение #38


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Объясните пожалуйста глобальный смысл в дефайнах FreeRTOSа конструкций типа этой. Просто 0x0020 не катит?
Код
( ( unsigned portLONG ) 0x0020 )


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 12 2009, 14:33
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Nov 12 2009, 16:07) *
Объясните..

Относительно "portLONG" - чисто бзик Автора, от которого он в конце концов, слава те господи, отказался. Ну а
(unsigned long)0x0020
или
0x0020UL
это для полной определенности, дабы и человеку было видно и самым разным компиляторам нималейших шансов для непонимания не оставить.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 13 2009, 04:02
Сообщение #40


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Nov 12 2009, 20:33) *
Относительно "portLONG" - чисто бзик Автора, от которого он в конце концов, слава те господи, отказался.

От этого "бзика" у меня в проге не хотели компилиться конструкции типа
Код
#define AdcRate        8000
#define AdcDivider    (((configCPU_CLOCK_HZ/4/11) + (AdcRate/2)) / AdcRate)

#if    (AdcDivider > 256)
#error "Недопустимая частота сэмплирования АЦП"
#endif


А вот при определении
Код
#define configCPU_CLOCK_HZ            ( 24000000UL )
вместо
#define configCPU_CLOCK_HZ            ( ( unsigned portLONG ) 24000000 )

Эта конструкция (#if ...) нормально препроцессором отрабатывается.

Цитата(zltigo @ Nov 12 2009, 16:07) *
/* When using preemption tasks of equal priority will be
timesliced. If a task that is sharing the idle priority is ready
to run then the idle task should yield before the end of the
timeslice.*/

Я опять ничерта не понял smile.gif. Особенно слово yield в данном контексте (вообще применительно к RTOS)

Сообщение отредактировал GetSmart - Nov 13 2009, 04:00


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 13 2009, 13:36
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Nov 13 2009, 07:02) *
Особенно слово yield в данном контексте (вообще применительно к RTOS)

Я озадачен sad.gif. yield - "прекратить,уступить" ключевое понятие, а taskyield() самая "главная" функция именно RTOS. Это собственно переключение контекста. Используется, как для добровольного, так и для принудительного по таймеру перехода на другую задачу. Глагол should в этом контексте описан ранее.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 13 2009, 18:03
Сообщение #42


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Nov 13 2009, 19:36) *
Я озадачен sad.gif. yield - "прекратить,уступить" ключевое понятие

Мерси боку. Знаю много аглицких слов, но этого не знал. А в словаре у него с десяток разных смыслов. Не поймёшь какой здесь.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Terminator
сообщение Nov 17 2009, 10:50
Сообщение #43


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Цитата(zltigo @ Nov 12 2009, 16:07) *
В реальности в Idle может быть полезным следить не сколько за наличием задач с приоритетом равным Idle (лично я не пользую таких), сколько за приоритетными задачами которые были включены в список в результате работы планировщика из обработчика прерывания, но сам обработчик не содержит громоздкого сохранения контекста и соответственно YIELD() из такого обработчика не вызывается.


Т.е. если в обработчике прерывания(в котором нет YIELD), скажем в очередь складывается что-либо, то высокоприоритетная задача которая ждёт сообщений из этой очереди вызовется только в момент смены контекста вызванного каким-нибудь другим событием?
И соответственно configIDLE_SHOULD_YIELD установленный в 1 поможет ускорить эту смену?

Я правильно понимаю?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 17 2009, 11:13
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Terminator @ Nov 17 2009, 13:50) *
Т.е. если в обработчике прерывания(в котором нет YIELD), скажем в очередь складывается что-либо, то высокоприоритетная задача которая ждёт сообщений из этой очереди вызовется только в момент смены контекста вызванного каким-нибудь другим событием?

Да, когда прерванная задача отдаст управление, или будут разборки по таймерному прерыванию.
Цитата
И соответственно configIDLE_SHOULD_YIELD установленный в 1 поможет ускорить эту смену?

Для текущей официальной реализации, насколько я помню, это работает только для задач с приоритетом равным IDLE, т.е. при наличии в очереди задачи с таким приоритетом ей отдается управление. У Вас есть такие задачи? Но, естественно, в IDLE можно наворотить всякого и реализовать любой механизм, нежели надо.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Terminator
сообщение Nov 17 2009, 11:31
Сообщение #45


Местный
***

Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382



Цитата(zltigo @ Nov 17 2009, 17:13) *
Для текущей официальной реализации, насколько я помню, это работает только для задач с приоритетом равным IDLE, т.е. при наличии в очереди задачи с таким приоритетом ей отдается управление. У Вас есть такие задачи? Но, естественно, в IDLE можно наворотить всякого и реализовать любой механизм, нежели надо.


Нет, задач с IDLE приоритетом у меня нет. Т.е. получается, что в худшем случае высокоприоритетная задача будет ждать 1 тик?
Go to the top of the page
 
+Quote Post

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

 


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


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