Перейти к содержанию

Журналирование и анализ сбоев

Журналирование — часть продукта, а не временное средство отладки. Хорошо спроектированная система журналирования ускоряет первичную отладку платы, диагностику в полевых условиях и расследование неисправностей на производстве.

Продумайте сбор журналов до первых полевых испытаний. После отказа устройства в полевых условиях можно будет получить только те данные, которые прошивка заранее настроена сохранять или выводить.

Минимальная настройка журналирования

Для каждой сборки прошивки фиксируйте:

  • Версию прошивки.
  • Ветку или commit SDK.
  • Название и ревизию платы.
  • Причину загрузки.
  • Версию разметки разделов.
  • Результаты инициализации основных подсистем.
  • Сообщения о сбое или вывод assert, если загрузка завершилась с ошибкой.

Порядок анализа сбоя

  1. Воспроизведите проблему на плате с проверенной базовой конфигурацией.
  2. Сохраните полный журнал загрузки, начиная со сброса.
  3. Сохраните точный бинарный файл прошивки и соответствующие файлы символов.
  4. Декодируйте вывод assert или дамп с помощью инструментов SiFli.
  5. Проверьте размеры стеков, владение памятью, буферы DMA и обслуживание кэша.
  6. Локализуйте проблему, взяв за основу наиболее подходящий пример из SDK.

Уровни журналирования

Таблица: уровни журналирования
Этап Рекомендуемый объём логирования
Первичный запуск платы Подробные журналы периферии и загрузки.
Разработка функций Отладочные журналы на уровне модулей, относящиеся к проверяемой функции.
Настройка энергопотребления Сведите логирование к минимуму: вывод журналов сам влияет на энергопотребление.
Кандидат на выпуск Предупреждения, ошибки, версия, причина загрузки и основные проверки состояния.
Сборка для полевой диагностики Целевые журналы для подсистемы, в которой предполагается неисправность.

Что должно быть в отчёте о сбое

  • Полный журнал от момента сброса до сбоя.
  • Точное обозначение бинарного файла прошивки.
  • Файлы символов или возможность воспроизвести сборку.
  • Указание, возникает ли сбой на неизменённом примере из SDK.
  • Перечень подключённой периферии и источник питания.
  • Указание, сохраняется ли сбой после полного стирания флеш-памяти и повторной прошивки.

Последнее обновление: