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

0x0 go

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

 

 

Reset_Handler 에서 멈춤 !

> Reset 걸림

 

>

HW reset 외에 또 reset 이 있나? > 없음

>

SW 적으로 PC의 0x0 에 우연히 들어가게 되어 발생함

>

Reset Vector 가 High Vector 가아닌 Low Vector에 걸림 ( PC : 0 )

 

>>

stack 을 깨먹는 드러운 상황이 아니고서는 LR을 뒤져보는것이 매우 효율적

 

 

R14 : 0x00EDCF3B   

 > 최하위 bit 1 :  

     1 : thumb mode 로 복귀

     0;  ARM mode로 복귀

// CPSR 이 하위 bit 5 가 thumb/ ARM 현재 상태 나타내는 구별

 >> Thumb mode로 돌아오므로

     : 0xEDCF3A ( 0xEDCF3B -1 ) 로 돌아올 준비를 함

 

0xEDCF38 |               blx   r0 

0xEDCF3A |                 b    ~~~

 

> R14에 다가 0xEDCF3B를 넣어두고  ( 1을 미리 더함 ) branch   (blx)

 

memset ((void *)&functios.addressf, 0x0, 60);

>>>

 

functios.addressf() 의 함수로 branch 하려고함  

   > functios.addressf() 의 주소를 PC에 넣었음 > 0x0 번지로 branch 함

   > 0x0 으로 가버려서 Reset Abort 발생!

 

 

 

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

Excetption , JTAG, ICD (완)  (0) 2025.01.20
watch dog Reset in ISR  (0) 2025.01.19
Abort is ISR - IRQ mode 에서의 Abort  (0) 2025.01.19
Stack corruption  (0) 2025.01.19
Data Abort  (0) 2025.01.18