문제

USB 1.1 장치 ONR Windows 2000에 대한 장치 드라이버를 개발했습니다.

내 문제는 64 바이트 벌크 전송을 사용할 때 꽤 나쁜 TX 성능입니다. 사용 된 USB 호스트 컨트롤러에 따라 최대 패킷 처리량은 초당 1000 패킷 (UHCI) 또는 2000 패킷 (OHCI)입니다. Linux Kernel 2.6에서 초당 약 5000 패킷을 라운드로 비슷한 드라이버를 개발했습니다.

Linux 드라이버는 최대 10 개의 비동기 벌크 전송을 사용하는 반면 Windows 드라이버는 1 개의 동기 벌크 전송을 사용합니다. 따라서 이것을 비교하면 성능이 나쁘지만 이미 성공하지 못한 비동기 벌크 전송으로 이미 시도했습니다 (성능 게인 없음).

Windows에서 성능을 향상시키는 방법과 요령이 있습니까?

도움이 되었습니까?

해결책

이제 약 6.6K 메시지를 보내기 위해 속도를 높이기 위해 관리했습니다. 솔루션은 매우 간단했습니다. Linux 드라이버에서와 동일한 메커니즘을 구현했습니다.

이제 나는 한 번에 최대 20 개의 URB를 예약하고 있습니다.

다른 팁

어떤 종류의 처리량을 얻고 있습니까? USB 1.1은 약 1.5 mbit/s로 제한됩니다.

당신이 함께 살아야하는 것은 한계 일 수 있습니다. 당신이 절대해야 할 일은 자원을위한 시스템을 굶어 죽이는 것입니다. 운전자가 자체 성능을 향상시키지 못하는 시스템 리소스를 호그링하는 많은 운전자 구현을 보았습니다.

내 생각에 당신은 당신이 잘못된 API 호출을 사용하고 있다는 것입니다. Win32 DDK의 USB 샘플을 살펴 보셨습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top