Работал все время с ucos - клоном embos. Решил протестировать freertos.
Сразу возник вопрос , как реализованы критические секции ? в embos например
#define OS_EnterRegion() {OS_RegionCnt++; }
то есть при входе в участок увеличивается счетчик , и если он не нулевой , то не происходит переключение между задачами.
во фриртосе нашел
#define portENTER_CRITICAL() vPortEnterCritical()
void vPortEnterCritical( void ) { /* Disable interrupts first! */ __disable_interrupt();
/* Now interrupts are disabled ulCriticalNesting can be accessed directly. Increment ulCriticalNesting to keep a count of how many times portENTER_CRITICAL() has been called. */ ulCriticalNesting++; }
я правильно все понял ? прерывания запрещаються вообще? надо вызывать вложенные приложения в ручную ? не будут работать не только другие задачи , но и банальные обработчики таймеров и мастеров типа СПИ ?
Сообщение отредактировал cebotor - May 4 2007, 10:40
--------------------
если еррата пуста - это не хорошо а плохо
|