Отложенная обработка
прерываний
При проектировании встраиваемой
микроконтроллерной системы на осно-
ве FreeRTOS необходимо учесть, насколько
долго продолжается процесс обработки пре-
рывания. В самом простом случае, когда при
обработке прерывания повторные прерыва-
ния запрещены, временные задержки в об-
работчике прерываний могут существенно
ухудшить время реакции системы на собы-
тия. Тогда для выполнения продолжитель-
ных действий по обработке прерывания
вводится так называемый «отложенный» ре-
жим их выполнения [5]. В процессе реакции
на прерывание обработчик прерывания вы-
полняет только первичные действия, напри-
мер считывает данные. Затем львиную долю
обработки берет на себя задача-обработчик
прерывания. Такая организация обработки
прерываний называется отложенной обра-
боткой. При этом обработчик прерывания
выполняет только самые «экстренные» дей-
ствия, а основная обработка «откладывает-
ся», пока ее не выполнит задача-обработчик
прерывания.
Двоичные семафоры
Двоичные семафоры предназначены для
эффективной синхронизации выполне-
ния задачи с возникновением прерывания.
Они позволяют переводить задачу из со-
стояния блокировки в состояние готовности
к выполнению каждый раз, когда происходит
прерывание. Это дает возможность перене-
сти б
óльшую часть кода, отвечающего за об-
работку внешнего события, из обработчика
прерывания в тело задачи, выполнение кото-
рой синхронизировано с соответствующим
прерыванием. Внутри обработчика прерыва-
ния останется лишь небольшой, быстро вы-
полняющийся фрагмент кода. Говорят, что
обработка прерывания отложена и непосред-
ственно выполняется задачей-обработчиком.
Если прерывание происходит при возник-
новении особенно критичного к времени ре-
акции внешнего события, то имеет смысл на-
значить задаче-обработчику достаточно вы-
сокий приоритет, чтобы при возникновении
прерывания она вытесняла другие задачи
в системе. Это произойдет, когда завершит
свое выполнение обработчик прерывания.
Выполнение задачи-обработчика начинается
сразу же после окончания выполнения об-
работчика прерывания. Создается впечатле-
ние, что весь код, отвечающий за обработку
внешнего события, реализован внутри об-
работчика прерывания (рис. 1).
На рис. 1 видно, что прерывание преры-
вает выполнение одной задачи и возвращает
управление другой. В момент времени (1)
выполняется прикладная задача, когда про-
Достарыңызбен бөлісу: |