Skip to content

scarletshroud/reliability_lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

108 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reliability Library (reliability_lib)

Описание

reliability_lib — это модульная библиотека на языке C для встраивания в системы с повышенными требованиями к надежности. Библиотека реализует различные механизмы обнаружения, локализации и обработки ошибок, включая поддержку контрольных сумм, дублирования вычислений, N-версионного программирования, блоков восстановления и других.

Особенности

  • Поддержка платформ с ограниченными ресурсами (в т.ч. микроконтроллеры)
  • Явная модульность и масштабируемость
  • Механизмы охватывают все этапы обработки ошибок: от обнаружения до восстановления

Поддерживаемые механизмы

Механизм Назначение
Встроенные утверждения Проверка инвариантов и предусловий
Контроль потока выполнения (CFC) Детектирование сбоев потока инструкций
Контрольные суммы и коды (CRC, Хэмминг) Обнаружение и коррекция ошибок в данных
Мониторинг поведения (сторожевой таймер) Контроль активности и таймаутов
Проверка временных ограничений (deadline monitor) Контроль времени выполнения операций
Валидация входных данных Диагностика некорректных параметров
Проверка свойств структур данных Контроль инвариантов и логической целостности
Дублирование вычислений Защита от транзиентных сбоев
N-версионное программирование Защита за счёт программного разнообразия
Recovery Block и CRB Последовательное восстановление с альтернативами
Парные процессы Active/Passive и Active/Active схемы
Обработка исключений Централизованное реагирование на ошибки
Контрольные точки и перезапуск Сохранение состояния и возврат к нему
Разнообразие данных Обработка данных в разных представлениях

Пример использования: Контроль потока выполнения

#include "cfc_monitor.h"

void example_fsm() {
    cfc_monitor_t monitor;
    cfc_monitor_init(&monitor);

    CFC_ENTER(&monitor, 0x10);
    if (!CFC_CHECK(&monitor, 0x10)) return;

    CFC_ENTER(&monitor, 0x20);
    if (!CFC_CHECK(&monitor, 0x20)) return;

    CFC_ENTER(&monitor, 0x30);
    if (!CFC_CHECK(&monitor, 0x30)) return;

    CFC_ENTER(&monitor, 0x40);
    if (!CFC_CHECK(&monitor, 0x40)) return;
}

Установка

git clone https://github.com/scarletshroud/reliability_lib.git
cd reliability_lib
git checkout mk32_platform

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors