내가 알고있는 무엇 :USB 상호 작용 (- 버퍼 - 엔드 포인트 HostController)
- USB 장치 (마우스) 나가는 데이터가 IST가 저장 호스트 인터럽트 IN 엔드 포인트가 있습니다.
- 호스트는이 Interrupt IN Endpoint를 폴링하고 데이터를 버퍼에 씁니다.
어디에서이 버퍼를 찾을 수 있습니까? 나는 나의 마더 보드의 Technical Manual (USB ... Controller ... Buffer)에서 그것을 찾기 위해 열심히 노력했지만이 레지스터를 찾을 수 없었다.
HostController는 장치에서 Endpoint IN 데이터를 저장하기 위해 자체 버퍼를 사용합니까? 아니면 Host Conroller를 다른 레지스터에 매핑합니까?
그리고 동작 (예 : 마우스 움직임 또는 클릭)이 있으면 USB 호스트 컨트롤러가 인터럽트를 유발합니까? 이 저장된/버퍼 된 데이터는 어디에서 찾을 수 있습니까?
나는 우분투와 함께 일하고 /proc/interrupts
에보고 내가 연결된 USB 장치의 IRQ 번호 (마우스)로 EHCI_HCD:USB2
컨트롤러를 찾을 수 있습니다 ...
어쩌면 사람이 이해를 도와 줄 수있는이 USB Enpoint => HostController => 인터럽트 --- 메커니즘.
정말 고마워요!
친애하는 @Shaibal. 답변 주셔서 감사합니다. 따라서 URB가 완료되면 호스트 컨트롤러가 인터럽트를 발생 시키나요? 제네릭 인터럽트 컨트롤러에 등록 되었습니까?핵심 정보를 알려주시겠습니까? pic "버퍼 포인터"의 소스는 무엇입니까 ... USB Specs.You에 설명 된 전송 설명자를 찾을 수 없습니다.이 소스가 있습니까? 감사합니다 – fetteotter
예 호스트 컨트롤러는 전송 완료, 포트 변경 이벤트, 호스트 내부 오류의 세 가지 상황에 대해 인터럽트를 발생시킵니다. 인터럽트는 Generic Interrupt Controller에 등록됩니다. 인텔의 "ehci 사양"문서를 참조하십시오. 데이터 구조 다이어그램과 버퍼에 대한 세부 사항은 제 3 장의 섹션 5를 참조하십시오. :) – Shaibal