GPIO 인터럽트

일부 GPIO(범용 I/O) 컨트롤러 디바이스는 인터럽트 요청 입력으로 작동하도록 GPIO 핀을 구성할 수 있습니다. 이러한 인터럽트 요청 입력은 GPIO 핀에 물리적으로 연결된 주변 장치에 의해 구동됩니다. 이러한 GPIO 컨트롤러에 대한 드라이버는 개별 GPIO 핀에서 인터럽트 요청을 활성화, 사용 안 함, 마스크 해제, 마스크 해제 및 지울 수 있습니다.

GPIO 인터럽트 지원은 선택 사항입니다. GPIO 프레임워크 확장(GpioClx)에는 GPIO 인터럽트를 지원하기 위해 GPIO 컨트롤러가 필요하지 않습니다.

섹션 내용

항목 Description

기본 및 보조 인터럽트

GPIO 인터럽트 처리는 기본적으로 2단계 프로세스입니다. GPIO 프레임워크 확장(GpioClx) ISR(인터럽트 서비스 루틴)을 실행하는 GPIO(범용 I/O) 컨트롤러의 인터럽트를 기본 인터럽트라고 합니다. 이 ISR은 인터럽트 GPIO 핀을 GSI(전역 시스템 인터럽트)에 매핑하고 이 GSI를 HAL(하드웨어 추상화 계층)에 전달합니다. HAL은 이 GSI를 통해 GPIO 핀에 논리적으로 연결된 두 번째 ISR을 실행하는 보조 인터럽트 를 생성합니다. 이 프로세스는 GPIO 드라이버 지원 개요의 다이어그램에 나와 있습니다.

GPIO 기반 인터럽트 리소스

GPIO(범용 I/O) 핀에 인터럽트 전송 주변 장치용 드라이버는 추상 Windows 인터럽트 리소스로 GPIO 인터럽트 를 획득합니다. KMDF(커널 모드 드라이버 프레임워크) 드라이버는 EvtDevicePrepareHardware 이벤트 콜백 함수를 통해 이러한 리소스를 받습니다.

수동 수준 ISR

Windows 8부터 KMDF(커널 모드 드라이버 프레임워크) 및 UMDF(사용자 모드 드라이버 프레임워크) 드라이버는 옵션으로 수동 수준에서 실행되도록 ISR(인터럽트 서비스 루틴)을 등록할 수 있습니다.

인터럽트 관련 콜백

옵션으로 GPIO(범용 I/O) 컨트롤러용 드라이버는 GPIO 인터럽트를 지원할 수 있습니다. GPIO 인터럽트 지원을 위해 GPIO 컨트롤러 드라이버는 이러한 인터럽트 관리를 위한 콜백 함수 집합을 구현합니다. 드라이버에는 GPIO 프레임워크 확장(GpioClx)의 클라이언트로 등록할 때 드라이버가 제공하는 등록 패킷에 이러한 콜백 함수에 대한 포인터가 포함됩니다.

GPIO 컨트롤러 드라이버에 대한 인터럽트 동기화

GPIO 컨트롤러 드라이버는 GPIO_CLX_AcquireInterruptLockGPIO_CLX_ReleaseInterruptLock 메서드를 호출하여 GPIO 프레임워크 확장(GpioClx)에 의해 내부적으로 구현되는 인터럽트 잠금을 획득하고 해제할 수 있습니다. IRQL = PASSIVE_LEVEL 실행되는 드라이버 코드는 이러한 메서드를 호출하여 GpioClx의 ISR(인터럽트 서비스 루틴)과 동기화할 수 있습니다. GpioClx는 GPIO 컨트롤러의 각 핀 뱅크에 별도의 인터럽트 잠금을 바칩니다.

공유 GPIO 인터럽트 사용 및 사용 안 함

경우에 따라 둘 이상의 주변 장치에서 인터럽트 요청 줄이 동일한 GPIO(물리적 범용 I/O) 핀에 연결할 수 있습니다. 공유 인터럽트 라인의 GPIO 핀은 일반적으로 수준 트리거 인터럽트용으로 구성됩니다.

GPIO 인터럽트 마스크

인터럽트 입력으로 구성된 GPIO(범용 I/O) 핀은 사용 및 사용 안 함 외에도 마스킹 및 마스크 해제할 수 있습니다.