슬레이브 장치 역할을 하는 Raspberry Pi Zero의 USB 호스트 역할을 하는 Android 장치가 있습니다. USB 슬레이브 장치와 상호 작용하기 위해 안드로이드 API를 사용하는 데 전혀 문제가 없습니다.
분명히 드라이버가 필요합니다.가젯 직렬 드라이버Raspberry Pi에서 다음 명령을 사용하여 부팅 시 로드합니다.
sudo modprobe g_serial
시스템은 분명히 /dev/ttyGS0
드라이버에 대한 장치 노드를 생성해야 하지만 이는 발생하지 않습니다. 그 이유는 무엇입니까?
드라이버가 성공적으로 로드되면 드라이버와 해당 노드를 사용하여 프로그램을 어떻게 작성할 수 있습니까? 가능합니까, 아니면 직접 드라이버를 작성해야 합니까? 이 문제를 해결할 다른 방법이 있나요? 저는 Linux를 처음 접했기 때문에 터미널 명령 답변이 매우 도움이 될 것입니다. 미리 감사드립니다.
답변1
Raspberry Pi에 어떤 문제가 있는지 말씀드릴 수는 없지만(저는 Raspberry Pi가 없기 때문에) 직렬 가젯 드라이버를 테스트하고 사용하는 방법을 알려 드릴 수 있습니다. 먼저 기본 컴퓨터에서 다음을 시도해 보세요.
USB 가젯의 가상(에뮬레이트된) 호스트 컨트롤러 드라이버를 로드합니다.
sudo modprobe dummy_hcd
이는 가젯 드라이버의 프레임워크 역할을 하며 lsusb
컴퓨터에 표시되는 새로운 "일반" USB 버스(확인)와 이러한 버스 간의 루프백을 제공합니다.
이제 직렬 가젯 드라이버를 로드합니다.
sudo modprobe g_serial
버스와 /dev/ttyGS0
가젯 드라이버에 새 장치가 표시되어야 합니다. 또한 새 장치로 인해 직렬 클라이언트의 커널 드라이버가 로드되므로반품장치 를 구입하세요 /dev/ttyACM0
.
이러한 장치에 쓰고 읽을 수 있으며 통신이 가능한지 확인할 수 있습니다. 예를 들어, cat /dev/ttyACM0
한 창에서 실행한 다음 echo foo > /dev/ttyGS0
다른 창에서 실행합니다.
나의심하다Raspberry Pi를 USB 클라이언트 모드로 설정하고 가젯 드라이버가 연결할 수 있도록 올바른 HCD 드라이버를 로드해야 합니다. 이렇게 하지 않으면 가젯 드라이버는 관찰한 대로 아무 작업도 수행하지 않습니다. 하지만 Raspberry Pi에 적합한 것이 무엇인지 모르겠습니다.