ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
1433918 Топик полностью
pavel2000 (09.05.2024 17:27, просмотров: 128) ответил Mty1 на Коллеги, у меня вопрос по обработке ошибок в приборе на stm32f4. Есть DMA i2c UART ADC плюс обработка ошибок от внешних стробов. Как грамотно построить обработчик ошибок, чтобы отслеживать проблемы скажем с записью в eeprom, инициализацию DMA и UART итп. Плюс при штатной работе программы обрабатывать ошибки от внешних сигналов - нештатная работа управляемого оборудования. Возможно писать проблемы в небольшой лог в eeprom - пока думаю над этим. Не могу понять как это
Ковыряю дизасм от небольшой автомобильной прошивки. Там запись критичных значений в eeprom происходит с резервированием в три копии. При записи - проверяется корректность записи, при чтении - поиск и восстановление одиночного сбоя. Программа ведет постоянную проверку на наличие сбоев. Постоянно идет вычитывание "троек" из EEPROM, постоянно идет пересчет КС прошивки, постоянно идет тестирование RAM (гасим прерывания, проверяем корректность резервной области памяти путем 

записи-чтения 0x55/0xAA , затем копируем рабочую память опять же с чтением-проверкой, проверяем корректность основной памяти 0x55-0xAA, копирование рабочих значений обратно). Ну и всё увешано таймерами, которые измеряют длительности различных рабочих циклов. Бесконечные циклы (например ожидание готовности значения АЦП) ограничены, длительные циклы побиты на куски (например тот же пересчет КС прошивки). Ну и естественно проверка внешних состояний на запрещенные, измеряется ток потребления "моторчика" которым это ПО управляет. Для диагностики ошибочных состояний заведены счетчики числа срабатываний в EEPROM, они доступны через диагностический интерфейс (и похоже сделаны исключительно для этого).