SPI 인터페이스를 통해 마이크로 컨트롤러와 통신 할 임베디드 장치 용 장치 드라이버를 작성해야합니다. 결국 USB 인터페이스는 업데이트 된 코드를 외부에서 다운로드하고 확인 단계에서 사용됩니다.임베디드 장치 용 USB - 장치 드라이버/프로토콜 스택 설계
제 질문은 누구나 임베디드 시스템에서 USB 프로토콜 스택/장치 드라이버의 구현/디자인을 다루는 좋은 참조 디자인이나 설명서 또는 온라인 자습서를 알고 있습니까? 나는 650 페이지의 USB v2.0 스펙을 읽기 시작한 순간부터 다소 어려움을 겪고있다.
FYI와 마찬가지로, 사용중인 마이크로 컨트롤러는 프리 스케일 9S12입니다.
마크
나는 다음과 같은 정보를 추가하고 싶었 goldenmean의 (-AD) 의견에 근거 :
1) 임베디드 디바이스는 사용자 정의 임원을 사용하고 COTS 또는 RTOS 전혀 사용하지 않습니다를.
2) 장치는 데이터를 장치에서 검색 할 준비가되었음을 나타 내기 위해 인터럽트를 사용합니다.
3) Linux에 관한 몇 가지 문서를 읽었지만 Linux에 익숙하지 않았기 때문에 현재로서는별로 도움이되지 않습니다 (매우 빠르게 진행되기를 기대하지만).
4) 디자인 접근 방식은 적어도 USB 장치 용 장치 드라이버를 작성한 다음 장치 드라이버 상단에 USB 프로토콜 계층 (I/O)이 있어야 데이터를 해석 할 수 있습니다. 나는 이것이 틀릴 수도 있지만 이것이 최선의 방법이라고 생각합니다.
편집 - 그들은 내가 다시 USB 장치에서 작동하지 않을 경우 내 마음에서 사라져 전에 년 후
난 그냥 몇 가지 항목을 공유하고 싶었다. 코드를 개발할 때 몇 가지 어려움을 겪었습니다.
첫 번째 문제는 USB 장치가 호스트에 연결되었을 때 (Windows의 경우 Windows) 호스트가 재설정 요청을 발행했기 때문입니다. USB 장치는 인터럽트 활성화 플래그를 재설정하고 지 웁니다. 나는이 일이 일어났다는 것을 알기에 충분한 문학을 읽지 않았기 때문에 Set-Up Request Interrupt를 결코받지 못했다. 이것을 이해하는 데는 꽤 시간이 걸렸습니다.
두 번째 문제는 Set_Configuration에 대한 설정 요청을 올바르게 처리하지 못했기 때문입니다. 나는 그것을 처리하고 있었지만이 설정 요청이 들어 왔을 때 USB 장치가 ACK를 보내지 않았다는 점에서 요청을 올바르게 처리하지 못했습니다. 결국 하드웨어 USB 프로토콜 분석기를 사용하여 이것을 발견했습니다.
내가 겪었던 다른 문제가 있었지만, 이것들은 나에게 꽤 많은 시간이 걸렸습니다. 필자가 염두에 두어야 할 또 다른 문제는 빅 엔디안 및 리틀 엔디안 인 Freescale 9S12 대 USB 데이터 형식 (Intel)입니다.
나는 과거에했던 UART 장치 드라이버와 유사한 USB 장치 드라이버를 만들었습니다. 다음 URL에 코드를 게시했습니다.
http://lordhog.wordpress.com/2010/12/13/usb-drive
나는 그들이 (예 MAX3420_SETUP_DATA_AVAIL_INT_REQR은 0x20) # 정의를 사용하는 것만 큼 포털하지 않기 때문에 사람들이 그들처럼되지 않을 수도 있습니다, 구조를 많이 사용하는 경향이 있지만, 더 많은 코드를 만드는 것이므로 내가 그들을 좋아 나를 위해 읽을 수 있습니다.누군가 그것에 관한 질문이 있으시면 언제든지 이메일을 보내 주시면 그것에 대한 통찰력을 갖도록 노력하겠습니다. "USB Complete : The Developer 's Guide"라는 책은 집중해야 할 영역을 알고있는 한 도움이되었습니다. 이것은 간단한 응용 프로그램이었고 저속 USB 만 사용했습니다.
Marcelo, 감사합니다. 정보를 주시면 감사하겠습니다.하지만이 책이 나올 때까지 장치 드라이버와 프로토콜 계층을 개발해야합니다. 나는 같은 저자가 다른 책을 주문했다. – lordhog
흠, 아직 보지 못했다. 미안해. 그러나 나는 그것이 당신에게 쓸모가 있다는 것이 행복합니다. =) 그녀의 책은 훌륭합니다. –
USB 장치 프로토콜에 대해 물어봤을 때, 이것은 기술 담당자가 추천 한 책이었습니다. – Spike0xff