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

Art of Debugging

twoweeks-within 2025. 1. 17. 14:28

 

ARM : 이상감지 > Exception 처리

                           : Recovery (Abort 발생) or Exception 발생하지 못하도록 알려줌

 

보통 Embedded)

 : Abory (중단) 발생!

recovery 대신 HW적인 reset 함수로 branch

  : Target 동작중 reset > Abort Hanler에 Debugger로 break !

 

ex) HW적으로 High Exception Vector를 사용하는 system 

     Power on > 0xFFFF0000 영역의 Reset Handler 에 PC가 자리잡음

// 0xFFFF0000 : High EVT , bootloader 가 있음 

// NOR Flash

 

Bootloader 

1. Power on > Reset Vector 로 PC set

2. CLK의 주파수, PLL 초기화

3. SDRAM 메모리 제어기 초기화

4. SDRAM : Exception view 에 맞게 binary 복사

5. SVC, USR, ABT , IRQ, FIQ, Undef 등 stack 초기화

6. BSS 영역 초기화

7. Exception Vector : LOW Vector 로 설정 , 0x0 Reset_Handler로 Branch

 

Excption Vector 를 High / Low 를 MMU setting을 통해 Regi  setting 

// V 로 표시 

 V 0xFFFF0000 : High > Reset_handler           (High Vector )

 V 0x00000000 : Low > 똑같이 Rset_handler   ( Low Vector )

 

ISR을 system mode에서 실행 // stack 시작 주소 : 0x00FEE730

   > Interrupt Nesting , Privileged mode 바꾸기 가능

 

보통 User mode 에서 Application 사용

     > 복잡 >  SVC mode에서 User Application / Kernel 모두 실행

 

 

 

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

Interrupt Lock > Watch dog Reset  (0) 2025.01.17
JTAG interface  (0) 2025.01.17
MMU : Memory Management Unit ( 다시보기)  (0) 2025.01.16
Cache, Cash  (0) 2025.01.16
PLL , M/N:D  (0) 2025.01.15