MyLibs 1.0 Расширенные библиотеки для STM32

Loading...
Searching...
No Matches
Hardfault trace defines
My Libs » Debug Tools » 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
}
}
RTT_EraseFlash
__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.