드라이버 gpio_keys 버튼 유형

드라이버 gpio_keys 버튼 유형

드라이버 gpio_keys에 대해 혼란스러워요. 드라이버는 두 가지 유형의 버튼을 구별합니다.

IRQ 버튼과 GPIO 드라이버 버튼만

누구든지 둘 사이의 차이점을 설명할 수 있나요?

답변1

면책조항: 최신 내용을 읽지 않았습니다.gpio_keys코드, 그냥 훑어봤습니다. 그러나 GPIO 키와 IRQ의 분리에 대한 좋은 설명이 있다고 생각합니다.

커널에는 IRQ 이벤트 테이블이 있으므로 알려진 IRQ에 다른 이벤트가 할당될 수 있습니다. 이벤트 목록(콜백, 실제 포인터)은 PIC(별도의 칩 또는 CPU에 통합됨)에 기록되고 특정 인터럽트가 발생하면 실행 컨텍스트가 이벤트 함수로 들어갑니다. 인터럽트 내에서 너무 많은 시간이 낭비되지 않도록 이러한 기능은 작아야 합니다.

그러나 여기서 정말 중요한 것은 (CPU가 일시적으로 인터럽트를 무시하도록 지시받지 않는 한) 커널이 모든 인터럽트에 응답한다는 것입니다.

반응형 애플리케이션의 경우 인터럽트를 생성할 수 있도록 GPIO 핀에 연결된 장치(예: IRQ)가 필요합니다. 그러나 일부 애플리케이션에서는 버튼을 클릭할 때마다 또는 GPIO에 연결된 핀의 상태가 변경될 때마다 신경 쓰지 않을 수도 있습니다. 예를 들어 0.5초마다 측정하려는 센서가 있습니다. 센서가 "눌려졌을" 때 커널에 알리는 것을 원하지 않고, 사용자 공간 애플리케이션이 매 0.5초마다 커널을 찌르면서 센서의 현재 상태를 알려주기를 원합니다. 버튼처럼 보이는 인터페이스를 노출하는 센서를 상상하는 것은 어렵지 않으며 두 가지 상태(예: 임계값이 있는 어두움/밝음)만 있는 거의 모든 센서가 버튼처럼 보일 수 있습니다.

관련 정보