Tricore의 인터럽트 시스템은 생각보다 매우 직관적이고, 구성의 자유도가 매우 높다. 우선 전반적인 동작 설명은 다음과 같다. TC3xx 마이크로컨트롤러의 인터럽트 시스템은 외부 또는 내부 이벤트 발생 시 기존에 수행하던 Task를 중지하고, 시스템이 즉각적으로 대응하고 작업을 수행할 수 있도록 하는 메커니즘이다. 인터럽트 이벤트 발생 시, 해당 이벤트와 연결된 서비스 요청 노드(SRN)가 트리거되고, 인터럽트 제어 유닛(ICU)으로 인터럽트 요청을 전달한니다. ICU는 여러 SRN의 우선순위를 비교하여 가장 높은 우선순위를 가진 SRN을 선택(중재)하고, 선택된 SRN의 정보를 CPU 또는 DMA와 같은 서비스 제공자에게 전송합니다. Service Provider는 인터럽트 요청을 처리하고 Acknowledge 신호를 ICU로 보내 SRN을 해제한다. 이 과정에서 오류 검사 코드(ECC)를 사용하여 정보의 무결성을 검사하고, 오류 발생 시 Safety Management Unit(SMU)에 보고하여 시스템 안정성을 보장한다.

TC3xx 마이크로컨트롤러에서 인터럽트는 외부 장치, 소프트웨어 이벤트, 또는 내부 이벤트에 의해 발생하며, 정해진 단계를 거쳐 처리된다. 인터럽트의 Trigger부터 수행까지 각 단계를 세부적으로 나누어서 다음과 같이 설명해보도록 한다. IR모듈 자체가 워낙 간단하지만 Powerful하게 구성되어있어서 아래의 내용으로 전체적인 Overview를 하고, 이어서 다음장에서는 바로 STM의 Match Event를 시점으로 100usec ISR 주기로 동작하는 time 인터럽트를 만들어 볼 수 있도록 한다.
1. 인터럽트 트리거: 외부 장치, 소프트웨어, 또는 내부 이벤트에 의해 인터럽트 요청 신호가 발생한다. 이 신호는 해당 이벤트와 연결된 서비스 요청 노드(SRN)를 트리거한다. 각 SRN은 고유한 인덱스 번호를 가지며, 서비스 요청 제어 레지스터(SRC)를 통해 인터럽트 활성화/비활성화, 우선순위, 대상 서비스 제공자 등의 정보를 설정할 수 있다.
2. 인터럽트 요청 전달 및 중재: 트리거된 SRN은 인터럽트 요청을 인터럽트 제어 유닛(ICU)로 전달합니다. TC3xx에는 각 CPU 및 DMA 모듈에 대해 전용 ICU가 있으며, 각 ICU는 연결된 SRN으로부터 전달된 인터럽트 요청을 중재합니다. 중재는 여러 SRN 중 가장 높은 우선순위(SRC.SRPN)를 가진 SRN을 선택하는 과정입니다. 이 과정은 일반적으로 3~4개의 SPB(System Peripheral Bus) 클럭 사이클이 소요됩니다.
3. 서비스 제공자에게 인터럽트 정보 전송: ICU는 중재를 통해 선택된 SRN의 정보(우선순위(SRPN), ECC, SRN 인덱스)를 서비스 제공자(CPU 또는 DMA)에게 전송합니다.
4. 서비스 제공자의 인터럽트 수락 및 확인: 서비스 제공자는 ICU로부터 전송된 정보를 확인하고, 해당 서비스 요청을 처리할 준비가 되면 Enter 신호를 ICU로 전송합니다. Enter 신호는 서비스 제공자가 해당 인터럽트를 처리할 준비가 되었음을 나타냅니다.
5. 인터럽트 서비스 루틴 (ISR) 실행: 서비스 제공자는 인터럽트 서비스 루틴(ISR)을 실행하여 인터럽트 요청을 처리합니다. ISR은 해당 인터럽트를 처리하기 위해 작성된 특정 코드 블록입니다.
6. 서비스 제공자의 인터럽트 처리 완료 및 확인: 서비스 제공자가 ISR 실행을 시작하면 Acknowledge 신호와 함께 처리된 SRN 정보를 ICU로 다시 전송합니다. Acknowledge 신호는 서비스 제공자가 인터럽트 처리를 완료했음을 나타냅니다.
7. SRN 해제 및 ECC 검사: ICU는 Acknowledge 신호를 받으면 해당 SRN을 해제하고, 동시에 전송된 정보의 ECC(Error Correction Code)를 검사합니다. ECC는 인터럽트 처리 과정에서 정보의 무결성을 검사하는 데 사용됩니다.
8. 오류 처리: 만약 ECC 검사 결과 오류가 감지되면 ICU는 오류 정보를 ECR(Error Capture Register)에 저장하고, SMU(Safety Management Unit)에 오류를 보고합니다. SMU는 시스템 안전을 관리하는 모듈로, 오류 발생 시 적절한 조치를 취합니다.