C에서 GPIO 핀 제어


10

라이브러리의 대부분 여러 언어로, 상호 작용하는 GPIO 핀을 통해와 /sys/class/gpio/export, /sys/class/gpio/import, /sys/class/gpio/gpio10/value, 등 그러나 리눅스 커널 문서 명확하게 상태 일을하는 기존의 방법입니다.

이란 무엇입니까 비 레거시 일을하는 방법은?

커널 공간에서 올바르게 이해하면 일반적인 GPIO 작업에 이러한 기능 또는 표준 커널 드라이버 를 사용합니다.

사용자 공간에 무엇을 사용 하시겠습니까? 비 레거시를위한 Sysfs 인터페이스가 있습니까?

추신 : 커널 문서는 레거시 정수 기반 인터페이스가 더 이상 사용되지 않는 것으로 간주되지만 호환성 이유로 여전히 사용할 수 있다고 말합니다. 그러나 그 레거시 코드를 사용하는 데 관심이 없습니다.


1
대부분의 라이브러리 /sys/class/gpio/export는 커널 서비스를 사용할 수 있지만 하드웨어에 직접 액세스하여 GPIO 핀과 상호 작용하지 않습니다 . 확실히 WiringPi와 AFAIK pigpiod는 SoC 레지스터에 직접 액세스합니다.
Milliways

답변:



0

지금까지 내가 본 가장 유용한 지침은 Linus Walleij의 2016 YouTube 비디오입니다. 그는 당시 리눅스 커널에서 GPIO 서브 시스템의 관리자였습니다.

https://www.youtube.com/watch?v=lQRCDl0tFiQ

대화는 커널 공간에서 더 시작한 다음 libgpiod 라이브러리를 사용하여 사용자 공간으로 이동합니다.

내 Pi3B 버스터를 실행에, 그것은 apt-get을 한 후, gpiod를 설치하기가 쉽고 #include <linux/gpio.h>개방 ()와 IOCTL을위한 커널 라이브러리 () 명령과 함께 헤더에 : <sys/stat.h>, <sys/types.h>, <fcntl.h>, <sys/ioctl.h><string.h>활성화의 strcpy (). 이 대화에서 예제를 실행할 수있었습니다.

이것이 여전히 선호되는 접근 방법이고 업데이트 또는 개선 사항이라면 관심이 있습니다.


그렇다면 API는 무엇입니까? ?를 사용하여 설치 apt-get install gpiod되었습니까? 함수 프로토 타입이 내부에 <linux/gpio.h>있습니까? 링크 할 라이브러리 파일이 있습니까?
Dmitry Grigoryev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.