2011-09-16 3 views
32

사용자 정의 PCIe 드라이버 개발을 위해 약간의 조언이 필요합니다. 드라이버는 Windows CE 6.0과 Windows Desktop (준비가되면 xp, 7, 8)을 모두 지원해야합니다.Windows CE 및 Windows 데스크톱 용 PCIe 드라이버

우리는 Windows CE 용 드라이버를 개발 한 경험이 있지만 Windows 데스크톱 용 드라이버는 개발하지 않았습니다. 나는 우리가 견고하고 견고한 Windows CE 드라이버를 개발할 수 있다고 확신하지만, 우리는 몇 가지 외부 도움없이 Windows 바탕 화면에 대해 동일한 작업을 수행 할 수 없을 것이라고 생각합니다. 우리는 두 가지 옵션이 있다고 생각합니다 :

1) Jungo WinDriver와 같은 기존 드라이버 프레임 워크를 사용하면 드라이버를 한 번 개발하고 다중 플랫폼으로 컴파일 할 수 있습니다. 이것은 또한 대부분의 개발이 사용자 공간에서 이루어질 수있는 이점이 있으므로 개발 프로세스를 더 간단하게 만들어야합니다.

2) 모든 배관 작업이 완료된 좋은 Windows 데스크톱 드라이버를 설치하려면 몇 가지 외부 도움을 받으십시오. 보드와 통신하고 관련 IOControl을 노출하기 만하면됩니다. 아마도 가능한 한 많은 코드를 사용자 공간 라이브러리로 옮기십시오.

각 옵션의 장점과 단점은 무엇입니까? 대체 접근법을 추천 해 주시겠습니까?

+0

Allan은 답변을 얻을 수있는 기회를 얻기 위해 "windows"질문에 태그를 추가해야합니다. 창세기에 대해서만 대답 할 기회는별로 없다고 생각합니다. Jan Axelson 책 USB Complete Fourth Edition - www.lvr.com을 살펴 보시고 좋은 정보를 얻으실 수 있습니다. 개인적으로 WinDriver를 사용하여 백업 솔루션 외부 도움말을 사용하려고합니다. – garzanti

+0

"windows"태그 및 일반 권장 사항에 대한 메모를 보내 주셔서 감사합니다. 그러나, 나는 USB에 관한 책이 어떻게 PCI 드라이버에 대한 결정을 내리는 데 도움이 될지 모르겠다. 필자가 추천하는 책의 세 번째 버전이 있으며, USB 프로토콜에 대해서는 거의 기억하고 있으며 드라이버에 대해서는 거의 언급하지 않습니다 (USB 용 WinDriver는 언급되었지만 그 이상은 아닙니다). –

+0

저에게 그것은 그 책을 도왔습니다. 하지만 어떤 종류의 USB 클래스/하위 클래스가 귀하의 장치에 속해 있습니까? HID입니까? 그것은 정확히 무엇입니까? 적어도 일반적으로 더 나은 아이디어를 얻으려면 – garzanti

답변

2

조금 전에 요청한대로 원래 질문을 한 후 1 년 이상 경험을 공유하려고합니다. 우리는 Windriver를 사용하기로 결정했지만 지금까지 Windows CE 6.0 용 드라이버 만 작성 했으므로 크로스 플랫폼 지원에 대해서는 언급 할 수 없습니다.

Windows CE 6.0의 Windriver를 사용하면 장단점이 있습니다. 즉, 모든 드라이버 코드가 라이브러리에 있으므로 플랫폼 빌더가 필요한 표준 드라이버와 비교하여 개발하고 디버그하는 것이 더 쉬워졌습니다. 그래서 개발 관점에서 보았을 때 좋았습니다. 성능도 좋았습니다. 처음에는 Windriver API를 배우는 데 약간의 오버 헤드가 있었으며, 특히 DMA와 인터럽트를 사용하는 방법을 사용했지만, 원시 Windows CE 6.0 PCI API를 배우는 것보다 나빴다고 생각하지 않습니다.

내가 실제로 생각할 수있는 유일한 단점은 Windriver를 사용하여 만든 라이브러리보다 여러 프로세스간에 "실제"드라이버를 공유하는 것이 더 쉽다는 점입니다. 우리의 응용 프로그램 (하나의 프로세스가있는 임베디드 시스템)에서는 실제로 문제가되지 않지만 주 프로세스 뒤의 하드웨어에서 작동하는 디버그/개발 유틸리티를 만드는 것은 어렵습니다. 우리는 다른 플랫폼에서 테스트/디버깅을 위해이 방법을 사용했지만 여기서는 약간 더 복잡합니다.

모든 것을 요약하면 올바른 선택을 한 것으로 생각합니다. 필요할 때 아주 적은 노력으로 Windows 데스크톱에 "드라이버"를 포팅 할 수있게 된 것을 기쁘게 생각합니다.

1

Windriver를 사용하여 Windows/Linux 용 드라이버를 개발 했으므로이 질문에 답변하고 싶습니다.

드라이버를 사용하는 응용 프로그램도 사용자가 작성하려는 경우 Windriver를 선호합니다. 사용자 정의 드라이버를 개발 중이라고 언급 했으므로 직접 작성하는 것으로 가정합니다. 이 경우 대부분의 드라이버 기능이 Windriver 자체에서 생성되기 때문에 응용 프로그램은 Windows와 Windows CE간에 많이 변경할 필요가 없습니다. 이것은 IOCTL 등을 사용하는 것과는 대조적으로 표준 라이브러리 함수를 호출하는 것과 같습니다.

이전에는 windriver를 사용하여 기본 드라이버 인터페이스 코드를 생성하고 windriver 생성 코드를 사용하는 응용 프로그램 (대부분 진단 응용 프로그램)을 개발했습니다. 약간의 수정으로 Windows와 Linux간에 드라이버와 응용 프로그램을 사용할 수있었습니다. Jungo를 사용하기를 권하지는 않지만 사용하기 쉽습니다.

질문은 제안을 요구하는 것이기 때문에 정답을 제공하기가 어렵 기 때문에 나는 내 의견을 공유하고 있습니다.

+1

oops. 나는 방금 1 년 전에 한 질문에 답했다는 것을 깨달았다. –