USB 질문 2 개 (끝점 및 구현에서 PC 아키텍처로)


1

공식 USB 2.0 사양을 포함하여 USB에 관한 많은 기사를 읽은 후에도 아직 얻을 수없는 것들에 대해 질문하고 싶습니다.

  1. 엔드 포인트는 정확히 무엇이며 그 목적은 무엇입니까? 내가 조금 설명하자 : 내가 이해 한 바에 따르면 끝점은 데이터의 원본 또는 대상입니다. 나는 무례하게되고 싶지 않지만 왜 머리가 아프는지 이해할 수 없기 때문에 머리가 아파요. 내 말은, USB는 직렬 버스이므로 올바른 목적지로 데이터를 전달하는 데만 신경 써야합니다. 대상은 장치입니다. 엔드 포인트의 형태로 디바이스에 여러 목적지를 추가하는 이유는 무엇입니까? 내 말은, USB 장치는 원하는 모든 논리 구조의 개발자가 원하는대로 데이터를 관리 할 수 ​​있기 때문에 사양을 전송하기 위해 추가해야하는 이유는 무엇입니까?

  2. PC의 USB 호스트에는 USB 호스트가 적절한 드라이버를 장치에로드합니다. 그럼, 내가 몇 가지 USB 사용자 정의 클래스 장치에 연결 말해 보자. USB 호스트 드라이버는 ID를 얻는 것보다 장치를 알면 드라이버를로드해야합니다. 하지만 장치 드라이버가 커널에 있다고 생각했기 때문에 어떻게 추가로로드 할 수 있습니까?

또한, 내 USB 호스트가 PCI를 통해 PC에 연결되어 있다고 가정 해 봅시다. 그래서 내 USB 호스트 장치는 OS의주의를 끌기 위해 PCI 인터럽트를 생성 할 것이고 OS보다 먼저 USB 호스트 드라이버를로드해야합니다. 이 과정이 너무 느리지 않습니까? 내 말은, 예, USB 3.0도 CPU가 처리 할 수있는 속도보다 느리지 만, 여전히 ...

모든 답변을 주셔서 감사합니다. 엔드 포인트에 대한 도움말을 알고 계시다면, 두 번째 질문은 좀 더 이론적입니다. 다시 한번 감사드립니다 :)

답변:


1

1, 끝점은 무엇이며 무엇이 무엇입니까?   그것의 목적은 무엇입니까? 내가 조금 설명하자 :   내가 이해 한 것에서 끝점은   소스 또는 대상. 그러나,   WTF? 나는 무례하게되고 싶지 않지만 내   머리가 아프다. 왜냐하면 나는 정말로 할 수 없다.   이유를 이해하십시오. 내 말은, USB는 시리얼이다.   버스, 그래서 그것에 대해서만 신경 써야한다.   적절한 목적지로 데이터를 전달합니다.   대상은 장치입니다. 왜 더 많은 것   여러 목적지 포함   끝점 형태의 장치?

예, "끝점"은 USB 개념, 즉 장치에 대한 연결의 끝점입니다.

장치가 여러 끝점을 가질 수있는 이유는 제어 데이터와 실제 장치 데이터와 같이 한 번에 여러 가지 종류의 통신이 진행될 수 있기 때문입니다. 이들을 분리하려면 다중 종단점이 필요합니다 (FTP가 사용하는 데이터 + 제어 채널과 비슷합니다).

"USB 개요"는이 점을 아주 잘 설명합니다. http://www.beyondlogic.org/usbnutshell/usb3.htm

2, PC의 USB 호스트에는   USB 호스트가 적절한 드라이버를로드합니다.   장치. 그래서, 내가 플러그를 꽂는다고 말하자.   USB 맞춤 클래스 장치. USB 호스트   운전사가 ID를 얻는 것보다   장치를 알고 나면   드라이버를로드하십시오. 그러나 나는 그것을 생각했다.   장치 드라이버는 커널에 존재하며,   그래서 어떻게 추가로드 할 수 있습니까?

일반적으로 저수준 USB 드라이버 만 커널에 내장되어 있습니다. 고급 드라이버, 특히 공급 업체별 드라이버가 필요할 때로드됩니다. 어떻게 동작 하는가는 OS에 달려 있지만, 대부분의 최신 OS는 런타임에 드라이버를 커널에로드 할 수 있습니다. 모듈을 사용하는 Linux 또는 Windows 드라이버 모델을 사용하는 Windows

또한 내 USB 호스트가   PCI를 통해 Pc에 연결됩니다. 그래서 내 USB   호스트 장치가 일부 PCI를 생성합니다.   OS에 대한 관심을 얻기 위해 인터럽트   OS보다 먼저 USB 호스트를로드해야합니다.   운전사. 이 과정이 너무 느리지 않습니까? 나는   USB 3.0이 훨씬 더 느리다는 뜻입니다.   CPU가 처리 할 수있는 것보다,하지만 여전히 ...

