蓝牙工程监控
This commit is contained in:
parent
3cdccc4d63
commit
f119dc7d0d
|
@ -263,9 +263,41 @@ void WWDG_ClearFlag(void)
|
||||||
*/
|
*/
|
||||||
__INTERRUPT
|
__INTERRUPT
|
||||||
__HIGH_CODE
|
__HIGH_CODE
|
||||||
__attribute__((weak))
|
__attribute__((weak)) void HardFault_Handler(void)
|
||||||
void HardFault_Handler(void)
|
|
||||||
{
|
{
|
||||||
|
// https://www.cnblogs.com/gscw/p/18159920
|
||||||
|
// 监控函数和 PC 指针可以同时使用。监控函数需要在蓝牙工程中使用才有意义,如果打印值为空,检查是否使用蓝牙。
|
||||||
|
struct __MEMORY_CTL
|
||||||
|
{
|
||||||
|
struct __MEMORY_CTL *pNext;
|
||||||
|
uint16_t len;
|
||||||
|
uint16_t used;
|
||||||
|
};
|
||||||
|
typedef struct __MEMORY_CTL MemoryCtl;
|
||||||
|
|
||||||
|
extern MemoryCtl *MemCtlStart;
|
||||||
|
extern MemoryCtl *MemCtlEnd;
|
||||||
|
MemoryCtl *MemHead;
|
||||||
|
MemHead = MemCtlStart;
|
||||||
|
while (MemHead != MemCtlEnd)
|
||||||
|
{
|
||||||
|
printf("|%8x,%8x,%8d.....\n", MemHead->used, (uint32_t)MemHead,
|
||||||
|
(uint32_t)(MemHead->pNext) - (uint32_t)MemHead - sizeof(struct __MEMORY_CTL));
|
||||||
|
MemHead = MemHead->pNext;
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
uint32_t v_mepc, v_mcause, v_mtval;
|
||||||
|
printf("hardfault\n");
|
||||||
|
|
||||||
|
v_mepc = __get_MEPC();
|
||||||
|
v_mcause = __get_MCAUSE();
|
||||||
|
v_mtval = __get_MTVAL();
|
||||||
|
|
||||||
|
printf("mepc:%08x\n", v_mepc);
|
||||||
|
printf("mcause:%08x\n", v_mcause);
|
||||||
|
printf("mtval:%08x\n", v_mtval);
|
||||||
|
#if 0
|
||||||
FLASH_ROM_SW_RESET();
|
FLASH_ROM_SW_RESET();
|
||||||
sys_safe_access_enable();
|
sys_safe_access_enable();
|
||||||
R16_INT32K_TUNE = 0xFFFF;
|
R16_INT32K_TUNE = 0xFFFF;
|
||||||
|
@ -273,6 +305,7 @@ void HardFault_Handler(void)
|
||||||
sys_safe_access_enable();
|
sys_safe_access_enable();
|
||||||
R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
|
R8_RST_WDOG_CTRL |= RB_SOFTWARE_RESET;
|
||||||
sys_safe_access_disable();
|
sys_safe_access_disable();
|
||||||
|
#endif
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,8 +405,7 @@ int _write(int fd, char *buf, int size)
|
||||||
*
|
*
|
||||||
* @return size: Data length
|
* @return size: Data length
|
||||||
*/
|
*/
|
||||||
__attribute__((used))
|
__attribute__((used)) void *_sbrk(ptrdiff_t incr)
|
||||||
void *_sbrk(ptrdiff_t incr)
|
|
||||||
{
|
{
|
||||||
extern char _end[];
|
extern char _end[];
|
||||||
extern char _heap_end[];
|
extern char _heap_end[];
|
||||||
|
@ -385,5 +417,3 @@ void *_sbrk(ptrdiff_t incr)
|
||||||
curbrk += incr;
|
curbrk += incr;
|
||||||
return curbrk - incr;
|
return curbrk - incr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue