Linux의 새로운 GPIO 사용자 공간 하위 시스템 및 Libgpiod에 대해 자세히 알아보십시오.


Sysfs는 / sys / class / gpio에 정의 된 GPIO를 사용하여 Linux 시스템에서 GPIO를 제어하는 ​​데 사용되었지만 Linux 4.8 부터 gpiochip이 / dev / gpiochip0, dev에있는 char 디바이스가되는 사용자 공간을위한 새로운 GPIO 인터페이스가 도입되었습니다 / gpiochip1 등. sysfs는 더 이상 사용되지 않을 것입니다.

그러나 Linux 4.11과 함께 NanoPi Duo를 빠르게 확인 하면 GPIO 사용자 공간 인터페이스가 모두 활성화 된 것처럼 보입니다.


그럼에도 불구하고 시간이 지남에 따라 sysfs는 사라질 것이고 새로운 서브 시스템은 모든 시스템에서 사용되기 때문에 더 많은 것을 배우는 것이 유용 할 것입니다.


한 가지 방법은 Bartosz Golaszewski의 ELCE 2017 토크 인 " 사용자 공간을위한 새로운 GPIO 인터페이스 "를 시청하는 것입니다.이 비디오는 아래에 임베드되어 있습니다. 그러나 나는 먼저 몇 가지 요점을 요약 할 것이다.

이제는 사용자 공간에서 처리하는 GPIO가 ioctl, poll 및 read 함수를 사용하는 다른 char 드라이버와 유사 해지며 GPIO에 번호를 할당하면 이름을 할당 할 수 있습니다. API (linux / gpio.h)는 칩 정보, 라인 정보, 값에 대한 라인 요청, 값 읽기, 설정 값, 이벤트에 대한 라인 요청 (상승 / 하강 에지), 이벤트 폴링 및 이벤트 읽기에 대한 액세스를 제공합니다. Bartosz는 각자의 기능에 대해 자세히 설명합니다.

커널 API는 약간 복잡하기 때문에 gpiodetect, gpioinfo, gpioset, gpioget, gpiofind 및 gpiomon과 같은 도구가 포함 된 libgpiod라는 C 라이브러리가 있습니다. C ++과 Python 바인딩뿐만 아니라 GPIO 데몬과 클라이언트도 포함됩니다. libgpiod의 예제 코드 :


libgpiod에있는 사용자 공간 도구의 몇 가지 예는 다음과 같습니다.


첫 번째 명령은 gpio 칩 목록, 이름 및 행 수를 반환하고 두 번째 명령은 칩 1의 세 번째 핀을 높이로 설정하고 세 번째는 5 개의 다른 핀 값을 반환하며 마지막은 5 개의 핀 값을 반환합니다. 이벤트가 발생했을 때 시간을 반환하십시오.

최신 libgpiod 소스 코드 를 확인하거나 최신 안정 릴리스를 tarball로 다운로드 할 수 있습니다 libgpiod는 이미 meta-openembedded & buildroot에서 사용할 수 있으며 Fedora와 Arch Linux에 패키지되어 있습니다.

슬라이드에 관심이있을 수도 있습니다 .


https://www.cnx-software.com/2017/11/03/learn-more-about-linuxs-new-gpio-user-space-subsystem-libgpiod/


+ Recent posts