2017-05-06 12 views
0

GPIO 핀에 1 초 동안 출력하는 스크립트를 작성하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 GPIO sysfs 명령을 사용하는 것이지만 "Segmentation Fault"가 무작위로 계속 나타납니다. 주로 방향 설정시 발생합니다. 이것은 bash 스크립트와 터미널을 통해 실행될 때도 발생합니다.세그먼트 화 장애 sysfs gpio linux odroid

sudo echo 227 > /sys/class/gpio/export 
sudo chmod 777 /sys/class/gpio/gpio227/* 
sudo echo "out" > /sys/class/gpio/gpio227/direction # sometimes segmentation fault 
sudo echo "1" > /sys/class/gpio/gpio227/value 
# wait a bit 
sudo echo "out" > /sys/class/gpio/gpio227/direction # almost always segmentation fault 
sudo echo "0" > /sys/class/gpio/gpio227/value 

나는 우분투 MATE 1.12.1와 ODROID-XU4에 및 ARMv7 프로세서 REV 3 (v7l) 이것을 실행하는거야. 나는 또한 비밀 번호 sudo를 실행 중이다.

왜 이런 일이 발생하고 방지하는 방법에 대한 제안 사항이 있습니까?

EDIT : 원래 ODROID-XU3에서 실행 중이라고 생각했지만 실제로는 XU4입니다.

+0

이 sudo chmod 777/sys/class/gpio/gpio227/*는 무엇입니까?! 읽기 전용 문서 외에 사용자 공간에서 GPIO 서브 시스템과 통신하는 방법은 특히 별도의 명령 대신 ** low ** 및 ** high **를 사용하십시오. 또한이 GPIO를 그대로 전환 할 때 수행중인 작업을 정확히 알고 있습니까? – 0andriy

+0

'chmod 777'은 gpio227 파일이 처음부터 시작하지 않기 때문에 gpio227 파일에 대한 쓰기 액세스를 활성화하는 것입니다. 그것 없이는 방향이나 값으로 에코를 실행할 때 권한 오류가 발생합니다. 나는 777을 사용할 필요가 없었지만 단지 더 빠르다. ** low ** ** ** high **를 실행 해보고 작동하는지 확인해 보겠습니다. – user2449725

+0

gpio 227이 GPO로 구성되도록 내 보내지 않은 것처럼 보입니다. 따라서 쓰기 권한이 없습니다. 하드웨어 핀을 무시하기 전에 하드웨어 핀의 중요성을 확인하십시오. –

답변

0

일부 다른 방법을 테스트 한 후 GPIO 값을 설정하는 과정에서 다른 프레임 워크가 세그멘테이션 오류없이 정상적으로 작동하는 것으로 나타났습니다.

결론적으로, GPIO 핀에 쓰기 위해 에코를 사용하면 세그먼테이션 오류의 원인이됩니다. 나는 왜 그런지 모르겠다.

내 작업은 노드에서 gpio 모듈을 사용하거나 Odoboid에 wiringPi를 사용하는 것이 좋았던 것 같았습니다.

사람들이 알 수 있도록 게시하십시오.

1

세그먼트 결함은 일반적으로 사용자 공간 프로그램이 잘못된 메모리 주소를 읽거나 쓸 때 발생합니다. echo와 같은 간단하고 잘 테스트 된 프로그램에서 이런 일이 발생하는 것은 일반적이지 않습니다.

커널/GPIO 드라이버가 버그가 있거나 고장난 하드웨어 일 수 있습니다. 명령을 루트로 직접 실행하여 세그먼트 화 오류를 일으키는 echo가 있는지 확인한 다음 strace를 사용하여 세그먼트 화 오류가 항상 같은 위치에서 발생하는지 확인하십시오.