그 질문은 분명하지 않습니다. 예, 운영 체제는 드라이버를로드해야합니다. 예, 몇 초가 걸릴 수 있지만 한 번만 수행됩니다. PCI는 USB 3.0보다 훨씬 빠르기 때문에 PCI는 문제가되지 않습니다.


1
좋은 대답이지만, 후자의 질문에 대한 한 가지 수정. 예, 호스트가 각 USB 요청에 대해 깨어날 경우 전체 인터럽트 처리 프로세스가 매우 느립니다. 따라서 PCI (PCI-E와 같은 자손)에는 버스 마스터 링이라는 기술이 있습니다. OS는 메모리 영역을 선택한 다음 PCI 장치가 해당 영역에 데이터를 읽거나 씁니다 CPU를 방해하지 않고 . 버스 주파수가 약 800MHz이고 단일 전송에 IIRC, 32 또는 64 비트가 포함되어 있기 때문에 (잘못 입력 한 경우 올바르게 수정 됨) 매우 빠른 주변 장치에 대한 요구를 충족시킬 수 있습니다. (아마도 OP가 "호출"에 대해 "로드"를 잘못 입력했다).
whitequark

이 질문을 할 수 있을까요? PCI 장치가 메모리에 쓸 때, PCi와 CPU 액세스 사이의 우선 순위는 어떻게 해결됩니까? 내 말은, CPU가 메모리에 액세스하려고 할 때 더 큰 우선 순위를 가지므로 PCI 디바이스는 CPU가 완료 될 때까지 대기해야합니다. 둘째, 인터럽트가 발생하지 않는 경우 OS가 RAM에있는 해당 데이터를 처리하기 위해 드라이버로 다시 전환 할시기를 어떻게 알 수 있습니까? 감사.
user32569

끝점 응답에 대해 조금 더 질문 할 수 있다면, 필자는 그 기사 인 USB를 간단히 읽었지만 이해하지 못했습니다. 당신이 그것의 구조에 의해 데이터로부터 제어 전달을 달리 할 수 ​​있습니다. 장치는 먼저 전송 유형을 결정하고 올바른 위치에 저장합니다. 그저 버스 신호 대신에 소프트웨어에서 그렇게 할 수 없었던 종단점을 사용하는 이유를 찾아야합니다 ....
user32569

@b gen-jack-o-neill : PCI / CPU 우선 순위 정보 : 예, CPU 및 기타 장치가 RAM (또는 좀 더 정확하게는 : 버스) 액세스를 조정할 수있는 메커니즘이 있습니다. 그래도 구체적인 것은 모르겠다. 엔드 포인트에 관해서는 : 죄송합니다. 거기서 도울 수는 없습니다. 어쩌면 그것은 그저 단순한 디자인 일 것입니다 ...
sleske

감사. 나는 그것을 다시 한번 생각했고 아마도 어스너를 얻었을 것이다. 어쩌면,이 디자인은 그것을 지나치게 단순화하는 데 사용됩니다. 따라서 USB HW를 사용하면이 모든 작업을 수행 할 수 있으며 끝점은 해당 HW 칩의 출력 포트입니다. 나는 항상 MCU 소프트웨어 USB를 고려했지만, 아마도 하드웨어면에서 모두 다르다고 생각한다. 전 일부 전용 USB 칩을 볼 필요가 있지만, 나쁜 것은 그들 대부분이 SMD 버전이므로, 집에서 혼란스러워하기가 어렵습니다 ....
user32569

0

내가이 질문을 올바르게 이해한다면, 아마도 이러한 질문들이 사물을 비춰 줄 수있을 것이다.

USB 허브가 어떻게 발표되어야합니까?

여러 기기 (예 : 키보드 + 트랙 패드)를 에뮬레이션하는 기기는 어떻게 발표해야하나요?

두 번째 항목에서는 리눅스에 관해서 만 이야기 할 수 있지만 모듈이 처음 필요한 경우 드라이버가 디스크에서 커널로로드되지만 그 시점부터 메모리에 있습니다. 이는 빠른 응답 시간을 의미하지만 설정 시간이 느려질 수 있습니다. 그건 나에게 정상적인 / 받아 들일 것 같다.


글쎄,하지만 난이 질문에 대답 할 수 - USB 허브 자체가 특별한 제어 패킷을 발표, 그것의 존재는 패킷의 특수 유형은 데이터에서 diferentiated해야합니다. 여러 장치를 에뮬레이션하는 방법? 당신이 할 수 없다는 걸 알기 때문에 단순합니다. 다른 종점에 대해 서로 다른 VID 및 PID 쌍을 할당 할 수 없습니다. 여러 기능을 가진 장치는 내부 USB 허브를 사용합니다. 그래서 드라이버는 dll과 같은 커널에로드 될 수 있습니까? 나는 모든 드라이버를 설치 한 후에 PC를 다시 시작해야만하는 이유가 있지만 그렇게 할 수는 없다.
user32569
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.