2013-11-02 3 views
3

gpioX를 sysfs에서 입력 핀으로 내보낼 수 있다고 가정하면 gpioX라는 디렉토리가/sys/class/gpio /에 만들어집니다. gpioX /는 gpio X의 현재 상태 (높음 또는 낮음)를 나타내는 "value"와 같은 파일이 거의 없습니다.GPIO가 상태를 변경하면 sysfs가 어떻게 업데이트됩니까?

핀 X에 적용된 신호가 상태를 변경하면 (예 : 낮음에서 높음) 커널 공간에서 어떤 일이 발생합니까?

전환 전 gpioX/값에 '낮음'이 포함되어 있지만 이후에는 '높은'값이 포함됩니다. 이 파일은 OS에 의해 어떻게 업데이트됩니까?

인터럽트 메커니즘이 필요하다고 생각합니다. sysfs를 업데이트하기 위해 인터럽트 메커니즘을 사용합니까?

답변

5

이 파일은 OS에 의해 어떻게 업데이트됩니까? 인터럽트 메커니즘이 필요하다고 생각합니다. 이 폴링 (man poll) 또는 대체 비동기 알림을 지원하지 않는

이 인터럽트 메커니즘을 필요로하지 않습니다. 적어도 대부분의 버전에서 누군가가 파일을 읽을 때 /sys/class/gpio/은 GPIO 수준의 읽기만 수행합니다.

sysfs를, debugfs의, CONFIGFS, procfs의, 등등을 가상 파일 시스템입니다. 파일에 액세스하면 Linux 커널 내의 코드가 실행되어 값을 제공합니다. sysfs은 인터페이스와 같은 파일 만 제공합니다. 그렇다고해서 이고 실제 상태 인이 아닙니다. 상태는 언제든지 읽을 수있는 GPIO 수준입니다.

gpio_value_show()이 현재 구현 된 것으로 보입니다. 인터럽트로 설명하는 것은 가능합니다. sysfs_set_active_low() 함수 또는 sysfs 파일 /sys/class/gpio/gpioN/edge을 통해 수행 할 수 있습니다. GPIO가 인터럽트를 지원하지 않으면 파일에 쓰기가 오류를 반환 할 수 있습니다. 자세한 내용은 gpio.txt을 참조하십시오 (특히 특정 Linux 버전).