KA(커널 인식) 및 nKA(비커널인식) 인터럽트가 있는 RTOS(실시간 운영체제)
커널 인식 및 비 커널 인식 인터럽트가 있는 RTOS
이 글은 RTOS 전문가 Jean J. Labrosse가 작성했습니다.
인터럽트는 주변 장치로 생성되며 주의가 필요한 이벤트입니다. 예를 들어 이더넷 패킷이 수신되면 인터럽트 장치는 CPU가 ISR(인터럽트 서비스 루틴)로 이동하게 합니다. 인터럽트가 태스크가 기다리고 있는 이벤트인 경우 ISR은 이벤트를 처리하는 데 필요한 대부분의 작업을 담당할 태스크에 신호를 보냅니다. 즉, 인터럽트가 이더넷 컨트롤러에서 패킷의 가용성을 나타내면 태스크는 ISR이 아니라 수신된 패킷을 처리합니다. 이러한 유형의 ISR을 KA(커널 인식) ISR이라고 합니다. 이는 ISR이 RTOS(일명 커널)에서 제공하는 서비스를 사용하여 이벤트에 대한 태스크를 신호하기 때문입니다. 그런 다음 RTOS는 ISR를 처리하는 태스크의 중요성에 따라 컨텍스트 스위치의 필요 여부를 결정합니다.
RTOS는 연결 목록과 같은 내부 데이터 구조를 조작할 때 이러한 작업이 원자적으로 처리되도록 인터럽트를 비활성화합니다. 이는 ISR이 주변 장치로부터 인터럽트 신호를 수신하는 즉시 트리거되지 않는다는 것을 의미합니다. 이러한 지연을 인터럽트 지연이라고 합니다. 태스크가 장치를 서비스하는 데 걸리는 시간을 인터럽트 응답이라고 하며, 장치를 처리하는 태스크의 우선 순위를 기반으로 합니다. RTOS가 항상 우선 순위가 높은 태스크를 선호하기 때문에 이러한 지연은 서비스 태스크가 우선 순위가 낮은 태스크인 경우 허용될 수 있습니다.
PWM(펄스 폭 변조) 레지스터를 새 값으로 다시 로드하는 것과 같이 인터럽트에 서비스가 거의 필요하지 않은 경우 ISR은 RTOS를 수반하지 않고도 작업을 간단히 수행할 수 있습니다. 이러한 유형의 인터럽트는 항상 KA 인터럽트보다 우선 순위가 높으며 nKA(비 커널 인식)라고 불립니다. 이러한 인터럽트는 RTOS에 의해 비활성화되지 않으므로 응답성이 높습니다.
nKA와 KA ISR의 차이점은 아래와 같습니다. RTOS가 nKA 인터럽트를 비활성화할 수 없기 때문에 nKA ISR에 대한 지연은 매우 짧습니다(일반적으로 여러 개의 CPU 클럭 사이클). KA ISR에 대한 지연은 인터럽트가 비활성화된 시간과 CPU가 nKA 인터럽트 또는 기타 더 높은 우선순위 인터럽트에 응답하는지 여부에 따라 다릅니다.
그렇다면 ISR이 KA인지 nKA인지 어떻게 결정할까요? 아마도 그건 시스템 디자이너가 결정할 일입니다. 대부분의 CPU에서는 인터럽트 장치에 우선 순위를 할당할 수 있습니다. 예를 들어, 많은 Cortex-M MCU(ARMv7M)는 NVIC(Nested Vectored Interrupt Controller)에서 3비트를 사용하여 인터럽트 장치의 우선 순위 수준을 정의합니다. 즉, 최고 0에서 최저 7까지 8개의 우선 순위 레벨 중에서 선택할 수 있습니다.
RTOS가 코드의 중요한 부분에 액세스하기 위해 인터럽트를 (일시적으로) 무시해야 하기 때문에 Cortex-M의 BASEPRI 레지스터를 변경하여 모든 우선 순위에서 인터럽트를 비활성화할 수 있습니다. 이를 통해 nKA와 KA 인터럽트의 경계를 쉽게 결정할 수 있습니다. 예를 들어 아래 표는 nKA/KA 경계를 3으로 설정하는 방법을 보여줍니다. 따라서 중요 부분에 액세스할 때 RTOS는 BASEPRI를 3으로 설정하여 인터럽트 우선 순위가 3, 4, 5, 6 또는 7로 설정된 장치의 인터럽트를 방지합니다.
이렇게 설정하면 레벨 0, 1 및 2에서 인터럽트 하도록 구성된 장치가 RTOS를 인터럽트 할 수 있습니다! 다시 말해, 이러한 ISR은 정의상 비커널 인식이기 때문에 RTOS API 호출을 해서는 안 됩니다.
KA/nKA 개념은 모든 RTOS에서 지원되지는 않습니다. 따라서 사용 중인 RTOS의 설명서를 참조하거나 상용 제품인 경우 제조업체에 문의하십시오.
저자 소개
본 기사는 RTOS 개발 애플리케이션에 관한 시리즈의 일부입니다.
Jean Labrose는 높은 인지도를 가진 uC/OS-II와 uC/OS-III 커널의 저자이자 Micrium의 설립자로, 임베디드 소프트웨어의 uC/라인의 발전에 적극적으로 관여하고 있습니다.
Jean은 풍부한 경험과 임베디드 시스템 시장에 대한 깊은 이해를 바탕으로 Weston Embedded Solutions의 수석 조언자 및 컨설턴트로 재직하고 있으며, 현재 RTOS 제품의 향후 보다 발전된 제안을 마련하는데 기여하고 있습니다. Weston Embedded Solutions는 Micrium 코드베이스에서 파생된 매우 안정적인 Cesium RTOS 제품군의 지원 및 개발을 전문으로 합니다.
[email protected].