Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Следующие методы могут использоваться, чтобы создать повторно используемую функцию:
• Запрет на прерывания: Прерывания заблокированы при выполнении критических частей некоторой функции.
• Использование локальных переменных: Вспомним, что локальные переменные хранятся в стеках. Если высокоприоритетная задача выгружает задачу с низким приоритетом, переменные безопасно сохранены в стеке.
• Использование регистров микропроцессора: регистры микропроцессора могут использоваться, чтобы сохранить критические переменные внутри повторно используемой
• Комбинация методов: чтобы создать повторно используемую функцию, может использоваться комбинация этих методов.
8.6.3. Межзадачные связи
Межзадачная связь — ключевое требование для ОСРВ, использующих прерывания. Эта проблема не критична для кооперативных многозадачных ОСРВ поскольку сами задачи определяют, когда можно вернуть управление операционной системе. Следовательно, действия задачи могут гарантировать, что все данные были правильно модифицированы перед отказом задачи от управления.
Проще всего использовать для пересылки данных между задачами глобальные переменные. Как мы видели в предыдущем обсуждении, эта простая методика может нарушаться, если низкоприоритетная задача выгружается задачей с высоким приоритетом прежде, чем получит возможность, чтобы модифицировать эти переменные.
Чтобы предотвращать такие случаи, мы можем использовать почтовый ящик — взаимно согласованное расположение в памяти, которую задачи могут совместно использовать. Почтовый ящик может содержать одну переменную, группу переменных или даже структуру данных. Чтобы гарантировать, что, данные в почтовом ящике являются текущими, задача, может выполнять почтовую операцию — операцию, которая может записывать в почтовый ящик информацию, защищенную шифром, и другая задача может затем считать содержимое почтового ящика (выполнить операцию pend), если имеет доступ к шифру. Шифром в каждый момент обладает только одна задача, и только она может работать с почтовым ящиком в это время. Это очень похоже на обсужденную ранее методику семафоров.
8.6.4. Безопасность, проверка и безотказная работа
Одной из наиболее критичных проблем, усложняющих работу ОСРВ, является проблема безопасности. Мы уже обсудили часть стандартов, касающихся измерений и безопасности. В зависимости от того, где используется ОСРВ (связь, медицинское изделие, коммерческое изделие, авиация, и т.д.), имеются различные требования безопасности, которые должны быть выполнены. Безопасность операционной системы должна быть подтверждена документацией и испытаниями. Кроме того, в случае сбоя, система должна переходить в безопасный режим — предотвращающий травматизм персонала и повреждение оборудования.
Пример: Если мы должны были использовать ОСРВ, чтобы управлять светофором на оживленном перекрестке, безопасным режимом при любых сбоях системы будет красный свет для обоих направлений движения. Нетрудно представить, что выбор для безопасного режима зеленого света сразу приведет к катастрофическим последствиям.
Проблема безопасности — ключевой фактор при решении вопроса: написать ли вам собственную операционную систему или приобрести стандартную.
8.6.5. Главный вопрос
При нашем обсуждении операционных систем в режиме реального времени, мы обходили ключевой вопрос,
• Применение: Для чего система будет использоваться? Если это используется в системе, где безопасность — критичная проблема, разумно использовать систему, сертифицированную для безопасного использования. Это не подразумевает высокой стоимости. Пакеты ОСРВ для безопасной работы могут быть и дешевыми [Labrosse 2002].
• Критичность: уважаемый коллега по вычислительной технике сознательно выбрал собственную разработку, а не применение стандартного пакета ОСРВ при разработке критичного применения ОСРВ, усложненного требованиями к ядерной безопасности. Он мотивировал это тем, что он хотел написать каждую строку этой программы и полностью понимать работу системы. Он чувствовал, что в коммерческом пакете некоторые подробности системы будут от него скрыты.
• Стоимость: Не следует думать, что разработка собственного ОСРВ может принести вам большую экономию, поскольку стоимость программ в 5 000 долларов может показаться слишком высокой. Однако при создании собственной программы ваши трудозатраты могут стоить не меньше.
Какой бы путь вы не выбрали, вам будут полезны некоторые рекомендации следующего раздела, которым необходимо следовать при разработке ОСРВ.
8.7. Выполнение операционной системы реального времени
Мы приводим здесь краткое описание шагов, необходимых для создания реализации выполнения операционной системы в режиме реального времени ОСРВ:
1. Полностью понять все системные требования. Определить, действительно ли вам требуется ОСРВ. Если вы разрабатываете простой алгоритм управления, то вас может удовлетворить обычная последовательная программа; ОСРВ необходима только тогда, когда ваша прикладная программа должна управлять целым рядом событий.
2. Определить соответствующий алгоритм планирования, который целесообразно использовать для управления задачами. Не забудьте, каждый из них не лучше другого. Вы, как разработчик системы, задание должны найти алгоритм планирования, наиболее удовлетворяющий применению.
3. Разделить вашу систему на независимые задачи.
4. Выполнить операционную систему, основная функция которой заключается в планировании и управлении задачами.
5. Написать код задач. Убедитесь, что задачи не конкурируют за одни и те же участки памяти и что они не зависят друг от друга. Убедитесь также, что реализация задачи соответствует принятому алгоритму планирования.
6. Если вы разрабатываете систему с передним планом и фоновыми задачами, разработайте сначала фоновую, а затем приоритетную часть.
7. И что важнее всего, проверяйте, проверяйте и проверяйте! Используйте звуковые методики испытаний, которые были обсуждены в главе 2.
8.8. Пример применения: ОСРВ циклического опроса
В этом разделе мы обсудим различные операционные системы в режиме реального времени. Мы начнем с базовой системы циклического опроса, а затем рассмотрим систему циклического опроса с прерываниями. Затем мы опишем аппаратный имитатор, предназначенный для разработки и проверки более сложных алгоритмов планирования.