|
freertos и его enter_critical, в какой ртос как реализован CRITICAL |
|
|
|
 |
Ответов
|
May 4 2007, 10:53
|

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

|
Цитата(cebotor @ May 4 2007, 10:40)  я правильно все понял ? прерывания запрещаються вообще? На то она и железобетонная критическая секция. Что не мешает делать Вам что-то свое. У меня, например FIQ не запрещаются. Цитата надо вызывать вложенные приложения в ручную ? Ерунда какая-то - какие вложенные? Чего в ручную? Причем здесь критическая секция? Цитата не будут работать не только другие задачи , но и банальные обработчики таймеров и мастеров типа СПИ ? Не запускать другие задачи это не "критческая секция" - это "остановить шедулер", void vTaskSuspendAll() (в новых версиях переименовано в vTaskSuspendScheduler()), что естественно осуществляется без запретов прерываний. Причем во FreeRTOS при xTaskResumeScheduler() для простоявших задач восстановление делается максимально аккуратно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 4 2007, 11:16
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(zltigo @ May 4 2007, 11:53)  На то она и железобетонная критическая секция. Что не мешает делать Вам что-то свое. У меня, например FIQ не запрещаются.
Ерунда какая-то - какие вложенные? Чего в ручную? Причем здесь критическая секция?
Не запускать другие задачи это не "критческая секция" - это "остановить шедулер", void vTaskSuspendAll() (в новых версиях переименовано в vTaskSuspendScheduler()), что естественно осуществляется без запретов прерываний. Причем во FreeRTOS при xTaskResumeScheduler() для простоявших задач восстановление делается максимально аккуратно. ну вобщем понятно . в ембосе под критической секцией понимается непереключение задач(как во фриртосе суспенд щедулер ) , а для "железобетона "есть __disable_interrupts(); а во фриртосе , наоборот - критическая секция это запрет прерывания, а для непереключения стоп щедулера. что более нужно неясно. я склюняюсь к тому что вариант ембоса - ибо когда мне нужен "железобетон" я просто запрещу перрывания , а когда у меня критический сектор - я просто хочу , чтобы у меня приложения например не вызывали перекрестное обращение к какой нибудь общей переменной.
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
May 4 2007, 11:42
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(zltigo @ May 4 2007, 12:30)  1. "Просто" запретить/разрешить недостаточно для общего случая вложенных критических секций. 2. Описанный Вами вариант c OS_RegionCnt++ это и есть останов шедулера, только примитивный. 1. спасибо большое все понял ! а не могли бы вы отосллать меня куда нить где можно почитать про то что такое нестед критикал в теории ? а то я ника не могу представить , как из одной критической ситуации можно "вложиться в другую", если прерывания и переключения задач запрещены . 2. да и ето я тоже уже сообразил , посмотрел как во фриртосе реализован суспенд_щедулер -- понравилось , хотя глазу приятнее OS_RegionCnt++ (простите за упрямство
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
Сообщений в этой теме
cebotor freertos и его enter_critical May 4 2007, 10:40     Abo Цитата(zltigo @ May 4 2007, 16:42) Да все... May 4 2007, 12:13      v_shamaev Цитата(Abo @ May 4 2007, 16:13) Чтобы тра... May 4 2007, 12:46      zltigo Цитата(Abo @ May 4 2007, 15:13) Чтобы тра... May 4 2007, 13:31       Abo Цитата(zltigo @ May 4 2007, 17:31) Это ес... May 5 2007, 07:54        zltigo Цитата(Abo @ May 5 2007, 10:54) А использ... May 5 2007, 08:35         Abo Цитата(zltigo @ May 5 2007, 12:35) Ограни... May 5 2007, 09:37          zltigo Цитата(Abo @ May 5 2007, 12:37) Это как э... May 5 2007, 12:18  AlexBoy Цитата(cebotor @ May 4 2007, 11:16) что б... May 4 2007, 12:37 DASM Что-то ничего не понял. Ну хорошо, запретили мы пр... May 5 2007, 09:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|