USB를 통해 다른 장치와 통신하기 위한 가젯 직렬 드라이버

USB를 통해 다른 장치와 통신하기 위한 가젯 직렬 드라이버

슬레이브 장치 역할을 하는 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에 적합한 것이 무엇인지 모르겠습니다.

관련 정보