Группа: Участник
Сообщений: 5
Регистрация: 14-08-08
Пользователь №: 39 607
Мы благополучно спортировали scmRTOS на Xtensa процессор и эта штука худо бедно работает. Сейчас мы усиленно занимаемся тестированием. Вот входе этого тестирования возникла ситуация которую не совсем понятно как решить. Переключение процессов осуществляется по программному прерыванию - естественно в критической секции где мы запоминаем маску разрешенных прерываний и отключаем их, в новом процесс - востанавливаем маску их стека этого нового процесса и т.д. Все замечательно. Но что происходит когда в контексте какого либо процесса какое либо прерывание глобально маскируется или наоборот разрешается - в этом случае в контексте другого процесса об этом никто не знает и все сбрасывается в первоначальное состояние?! Тоесть олучается при нашей реализации мы можем изменять прерывания только в контексте процессов а не глобально. Что не есть хорошо. Кто то может меня просвятить на зту тему - как в принцыпе в scmRTOS можно управлять прерываниями глобально и возможно ли это в других портах на других процессорах?
И еще небольшое замечание/просьба для тех кто поддерживает веб сайт scmRTOS - сайт на английском но когда кликаешь на линк документации вываливает описание на русском языке. Английская версия там тоже есть но нужно изголяться и шарить ручками. Я думаю это займет всго лишь 5 минут добавить/исправить линк в тексте - все мои коллеги кому я давал ссылки на эту ОС по русски не говорят. Спасибо.
Группа: Участник
Сообщений: 13
Регистрация: 23-10-04
Пользователь №: 968
Сохраняется признак глобального состояния прерываний (разрешены/запрещены или текущий приоритет если есть таковой) плюс состояние флагов CPU. Маски отдельных прерываний не сохраняютя, т.е. если один процесс изменит, то увидят все.