29 #define bkpt() __asm volatile("BKPT #0\n") 51 struct port_extctx ctx;
52 memcpy(&ctx, (
void*)__get_PSP(),
sizeof(
struct port_extctx));
58 uint32_t faultAddress = SCB->BFAR;
62 bool isFaultPrecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 1) ? true :
false);
63 bool isFaultImprecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 2) ? true :
false);
64 bool isFaultOnUnstacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 3) ? true :
false);
65 bool isFaultOnStacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 4) ? true :
false);
66 bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 7) ? true :
false);
68 (void)isFaultImprecise;
69 (void)isFaultOnUnstacking;
70 (void)isFaultOnStacking;
71 (void)isFaultAddressValid;
82 struct port_extctx ctx;
83 memcpy(&ctx, (
void*)__get_PSP(),
sizeof(
struct port_extctx));
90 bool isUndefinedInstructionFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 0) ? true :
false);
91 bool isEPSRUsageFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 1) ? true :
false);
92 bool isInvalidPCFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 2) ? true :
false);
93 bool isNoCoprocessorFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 3) ? true :
false);
94 bool isUnalignedAccessFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 8) ? true :
false);
95 bool isDivideByZeroFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 9) ? true :
false);
96 (void)isUndefinedInstructionFault;
97 (void)isEPSRUsageFault;
98 (void)isInvalidPCFault;
99 (void)isNoCoprocessorFault;
100 (void)isUnalignedAccessFault;
101 (void)isDivideByZeroFault;
110 struct port_extctx ctx;
111 memcpy(&ctx, (
void*)__get_PSP(),
sizeof(
struct port_extctx));
117 uint32_t faultAddress = SCB->MMFAR;
121 bool isInstructionAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 0) ? true :
false);
122 bool isDataAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 1) ? true :
false);
123 bool isExceptionUnstackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 3) ? true :
false);
124 bool isExceptionStackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 4) ? true :
false);
125 bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 7) ? true :
false);
126 (void)isInstructionAccessViolation;
127 (void)isDataAccessViolation;
128 (void)isExceptionUnstackingFault;
129 (void)isExceptionStackingFault;
130 (void)isFaultAddressValid;
140 void panic(
const char *errormsg, ...)
144 va_start(ap, errormsg);
void UsageFault_Handler(void)
void __cxa_pure_virtual(void)
void BusFault_Handler(void) __attribute__((alias("HardFault_Handler")))
void MemManage_Handler(void)
int vprintf(const char *fmt, va_list arg)
void HardFault_Handler(void)
void init()
Generic board initialization function.
virtual void delay_microseconds(uint16_t us)=0
void panic(const char *errormsg,...) FMT_PRINTF(1
AP_HAL::Scheduler * scheduler