Микроконтроллеры Fujitsu для обеспечения безопасности систем


PDF версия

Функциональная безопасность, как это определено в стандартах IEC61508 или IEC60730, играет ведущую роль в разработке электронных устройств. При разработке аппаратной и программной части устройства требуется немало усилий, чтобы обеспечить соответствие технических характеристик устройства положениям необходимых сертификатов. Поставщики микроконтроллеров (МК) могут значительно упростить эту задачу разработчикам путем внедрения в МК специальных аппаратных и программных компонентов. В настоящей статье показано, как работает такой подход на примере МК Fujitsu Semiconductor на ядре ARM® Cortex™-M3.

«Интересно, что произойдет, если я открою дверь стиральной машины, когда она работает»? Этот вопрос задают себе многие дети, и некоторые из них пытаются ее открыть. Такая попытка может иметь печальные последствия, особенно если машина наполнена горячей водой. К счастью, в современной бытовой технике предусмотрен широкий спектр функций безопасности, которые предотвращают подобные злоупотребления. В нашем случае — это замок, который является компонентом безопасности системы. Другие примеры предполагают защиту от перегрева, ограничение уровня воды (датчики давления или датчики уровня) и т.д.
Безопасность оборудования зависит от правильной работы этих механизмов. Области использования таких подсистем не ограничиваются только бытовой техникой. Во многих приложениях требуется учитывать и гораздо более жесткие стандарты безопасности. Если взять во внимание компоненты, используемые в энергоблоках атомных станций, автомобилях, самолетах и на железнодорожном транспорте, то ошибки пользователей и техники могут привести к травмам и гибели людей, не говоря о повреждении имущества. В медицинской практике жизнь людей часто напрямую зависит от безопасности используемого медицинского оборудования. Понятно, что требования безопасности можно разделить на несколько классов, в зависимости от конкретной опасности. Например, стиральную машину с открытой дверью в работающем режиме, можно отнести к категории низкой опасности.

Стандарты

В нашем обсуждении основное внимание уделяется безопасности оборудования, которое состоит не только из электрических, но и из механических компонентов. Сложность электронного оборудования и программного управления генерирует большое количество потенциальных ошибок. По этой причине более десяти лет назад начались разработки стандартов, определяющих развитие электроники в части безопасности систем.
Одним из самых известных и наиболее применяемым международным стандартом является IEC61508. Многие национальные организации по стандартизации приняли этот стандарт 1:1. Российский аналог этого стандарта — ГОСТ Р МЭК 61508-2007.
IEC61508 называется «Функциональная безопасность электрических, электронных и программируемых электронных систем». Восемь разделов стандарта определяют требования к системам, ошибки в которых представляют опасность для окружающей среды и здоровья живых существ. Стандарт описывает требования как к аппаратной, так и к программной частям системы. Авторы стандарта определяют четыре категории интегральных уровней безопасности — SIL. Эти уровни указываются для систем безопасности в зависимости от конкретной вероятности отказа выполнения требуемой функции (PFD). Например, SIL4 (защита от общей катастрофы) представляет собой максимальный уровень опасности. Производители могут самостоятельно оценить свое оборудование на соответствие уровням SIL1 и SIL2. Для оценки на уровни SIL3 и SIL4 требуется независимый аудит.
IEC61508 служит базовым стандартом, на основе которого построены другие стандарты с более конкретизированными требованиями в зависимости от отраслевого назначения оборудования. Например, IEC26262 — стандарт для автомобильной промышленности, а IEC60601 предъявляет требования к электронному оборудованию, используемому в медицине.
Для «нашей» стиральной машины применим IEC60730. Этот стандарт охватывает как бытовую технику, так и централизованные системы контроля отопления и водонагревательные котлы, т.е. он описывает общее оборудование, которое работает безопасно, а если случаются неисправности, то это не приводит к трагическим последствиям. Стандарт рассматривает механические, электрические и электронные аспекты оборудования, включая электромагнитную совместимость устройств. Приложение H посвящено микроконтроллерам, на этой теме мы и сосредоточимся в дальнейшем.
IEC60730 определяет три класса электронных блоков управления, что в некотором смысле похоже на уровни SIL в стандарте IEC61508. В этой системе класс A отвечает за переключатели и термостаты и соответствует низкому уровню требований, а класс С (например, отопление) соответствует высокому уровню требований. Типичная бытовая электроника относится к классу В.

Библиотека самотестирования

Сертификационный аудит всегда оценивает безопасность всей системы, а не ее отдельных компонентов. Механизмы функциональной безопасности обычно объединяют несколько компонентов системы. Модули безопасности могут оказаться полезными для инженеров-конструкторов, т.к. они фокусируются только на одном компоненте, например, на микроконтроллере. Инженер может использовать этот строительный блок и включить его в общую систему.
Задача программной библиотеки самотестирования (STL) в соответствии со стандартом IEC60730 класса В
заключается в обнаружении любых ошибок или недостатков в МК. Как следует из названия, тестовая программа работает на МК, предназначенном для самотестирования. Однако обнаруженная ошибка не обрабатывается библиотекой. Система должна оценить результаты испытаний и адекватно реагировать на ошибки сценария.

Реализация

Теперь приступим к реализации такой библиотеки. Приложение Н стандарта IEC60730 содержит стандартный список моделей ошибок, которые охватывают все ключевые части МК: память, центральное процессорное устройство или схемы тактирования (см. табл. 1). Эти модели определяют типы потенциальных аппаратных сбоев или повреждений. Можно взять этот список в качестве основы для реализации библиотеки STL. При проверке отдельных компонентов программа тестирования должна обрабатывать каждый элемент в списке поочередно. На практике программа тестирования разделена, как правило, на компактные автономные функции, чтобы можно было использовать их в зависимости от конкретного приложения МК. К тому же этот набор функций можно разделить на две группы.

Таблица 1. IEC60730, приложение Н: список компонентов МК для тестирования

№

Компонент

Модель ошибки

Допустимость в однокристальном МК

1.1

Регистр ЦПУ

Зависание

ν

1.3

Программный счетчик ЦПУ

Зависание

ν

2

Обработка и реакция на прерывание

Нет или слишком частые прерывания

ν

3

Схема тактирования

Некорректная частота

ν

4.1

ПЗУ

Ошибки битов

ν

4.2

ОЗУ

Отказ питания

ν

4.3

Адресация

Зависание

Только когда используется внешняя память

5.1

Прохождение данных

Зависание

Только когда используется внешняя память

5.2

Прохождение адреса

Некорректный адрес

Только когда используется внешняя память

6.1

Внешние коммуникации — данные

Дистанция Хэмминга 3

Только с внешними коммуникациями, например, через SPI

6.2

Внешние коммуникации — адреса

Некорректный адрес

Только с внешними коммуникациями, например, через SPI

6.3

Внешние коммуникации — тайминг

Некорректный тайминг

Только с внешними коммуникациями, например, через SPI

7.1

Цифровой ввод/вывод

Условия отказа

ν

7.2.1

Аналого-цифровой преобразователь

Условия отказа

ν

7.2.2

Аналоговый мультиплексор

Неправильная адресация

ν

Функции из первой группы выполняются при загрузке системы, а вторая группа функций доступна как часть непрерывного цикла, например, в рамках процедуры обслуживания прерывания. Первая группа называется POST (самотестирование после включения питания или сброса), а вторая известна как BIST (самотестирование, включенное в рабочую программу). Степень безопасности, естественно, возрастает, если тесты повторяются так часто, насколько это возможно, пока система работает, а не просто тестируется при запуске. Тем не менее для некоторых компонентов реализация BIST предполагает повышение требований ко времени работы функций самотестирования. К тому же в работающей системе начальные состояния регистров и областей памяти должны быть восстановлены после процедуры тестирования. При этом есть вероятность сбоев в работе внешней обвязки при тестировании. Стандарт не определяет конкретных руководящих принципов для приложений класса В. Для большинства компонентов достаточно теста во время загрузки системы.
Если структура STL (см. рис. 1) организована по требованиям стандарта, то программный модуль будет доступен для каждого компонента МК, которые необходимо проверить. Поскольку задачи тестирования являются низкоуровневыми и критичными ко времени выполнения, некоторые части кода программируются на Ассемблере, например, код для тестирования центрального процессорного устройства (ЦПУ) и процедуры проверки памяти на доступ к регистрам.

 

Рис. 1. Структура библиотеки самотестирования, соответствующая IEC60730, класс В

На рисунке 2 представлена схема тестирования регистров ЦПУ. Процедура выполняется во время загрузки системы. IEC60730 утверждает, что регистры ЦПУ должны быть проверены на константные ошибки, при которых в регистре остается фиксированное значение логического 0 или 1. Запись с последующим чтением регистров в шахматном порядке (пишем 0 и 1 последовательно) является одним из способов выявления таких ошибок. Выполнение этого тестового кода одновременно проверяет правильность данных на шине инструкций, когда шахматные данные проходят по шине из flash-памяти к регистрам ЦПУ.
Проверить правильность работы программного счетчика несколько сложнее. Для этого необходимо использовать несколько коротких подпрограмм, хранящихся во flash-памяти. Их начальные адреса выбраны так, чтобы гарантировать, что каждый бит программного счетчика равен 0, по крайней мере для одного начального адреса, и 1 — для другого адреса. Эта техника позволяет обнаружить константные ошибки для программного счетчика и шины адреса инструкций.

 

Рис. 2. Блок-схема тестирования регистров ЦПУ

 

Аппаратные функции

Как уже упоминалось, самотестирование потребляет процессорное время, что в некоторых приложениях весьма критично и не может использоваться. Чтобы уменьшить нагрузку на процессор существуют аппаратные периферийные устройства, которые работают на повышение функциональной безопасности. Они, конечно же, тоже используются библиотекой IEC60730 (класс В), описанной ранее.
В качестве примера можно привести расчет контрольной суммы для проверки области памяти, который использует аппаратный модуль циклического контроля избыточности (CRC). Без всякого участия со стороны процессора модуль вычисляет контрольную сумму по стандартам CCITT CRC16 или IEEE-802.3 CRC32. Модуль использует данные из памяти через канал прямого доступа (DMA), при этом обмен данными происходит по специальной шине для периферийных устройств без загрузки шины процессора. Другие функции безопасности явно зависят от поддержки аппаратных средств.
Предоставление возможностей мониторинга тактовых сигналов зависит от наличия встроенного независимого RC-генератора и аппаратного монитора тактовых сигналов. Совместно эти два компонента способны обнаруживать различные частотные аномалии в основных тактовых генераторах МК вплоть до полного отсутствия сигнала. Система считает импульсы внутреннего RC-генератора и сравнивает их с определенным числом импульсов контролируемого основного генератора. В случае возникновения ошибки сценария счетчик импульсов отклоняется от ожидаемого значения. Даже если основной тактовый генератор выходит из строя, МК может продолжить работу от внутреннего тактового RC-генератора, чтобы иметь возможность перевести устройство в безопасное состояние.
Аппаратная функция аварийной остановки предназначена исключительно для систем управления электродвигателями. Если соответствующий вход МК активирован, ножки выхода ШИМ перейдут в безопасное состояние, предопределенное пользователем, например, такое как логический 0 или состояние высокого сопротивления. Силовой драйвер электродвигателей также автоматически отключается.
Встроенные функции безопасности:
– аппаратный модуль подсчета контрольных сумм (CRC);
– детектор пониженного напряжения питания — двухступенчатое обнаружение провалов питания с генерированием прерываний и сброса;
– сторожевой таймер обнаруживает зависания и повреждения ЦПУ и автоматически запускается при включении питания и сбросе (первое переполнение — прерывание, второе — сброс);
– сброс при включении питания останавливает или удерживает МК в состоянии сброса, пока напряжение питания не вернется в допустимый диапазон;
– коррекция ошибок кода flash (ECC) обнаруживает и автоматически исправляет любые ошибки flash-памяти;
– блок защиты памяти контролирует доступ к памяти пользователя и предотвращает попытки несанкционированного доступа;
– вход аварийной остановки — входной сигнал на этом выводе очень быстро отключает силовой драйвер электродвигателей и предотвращает его порчу;
– предварительное чтение состояния выводов позволяет выявить внешние короткие замыкания ножек и протестировать внешние подключения;
– монитор тактовых сигналов позволяет контролировать исправность тактовых генераторов с автоматическим переключением на один из исправно работающих;
– встроенный RC-генератор — высокоточный источник синхросигнала, который можно использовать в качестве резервного генератора.

Итоги и перспективы

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

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *