Есть ли какой-нибудь стандарт для поддержки процессора Lock-step?

Я хочу спросить о поддержке процессоров Lock-step (lockstep, lock-step) на уровне ПО.

Насколько я знаю, в AUTOSAR-ASILD процессор Lock-step используется для отказоустойчивой системы, как показано ниже.

  1. Входные сигналы для процессора копируются на другой процессор (его пара Lock-step).

  2. Сравниваются выходные сигналы двух разных процессоров.

  3. Если два выходных сигнала различны, генерируется ловушка.

Я думаю, что если есть сгенерированная ловушка, то эту сгенерированную ловушку нужно обрабатывать где-то на уровне ПО. Однако мне не удалось найти ни одного стандарта для этой обработки. Я прочитал информацию об обработке ошибок в разделах ПО, указанных в AUTOSAR, но не смог найти удовлетворительных ответов.

Итак, мой вопрос резюмируется ниже.

  • Где в AUTOSAR или другом стандарте находится правильное место, которое обрабатывает прерывание Lock-step (SW-C, RTE или BSW) ?.
  • Какое действие в AUTOSAR или другом стандарте обрабатывает прерывание Lock-step (RESET или ABORT)?

Спасибо.


person Wonseok Lee    schedule 11.02.2017    source источник


Ответы (1)


Здесь задействовано несколько концепций из разных источников.

Уровни ASIL определены стандартом ISO 26262. ASIL-D - это самый высокий уровень, и использование ЦП с блокировкой является одним из методов, обычно используемых для достижения соответствия ASIL-D для всей системы. Autosar не определяет, как вы достигнете ASIL-D или какого-либо уровня ASIL. С точки зрения Autosar, lockstep будет деталью реализации драйвера MCU, а Autosar не требует, чтобы MCU поддерживали lockstep. Как работает конкретная реализация lockstep (сравниваются ли выходные данные после каждой инструкции или нет и т. Д.), Зависит от оборудования, поэтому вы можете найти эти ответы в соответствующем руководстве по оборудованию.

Соответственно, некоторые решения должны принимать люди, работающие над системой, в том числе специалист по функциональной безопасности. Решение о том, что делать при отказе шага блокировки, является одним из таких решений - то, как вы реагируете на ловушку шага блокировки, должно быть определено на системном уровне. Это также не определяется Autosar, хотя наиболее разумным вариантом является перезагрузка микроконтроллера после сохранения некоторой информации об ошибке.

Что касается того, где в стеке Autosar должна обрабатываться ловушка, это также решение реализации, хотя разумным выбором будет, чтобы это произошло на уровне MCAL - в той степени, в которой разговор об уровнях даже имеет смысл здесь, поскольку ловушка будет запускаться в контексте прерывания / прерывания, а не в обычном контексте задачи ОС. Обычно ловушка имеет более высокий приоритет, чем любое прерывание, и также обычно невозможно отключить ловушки в программном обеспечении. Прерывание будет обрабатываться некоторой подпрограммой, которая регистрируется ОС так же, как она регистрирует ISR, поэтому вы захотите настроить обработчик прерывания в любом инструменте, который вы используете для настройки ОС. Ловушка lockstep может (опять же, в зависимости от оборудования) считаться невосстановимой ловушкой, что означает, что обработчик прерывания должен в конечном итоге инициировать сброс. Может быть разумным вызов стандартной функции ShutdownOS ().

person DUman    schedule 24.03.2017
comment
В основном согласен, но мне всегда интересно, почему почти каждый всегда сначала думает о сбросе как о методе восстановления функциональной безопасности. Первый - выбросить данные и попытаться восстановить старые данные, если это возможно. Восстановление после сброса может занять много времени, особенно для больших процессоров с несколькими ядрами и внешней флеш-памятью. Особенно сейчас, если речь идет о безопасности и безопасной загрузке. В это время ваш ECU не обменивается данными, даже сбой, поэтому другие ECU могут просто выйти из строя, особенно в ASIL-B, где резервирование не требуется. - person kesselhaus; 15.09.2018
comment
@kesselhaus Вы не сбрасываете, просто получив сообщение о недопустимой контрольной сумме, вы сбрасываете, когда обнаруживаете программную / аппаратную ошибку, которая не должна возникать в первую очередь. Тогда сброс - самый безопасный вариант, потому что он возвращает вас в известное, очень хорошо протестированное состояние, избегая любых побочных эффектов, которые мог бы вызвать сбой один из десяти миллионов. Таймауты получения других ЭБУ абсолютно не представляют собой проблему безопасности, любой ЭБУ должен иметь аварийное поведение, если он не получает некоторые данные, которые он ожидает. - person DUman; 15.09.2018