gpio 인터럽트로 작업하고 있습니다. "/ sys/class/gpio/gpio38/value"에 파일이 있습니다. 속성 값이 일 때마다 알림을 원합니다. 그렇다면 이것을 어떻게 사용자 영역에서 얻을 수 있을까요? 이미 정보를 수집 했으므로 select(), poll() 또는 epoll()을 사용할 수 있습니다. 그래서이 응용 프로그램에 맞는 무엇입니까? 또는/proc/irq 또는 다른 것을 사용할 수 있는지 제안 해주십시오. 감사합니다 :) 내가 도움이 될 수 있습니다 뭔가 here을 발견select(), poll() 또는 epoll()? sysfs 속성
답변
:
GPIO 신호/SYS/클래스/GPIO/gpio42/(GPIO 번호 42) 같은 경로가 다음과 같은 읽기가/쓰기 속성 :
"value"... 0 (낮음) 또는 1 (높음)으로 읽습니다. GPIO 이 출력으로 구성된 경우이 값을 쓸 수 있습니다. 0이 아닌 값은 모두 high로 처리됩니다. 핀이 인터럽트 인터럽트 발생으로 구성이 인터럽트를 발생 시키도록 구성되어있는 경우 ("가장자리"의 설명 참조) 할 수있는 경우
하면 폴링 할 수있다 (2) 파일 및 폴 (2)는 인터럽트가 트리거 될 때마다 리턴합니다. poll (2)를 사용하는 경우 POLLPRI 및 POLLERR 이벤트를 설정하십시오. select (2)를 사용하는 경우 exceptfds에 파일 설명자를 설정하십시오. poll (2)가 sysfs 파일의 시작 부분에 lseek (2)를 반환하고 새 값을 읽거나 파일을 닫은 후 을 다시 열어 값을 읽습니다.
"gpio42"에 대한 것이지만 귀하의 사례에 적용될 수 있습니다. 그렇지 않으면 내 대답에 의견을 말하십시오.
그들 중 하나를 사용할 수 있습니다. 여기서 중요한 점은 GPIO 라인의 값에 대한 sysfs 파일을 열어서 (예 : /sys/class/gpio/gpio42/value
) 차단하려고 할 때입니다.
라인 상태의 변경 사항은 쓰기가 아닌 예외 조건으로 신호 처리됩니다 (직관적 일 수 있음)
선택의 경우: 토니 - 더 - 사자 @
fd_set exceptfds;
int res;
FD_ZERO(&exceptfds);
FD_SET(gpioFileDesc, &exceptfds);
res = select(gpioFileDesc+1,
NULL, // readfds - not needed
NULL, // writefds - not needed
&exceptfds,
NULL); // timeout (never)
if (res > 0 && FD_ISSET(gpioFileDesc, &exceptfds))
{
// GPIO line changed
}
주를 올릴 수있는 의미 GPIO합니다. 당신은 인터럽트를 지원하지 않습니다 (그리고 이것은 사용중인 정확한 CPU/SoC에 달려 있습니다), 당신은 그것을 전체적으로 읽을 필요가 있습니다. 와이. – duskwuff
GPIO 라인이 I2C 주변 장치 또는 오디오 코덱으로 구현되는 경우 특히 그렇습니다. 그러나이 경우'select()'''pselect()',''poll()''또는''epoll()'을 호출 할 수 없습니다. ['poll()'과 그 형제들, 실제로는 전혀 투표하지 마십시오.] – marko
안녕하세요 @Marko 답장을 보내 주셔서 감사합니다. 위에서 언급 한 select에 대한 샘플 코드를 제공해 주시겠습니까? 실제로 내가하는 일은 echo 1> file_name을 할 때 알림이 출력되어야합니다. 매우 도움이 될 것입니다. –
- 1. 단일 파일 설명자를 사용하면 select, poll 및 epoll 사이에 성능 차이가 있습니까?
- 2. Perl에서 Solaris/dev/poll 지원
- 3. SPI 장치 용 Sysfs
- 4. 커널 소켓 프로그래밍에서 select() 및 poll()의 효과 시뮬레이션
- 5. C의 간단한 실시간 게임 서버에 대한 select()/poll() 메소드가 있습니까?
- 6. select/poll/kqueue/kevent를 사용하여 새 파일의 디렉토리를 확인하십시오.
- 7. PriorityQueue poll
- 8. PHP poll loop query
- 9. 더 많은 Poll()? 님의
- 10. epoll recv 반환 값
- 11. Epoll 일반 파일
- 12. C++ epoll with container_of
- 13. epoll with timerfd
- 14. epoll 파일 설명자 작업
- 15. epoll 및 제한 시간
- 16. epoll : "청취자"FD를 구별
- 17. 속성 또는 속성?
- 18. 속성 또는 속성
- 19. 파이썬의 epoll 및 비 블로킹
- 20. pollimefaces with poll
- 21. JNI Poll 문제
- 22. windows에서 poll() 함수 사용
- 23. jQuery/Ajax를 사용하는 Poll 데이터베이스
- 24. sysfs kobject를 전역 변수로 사용하려면 어떻게해야합니까?
- 25. sysfs 항목을 작성한 커널 모듈을 확인하십시오.
- 26. subprocess wait() 및 poll() 사용
- 27. epoll의 edge triggered 옵션의 목적은 무엇입니까? epoll 파일의 맨 페이지에서
- 28. epoll 대 매우 적은 수의 연결을 선택합니다.
- 29. 독점 프로토콜 (Python, select, epoll)에 대한 수명이 긴 다중 스레드 클라이언트
- 30. 나는 그 커널이 시스템 콜을 발행 할 수 읽기 전에 UDP 패킷의 크기를 알아 알고 선택 투표 또는 epoll에
덕분에, 내가 에지 파일 또는 값 파일의 모든 GPIO를 인터럽트-할 수 있습니다하지 않는 것이 –