2011-09-16 22 views
32

Ho bisogno di un piccolo consiglio per lo sviluppo di un driver PCIe personalizzato. Il driver deve supportare Windows CE 6.0 e Windows Desktop (xp, 7 e 8 quando è pronto).Driver PCIe per Windows CE e Windows Desktop

Abbiamo molta esperienza nello sviluppo di driver per Windows CE ma nessuno per Windows Desktop. Sono abbastanza sicuro che possiamo sviluppare un buon driver per Windows CE, ma penso che non saremo in grado di fare lo stesso per Windows Desktop senza qualche aiuto esterno. Penso che abbiamo due opzioni:

1) Utilizzare un framework driver esistente come Jungo WinDriver, che ci consente di sviluppare il driver una volta e compilare le piattaforme multiple. Ciò ha anche il vantaggio che la maggior parte dello sviluppo sarà nello spazio dell'utente, quindi dovrebbe semplificare il processo di sviluppo.

2) Ottieni un aiuto esterno per impostare un buon driver per Windows Desktop in cui è stato eseguito tutto l'impianto idraulico e abbiamo semplicemente bisogno di aggiungere il codice che comunica con la nostra scheda ed esporre IOControls rilevanti. Forse spostare il più possibile il codice in una libreria spaziale utente.

Quali sarebbero i vantaggi e gli svantaggi di ciascuna opzione? Consiglieresti approcci alternativi?

+0

Allan per maggiori possibilità di ottenere una risposta che dovresti aver etichettato anche con "windows" la tua domanda. Penso che tu abbia poche possibilità di ottenere una risposta solo sulla sezione windows-ce. Ti consiglio anche di dare un'occhiata al libro di Jan Axelson USB Complete Fourth Edition - www.lvr.com, riceverai buone informazioni da lì. Personalmente proverei ad usare WinDriver, avendo una soluzione di back-up come aiuto esterno. – garzanti

+0

Grazie per la nota sul tag "windows" e la tua raccomandazione generale. Tuttavia, non vedo come un libro su USB mi aiuterà con una decisione su un driver PCI? Ho la terza edizione del libro che mi raccomando, ed è per quanto mi ricordi soprattutto del protocollo USB e molto poco dei driver (menziona WinDriver per USB, ma non di più). –

+0

Per me ha aiutato quel libro. Ma che tipo di classe/sottoclasse USB appartiene al tuo dispositivo? È un HID? cos'è esattamente? almeno in termini generali per avere un'idea migliore. – garzanti

risposta

2

Come richiesto un po 'di tempo fa, cercherò di condividere la mia esperienza ora più di un anno dopo che ho posto la domanda originale. Abbiamo deciso di utilizzare Windriver, ma finora abbiamo solo scritto un driver per Windows CE 6.0, quindi non posso commentare il supporto multipiattaforma.

L'utilizzo di Windriver su Windows CE 6.0 presenta sia vantaggi che svantaggi. Significa che tutto il nostro codice del driver è ora in libreria, quindi è stato più facile sviluppare ed eseguire il debug (rispetto a un driver standard che richiede Platform Builder). Quindi dal punto di vista dello sviluppo è stato bello. Anche le prestazioni sono andate bene. All'inizio si è verificato un sovraccarico nell'apprendimento dell'API Windriver e su come utilizzarlo, in particolare con DMA e interrupt, ma non penso sia stato peggio dell'apprendimento dell'API PCI di Windows CE 6.0 non elaborata.

L'unico vero svantaggio che posso pensare è che un driver "reale" è più facile da condividere tra più processi rispetto alla libreria che abbiamo creato usando Windriver. Nella nostra applicazione (sistema incorporato con un processo) non è davvero un problema, ma è più difficile creare utility di debug/sviluppo che funzionino sull'hardware dietro il retro del processo principale. Abbiamo usato questo approccio per test/debug su altre piattaforme, ma è un po 'più complicato da fare qui.

Per riassumere tutto, penso che abbiamo fatto la scelta giusta e sono felice che abbiamo la possibilità di portare il nostro "driver" a Windows Desktop con (si spera) un piccolo sforzo quando ne abbiamo bisogno.

1

Dopo aver utilizzato Windriver per sviluppare driver per Windows/Linux, desidero rispondere a questa domanda.

Preferisco Windriver, se anche l'applicazione che utilizza il driver verrà scritta da voi. Dato che dici che stai sviluppando un driver personalizzato, suppongo che tu voglia scrivere l'applicazione anche da solo. In questo caso, l'applicazione non deve cambiare molto tra Windows e Windows CE, poiché la maggior parte delle funzioni del driver verrà generata da Windriver stesso. È come chiamare le funzioni di libreria standard anziché utilizzare IOCTL ecc.

In passato, ho utilizzato windriver per generare il codice di interfaccia di base del driver e sviluppato applicazioni (principalmente applicazioni diagnostiche) che utilizza il codice generato da windriver. Con piccole modifiche, siamo stati in grado di utilizzare il driver e l'applicazione tra Windows e Linux. Non sto sostenendo di usare Jungo, ma è stato facile da usare.

Poiché la domanda riguarda la richiesta di suggerimenti, è difficile fornire una risposta esatta, sto solo condividendo il mio feedback.

+1

oops. Ho appena realizzato che ho risposto a una domanda posta un anno fa !!! –