32
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 7 '2011
микроконтроллеры
Следует отметить, что в популярном се-
мействе микроконтроллеров ARM Cortex M3
(как и в некоторых других) меньшие значения
приоритетов прерываний соответствуют ло-
гически б
óльшим приоритетам. Если вы хоти-
те назначить прерыванию более высокий при-
оритет, вы назначаете ему приоритет с более
низким номером. Одна из возможных причин
краха программы в таких случаях — назначе-
ние прерыванию номера приоритета меньше-
го, чем configMAX_SYSCALL_INTERRUPT_
PRIORITY, и вызов из него API-функции.
Пример корректной настройки файла
FreeRTOSConfig.h для микроконтроллеров
ARM Cortex M3:
#define configKERNEL_INTERRUPT_PRIORITY
255
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191
Выводы
В любой операционной системе реального
времени с вытесняющей многозадачностью
существует потенциальный источник оши-
бок и сбоев работы системы — это едино-
временное обращение сразу нескольких задач
к одному ресурсу. В качестве ресурса может
выступать множество видов объектов:
память;
•
периферийные устройства;
•
библиотечные функции и др.
•
Проблема возникает, когда одна задача
начинает какие-либо действия с ресурсом,
но не успевает их закончить, когда проис-
ходит переключение контекста и управление
получает другая задача, которая обращается
к тому же самому ресурсу, состояние которо-
го носит промежуточный, не окончательный
характер (из-за воздействия первой задачи).
При этом результат обращения к ресурсу
в обеих задачах окажется ошибочным, ис-
каженным.
К счастью, во FreeRTOS существуют встро-
енные на уровне ядра механизмы обеспечения
совместного доступа к одному аппаратному
ресурсу. С применением счетных семафоров
для управления доступом к ресурсам читатель
уже познакомился. В следующей публикации
внимание будет сконцентрировано на сред-
ствах FreeRTOS обеспечения безопасного до-
ступа к ресурсам. К таковым относятся:
мьютексы и двоичные семафоры;
•
счетные семафоры;
•
критические секции;
•
задачи-сторожа (gatekeeper tasks).
•
n
Литература
1. Эндрюс Г. Р. Основы многопоточного, парал-
лельного и распределенного программирования.
Пер. с англ. М.: ИД «Вильямс», 2003.
2. Курниц А. FreeRTOS — операционная система
для микроконтроллеров // Компоненты и тех-
нологии. 2011. № 2–6.
3. Barry R. Using the FreeRTOS real time kernel:
A Practical Guide. 2009.
4.
Достарыңызбен бөлісу: |