ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [임베디드] ARM 이 Interrupt를 처리하는 과정
    카테고리 없음 2025. 7. 6. 18:14

    개요

    본 내용은 Interrupt 상황 발생시 IRQ나 FIQ handler에 도달하기 까지의 MCU의 과정을 요약한다.
    이러한 과정을 ISR, Interrupt Service Routine 이라고 한다.

    배경 및 필요성

    임베디드 시스템에서는 외부 자극들 ( 버튼을 누르거나 , 발생한 데이터를 수집하거나 )을 처리하는데 매번 시스템이 감시를 하기가 어렵다. 그렇기 때문에, 이벤트가 발생했을때 CPU를 빌려 잠깐 처리 한다는 개념이 ISR 되는것이며, 그렇기에 ISR 발생시 MCU의 동작과정을 이해하는 것이 임베디드 시스템을 이해하는데 큰 도움이 될것이다.

    핵심내용

    Interrupt는 외부 장치(Uart /Sensor/USB 등) 또는 내부의 IP 가 발생시킨다.
    CPU내부의 Interrupt Controller - IP선 사이의 전기신호를 통해 Interrupt 신호를 인식하게 되며, IRQ든,FIQ든 CPU의 모드를 바꿔주게 됩니다.
    수락 조건을 NVIC에서 우선순위 Enble 여부를 확인하고, Context를 stack에 저장합니다.
    실행주소가 Exception Vector 중 IRQ,FIQ로 강제로 바뀌어지며, 마지막으로 Interrupt 가 끝나면 Kernel Level에서 나중에 다 못 끝낸 일을 처리할 수 있도록 하는데 DPC(Deferred Procedure Call), APC(Asynchronous Procedure Call)라고 부릅니다.
     

    요약

    인터럽트 발생 신호 인식 ( 버튼클릭 ) -> 인터럽트 수락조건확인 (NVIC 에서) -> 상태 저장( stack ) -> ISR 실행 (실행 handler 로 천이)  -> 원래 코드로 복귀( kernel level )

    참고자료

    Chat-GPT 및 임베디드 레시피 교재
     
    - NVIC  -> (Nested Vector Interrupt Controller) 인터럽트의 우선순위/활성화/비활성화/중첩처리에 관여
    -  Nesting -> 중첩 interrupt 를 나타낸다. 시스템마다 Nesting 응용이 다르다. 어떤 시스템은 disable해놓고 nesting을 허용을 안하는 system이 있고, 어떤 시스템은 몇번의 nesting은 허용해주겠다고한다.
    - IRQ 일반적인 인터럽트
    - FIQ 우선순위 인터럽트

    복습 퀴즈


    인터럽트의 과정에 대해서 요약해보기
    ㄴ 인터럽트 발생 외부 장치나 내부 IP를 통해
    ㄴ NVIC 확인
    ㄴ stack 에 상태 저장
    ㄴ IRQ FIQ handler 도달
    ㄴ kernel level에서 stack에 저장되어있던 상태 다시 처리


    IRQ와 FIQ 인터럽트 차이
    ㄴ IRQ 일반적인 인터럽트
    ㄴ FIQ 우선순위 인터럽트

    NVIC의 역할
    인터럽트 우선순위/ enable disable / 중첩처리에 관여

Designed by Tistory.