Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

В главе 4 мы обсуждали мощную и гибкую систему прерывания микроконтроллера 68HC12 с приоритетным управлением. Эту систему прерывания мы можем использовать теперь при разработке ОСРВ. При этом сначала основная программа проводит инициализацию, позволяющую конфигурировать систему, а затем система переходит к бесконечному циклу. Внутри цикла, процессор просто ждет событий, вызывающих прерывание. Когда приходят отдельные запросы на прерывания, процессор выполняет программу обработки прерывания, связанную с каждой из задач (с каждым прерыванием). Если несколько запросов на прерывания приходят одновременно, используются механизмы приоритетов, встроенные в 68HC12, и определяющие, какая из задач должна быть выполнена сначала. Механизмы стеков в системах прерывания 68HC12 гарантирует, что контексты задач будут правильно сохраняться и восстанавливаться. Операционную систему с управлением по прерыванию такого типа относительно просто написать. К числу ее преимуществ относится малое время реакции на событие, вызывающее прерывание. Систему необходимо спроектировать таким образом, чтобы она точно оценивала приоритет каждой задачи, от которой приходит запрос на прерывание.

Пример: В этой главе мы уже обсуждали робот, движущийся в лабиринте и обнаруживающий магнитные мины. Операционная система для этого робота могла бы быть выполнена, используя методы прерывания. В этом случае задачи инициализации (для ЖКД, ATD и ШИМ) были бы реализованы при инициировании операционной системы и затем переведены в бездействующее состояние. Операционная система затем перешла бы к непрерывному циклу, ожидая запросов на прерывание от различных задач. Каждая из задач, связанных с обнаружением мин, с обнаружением стенок лабиринта и управлением соответствующими поворотами, с модификацией информации, выводимой на ЖКД, посылала бы отдельный запрос на прерывание и вызывала связанную с ним программу обработки прерывания (ISR). Если, например, робот обнаруживает мину, это событие вызовет прерывание, и затем соответствующую ISR, связанную с обходом мины. Если несколько запросов на прерывания приходят одновременно; аппаратные средства приоритета прерывания 68HC12 обеспечивают первоочередное обслуживание прерывания с самым высоким приоритетом. Если запрос на прерывание с более высоким приоритетом приходит во время обслуживания низкоприоритетного прерывания, то последнее прерывается, контроллер 68HC12 конфигурируется для обслуживания прерывания с высоким приоритетом и лишь затем возвращается к обслуживанию низкоприоритетного прерывания.

8.5.6. Кооперативная многозадачность

При кооперативном многозадачном режиме ОСРВ для задачи с самым высоким приоритетом из находящихся в состоянии готовности выделяется определенное количество процессорного времени. Затем она возвращает управление операционной системе в отметке, удобной для прерывания связанных с ней действий. До передачи управления, эта задача модифицирует связанный с ней TCB в соответствии с текущим контекстом. Затем задача снова переводится в состояние готовности. Операционная система затем позволяет следующей задаче с самым высоким приоритетом, находящейся в состоянии готовности перейти в активное состояние. Задача, вводящая активное состояние восстанавливает контекст, извлекая информацию из своего TCB. Эта задача затем выполняет свою часть программы, пока не достигает точки прерывания. Затем она, в свою очередь, модифицирует свой TCB в соответствии с текущим контекстом, возвращает управление операционной системе и процесс продолжается. Важно подчеркнуть, что в кооперативной многозадачной системе, задача возвращает управление операционной системе. Если задача не будет передавать управление, то задачи с более низким приоритетом никогда не смогут получить процессорного времени. Вы можете заметить, насколько важна межзадачная связь при таком типе операционной системы. Она обычно осуществляется путем использования глобальных переменных.

Операционные системы этого типа можно выполнить, используя для задач системы ряд списков с указателями. При этом списки с указателями существуют для каждого из различных состояний, в которых могут находиться задачи. Эта концепция иллюстрируется структурой, показанной на рис. 8.17. В процессе работы системы, задачи перемещаются из списка в список. Ранее в этой главе мы перемещали из одного списка с указателями в другой запись, идентифицирующую автомобиль, в ответ на его обслуживание различными автомобильными дилерами. Точно так же в зависимости от действий нашей прикладной программы перемещается из списка в список и задача, состояние которой отражается в форме записи с указателем.

Рис. 8.17.

Система списков с указателями для задач

8.5.7. Многозадачные системы с преимущественным приоритетом

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT