MyLibs 1.0
Расширенные библиотеки для STM32
Loading...
Searching...
No Matches
Hardfault trace defines

Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash. More...

Collaboration diagram for Hardfault trace defines:

Macros

#define HF_CheckRecovered(...)
#define HF_HandleFault(...)

Detailed Description

Модуль трассировки HardFault с возможностью сохранения RTT буфера во Flash.

Этот модуль позволяет сохранять контекст процессора и последние символы RTT буфера при возникновении HardFault.

Механизм работы:

  • При срабатывании HardFault вызывается HF_HandleFault(), который:
    1. Получает указатель на стек, где произошёл HardFault (MSP или PSP).
    2. Выводит значения регистров R0-R3, R12, LR, PC, PSR и системных регистров SCB.
    3. Формирует строку с регистрами и копирует последние символы RTT буфера.
    4. Сохраняет данные во Flash с базовым тегом HF_RTT_TAG_BASE.
  • Для восстановления последнего HardFault используется HF_CheckRecovered(), который:
    1. Читает запись во Flash по базовому тегу.
    2. Выводит сохранённый RTT буфер и контекст регистров.
    3. Опционально стирает Flash после восстановления.

Параметры:

  • HARDFAULT_SERIAL_TRACE - Включить обработку и serial трассировку Hardfault Если отключена то вставляются заглушки, никак не влияющие на параметры и остальную программу
  • HF_RTT_TAG_BASE - Базовый тег RTT Flash для HardFault
  • HF_RTT_TAIL_SIZE - Размер буфера RTT, который сохранится при Hardfault
  • HF_STACK_DUMP_WORDS - Сколько слов стека будет проанализировано во время Hardfault
  • HF_FLASH_ADDR - Адрес FLASH куда положится RTT буфер
  • HF_RAM_END - Конец RAM памяти (чтобы во время анализа стека не выйти за пределы)
void Hardfault()
{
HF_HandleFault();
NVIC_SystemReset();
}
int main()
{
if(HF_CheckRecovered(0))
{
//set hardfault error
RTT_EraseFlash(); // erase rtt flash after message readed
}
}
__STATIC_FORCEINLINE int RTT_EraseFlash(void)
Стирание сектора Flash с RTT-буфером
Definition trace.h:387

Macro Definition Documentation

◆ HF_CheckRecovered

#define HF_CheckRecovered ( ...)
Value:
0

Definition at line 581 of file trace.h.

◆ HF_HandleFault

#define HF_HandleFault ( ...)

Definition at line 582 of file trace.h.