Mr.Woland 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Здравствуйте, не поскажите, есть-ли в FreeRTOS поддержка рабоы на 2х ядрах PowerPC405/440 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Заранее извиняюсь за плохое знание аглицкого. Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ? И ещё вопросик: Почему прерывание таймера, переключающее тред на следующий сделано с максимальным приоритетом? ИМХО логичнее делать минимальный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ? Вопрос не совсем понятен - проблемы, например, с хитро-английским модальным глаголом should, так в этом конкретном случае для выражения меньшей степени уверенности, нежели must - т.е. хорошо ложится на русское "может быть"? Или проблемы с переводом комментариев? Почему прерывание таймера, переключающее тред на следующий сделано с максимальным приоритетом? ИМХО логичнее делать минимальный. Это относится к конкретному порту - делайте, как считаете нужным в Вашем конкретном случае. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Вопрос не совсем понятен - проблемы, например, с хитро-английским модальным глаголом should, так в этом конкретном случае для выражения меньшей степени уверенности, нежели must - т.е. хорошо ложится на русское "может быть"? Или проблемы с переводом комментариев? Для тех, кто в танке повторю вопрос: Кто может подсказать по-русски предназначение дефайна configIDLE_SHOULD_YIELD ? За ответ на второй вопрос спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Для тех, кто в танке повторю вопрос: Тогда считайте, что я в танке, ибо отвечать не понимая, что Вам не понятно не могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба На что влияет установка configIDLE_SHOULD_YIELD в 0 или в 1 ? Надеюсь так понятней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Надеюсь так понятней. Это написано в комментариях /* 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() из такого обработчика не вызывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Объясните пожалуйста глобальный смысл в дефайнах FreeRTOSа конструкций типа этой. Просто 0x0020 не катит? ( ( unsigned portLONG ) 0x0020 ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Объясните.. Относительно "portLONG" - чисто бзик Автора, от которого он в конце концов, слава те господи, отказался. Ну а (unsigned long)0x0020 или 0x0020UL это для полной определенности, дабы и человеку было видно и самым разным компиляторам нималейших шансов для непонимания не оставить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 (изменено) · Жалоба Относительно "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 ...) нормально препроцессором отрабатывается. /* 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.*/ Я опять ничерта не понял :). Особенно слово yield в данном контексте (вообще применительно к RTOS) Изменено 13 ноября, 2009 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Особенно слово yield в данном контексте (вообще применительно к RTOS) Я озадачен :(. yield - "прекратить,уступить" ключевое понятие, а taskyield() самая "главная" функция именно RTOS. Это собственно переключение контекста. Используется, как для добровольного, так и для принудительного по таймеру перехода на другую задачу. Глагол should в этом контексте описан ранее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 13 ноября, 2009 Опубликовано 13 ноября, 2009 · Жалоба Я озадачен :(. yield - "прекратить,уступить" ключевое понятие Мерси боку. Знаю много аглицких слов, но этого не знал. А в словаре у него с десяток разных смыслов. Не поймёшь какой здесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба В реальности в Idle может быть полезным следить не сколько за наличием задач с приоритетом равным Idle (лично я не пользую таких), сколько за приоритетными задачами которые были включены в список в результате работы планировщика из обработчика прерывания, но сам обработчик не содержит громоздкого сохранения контекста и соответственно YIELD() из такого обработчика не вызывается. Т.е. если в обработчике прерывания(в котором нет YIELD), скажем в очередь складывается что-либо, то высокоприоритетная задача которая ждёт сообщений из этой очереди вызовется только в момент смены контекста вызванного каким-нибудь другим событием? И соответственно configIDLE_SHOULD_YIELD установленный в 1 поможет ускорить эту смену? Я правильно понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба Т.е. если в обработчике прерывания(в котором нет YIELD), скажем в очередь складывается что-либо, то высокоприоритетная задача которая ждёт сообщений из этой очереди вызовется только в момент смены контекста вызванного каким-нибудь другим событием? Да, когда прерванная задача отдаст управление, или будут разборки по таймерному прерыванию. И соответственно configIDLE_SHOULD_YIELD установленный в 1 поможет ускорить эту смену? Для текущей официальной реализации, насколько я помню, это работает только для задач с приоритетом равным IDLE, т.е. при наличии в очереди задачи с таким приоритетом ей отдается управление. У Вас есть такие задачи? Но, естественно, в IDLE можно наворотить всякого и реализовать любой механизм, нежели надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 17 ноября, 2009 Опубликовано 17 ноября, 2009 · Жалоба Для текущей официальной реализации, насколько я помню, это работает только для задач с приоритетом равным IDLE, т.е. при наличии в очереди задачи с таким приоритетом ей отдается управление. У Вас есть такие задачи? Но, естественно, в IDLE можно наворотить всякого и реализовать любой механизм, нежели надо. Нет, задач с IDLE приоритетом у меня нет. Т.е. получается, что в худшем случае высокоприоритетная задача будет ждать 1 тик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться