linux 드라이브는 얕은 시리즈에서 깊은 시리즈로: usb 서브시스템의 4 (android 플랫폼 마우스 드라이브 코드 분석)

안드로이드의 usb 포트는 OTG(on the go)를 지원하고 USB OTG는 Host가 될 수도 있고 Device가 될 수도 있다. 본고는 안드로이드 핸드폰이 Host로 마우스를 연결하는 상황을 살펴본다.
OTG는 어떻게 하면 Host도 하고 Device도 할 수 있을까.
표준 usb 인터페이스에는 네 개의 선이 있는데 그것이 바로 vbus, gnd, dp(d+), dm(d-)이다. 안드로이드 핸드폰의 usb는 미니 USB 인터페이스에 id선을 추가하여 Host, Device를 구분한다.
usb는 어떻게 장치의 삽입을 검사합니까
장치 플러그 검사는 모두 허브에서 진행되며, 허브를 외부로 연결하지 않아도 USB host controler에 루트 허브를 통합시킨다.hub의 dp, dm선은 모두 15k의 하단 저항이 낮은 레벨로 당겨지고 설비 측의 dp 또는 dm선에는 1.5k의 상단 저항이 있으며 설비가 삽입될 때 dp, dm선상의 레벨이 바뀐다.
USB 장치를 usbhub의 어떤 포트에 삽입하면, 집중기는 장치의 접속을 감지하고, 다음에 호스트가 인터랙티브 조회를 중단할 때 보고합니다.집중기의 포트는 장치가 들어오지 않을 때 모두 닫힌 상태이며, 장치를 삽입한 후에도 자동으로 열리지 않으며, 호스트가 제어 상호작용을 통해 명령을 보내야 한다.따라서 집중기의 보고를 받은 후 호스트의 USB 드라이버는 새로 삽입된 장치에 대해 몇 개의 제어 상호작용을 조정하고 집중기에 이 포트를 열라는 명령을 내린다. 그러면 새로 삽입된 장치가 USB 버스에 나타나 이 장치에 유일한 주소를 분배한다.
마우스가android 핸드폰에 삽입된 후 코드 실행 과정 분석
1,usb 마우스는hid장치에 속하고,linux가 시작되는 과정에서hid버스bus 를 등록합니다register(&hid_bus_type)
drivers/hid/hid-core.c
static int __init hid_init(void)
{
	int ret;
	ret = bus_register(&hid_b

좋은 웹페이지 즐겨찾기