2014-12-15 4 views
1

나는 리눅스 커널 3.17.4, 페도라 21 ARM을 사용하여 beaglebone black을 사용하고 있습니다. 나는 커널 핀 (8)을 고려하면 (GPIO0 [8], 또는 P8.35) ...beaglebone 오해 GPIO pinmux

$ sudo grep 'pin 8 ' /sys/kernel/debug/pinctrl/44e10800.pinmux/pinmux-pinspin 8 (44e10820.0): (MUX UNCLAIMED) (GPIO UNCLAIMED)

$ sudo grep 'pin 8 ' /sys/kernel/debug/pinctrl/44e10800.pinmux/pins 산출 pin 8 (44e10820.0) 00000027 pinctrl-single

이 그래서 지금까지 내가 말할 수있는, 핀 (8)받을 수있다

산출 모드 7에서 풀다운 저항으로 인 에이블된다.

그런 다음 $ echo 8 | sudo tee -a /sys/class/gpio/export/sys/class/gpio/gpio8을 생성한다. $ echo out | sudo tee -a /sys/class/gpio/gpio8/direction은 그것을 밖으로 설정합니다. $ echo 1 | sudo tee -a /sys/class/gpio/gpio8/value 핀을 높게 설정해야합니다.

내 관찰에 따르면 value 파일의 읽기가 높지만 gpio 핀의 전압은 낮습니다.

"8"을 "60"으로 변경하면 핀을 제어 할 수 있지만 파일 시스템이 펑키하게 시작됩니다. 아마 그 핀이 뭔가 사용 되었기 때문일 수 있습니다. 특히 핀은 pin 60 (44e108f0.0) 00000030 pinctrl-single입니다.

제 질문은 - 왜 8 번 핀 (gpio0 [8] 또는 P8.35)이 작동하지 않습니까?

답변

1

커널 핀이 gpioN[M] 인 경우 32 * N + M으로 잘못 계산되었다고 생각했습니다. 커널 핀은 44e10의 오프셋에 의해 결정됩니다.

pin 8 위의 오프셋은 820이며, 이는 gpio0[22]p8.19에 해당합니다. 22를 내보내고 p8.19를 확인하면 원하는 결과가 생성됩니다.

흥미롭게도이 사실에 대한 많은 블로거 문서가 올바르지 않습니다. 나는 그 (것)들이 증식하는 것을 막기 위하여 그 위치에 연결하지 않을 것이다. 반면에이 게시물은 전적으로 정확했으며 진행 상황을 이해할 수있었습니다.

http://www.valvers.com/embedded-linux/beaglebone-black/step04-gpio/