| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #ifndef PANIC_H
- #define PANIC_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #define PANIC_RSN_NONE 0
- #define PANIC_RSN_DEBUGEXCEPTION 1
- #define PANIC_RSN_DOUBLEEXCEPTION 2
- #define PANIC_RSN_KERNELEXCEPTION 3
- #define PANIC_RSN_COPROCEXCEPTION 4
- #define PANIC_RSN_INTWDT_CPU0 5
- #define PANIC_RSN_INTWDT_CPU1 6
- #define PANIC_RSN_CACHEERR 7
- #define PANIC_RSN_MAX 7
- #ifndef __ASSEMBLER__
- #include "esp_err.h"
- /**
- * @brief If an OCD is connected over JTAG. set breakpoint 0 to the given function
- * address. Do nothing otherwise.
- * @param data Pointer to the target breakpoint position
- */
- void esp_set_breakpoint_if_jtag(void *fn);
- #define ESP_WATCHPOINT_LOAD 0x40000000
- #define ESP_WATCHPOINT_STORE 0x80000000
- #define ESP_WATCHPOINT_ACCESS 0xC0000000
- /**
- * @brief Set a watchpoint to break/panic when a certain memory range is accessed.
- *
- * @param no Watchpoint number. On the ESP32, this can be 0 or 1.
- * @param adr Base address to watch
- * @param size Size of the region, starting at the base address, to watch. Must
- * be one of 2^n, with n in [0..6].
- * @param flags One of ESP_WATCHPOINT_* flags
- *
- * @return ESP_ERR_INVALID_ARG on invalid arg, ESP_OK otherwise
- *
- * @warning The ESP32 watchpoint hardware watches a region of bytes by effectively
- * masking away the lower n bits for a region with size 2^n. If adr does
- * not have zero for these lower n bits, you may not be watching the
- * region you intended.
- */
- esp_err_t esp_set_watchpoint(int no, void *adr, int size, int flags);
- /**
- * @brief Clear a watchpoint
- *
- * @param no Watchpoint to clear
- *
- */
- void esp_clear_watchpoint(int no);
- /**
- * @brief Stops panic WDT
- */
- void esp_panic_wdt_stop(void);
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|