임베디드/임베디드 레시피

Abort is ISR - IRQ mode 에서의 Abort

twoweeks-within 2025. 1. 19. 19:35

 

 

Abort 발생

 

SPSR : 8000003F :  8000 0000 0000 0000 0000 0000 0011 1111 

   > 11111 (하위 5bit ) : System mode 

                                 > ISR을 실행하는 mode  

  > R14 를 확인해보자 (Abort의 R14는 믿을만함 ) 

                                // 넘어간 후에발생한 상황이므로

 

> R14 : 0x476A

 

 

clock_tick_isr() 이라는 함수에서 ABORT 발생

   > clock tick interrupt 가 발생할때마다 불리는 ISR 이 아닐까?

 

 

typedef struct

{

  boolean (* HWIO_OP)(void);

  void (* HWIO_init)(void);

} HWIO_FunctionsType;

 

HWIO_FunctionsType functionsMarcel = {clock_io, clock_tick_isr};

 

memset ((void *)(finctiosMarcel.HWIO_init),0xABCD,10);

 

> system init 하는 부분에서 clock_tick_isr을 0xABAB 로 채워서 init 해버리는 이상한 bug 발견!

 

 

'임베디드 > 임베디드 레시피' 카테고리의 다른 글

watch dog Reset in ISR  (0) 2025.01.19
0x0 go  (0) 2025.01.19
Stack corruption  (0) 2025.01.19
Data Abort  (0) 2025.01.18
Task Lock > Watch Reset, 메모리덤프 보는법 ( stm32 cubeide)  (0) 2025.01.18