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 |