WinDriverTM – “Java” driverelor de dispozitiv

by donpedro

Scrierea unui driver de dispozitiv în Kernel Mode pentru a accesa echipamente hardware necesită cunoştinţe speciale şi talent, necesită de asemenea scrierea unui driver separat pentru fiecare sistem de operare în care este implementat.
Jungo a introdus instrumente care au automatizat acest proces

Ce este un driver de dispozitiv?
Sistemele de operare protejate (WindowsTM, Linux, UnixTM) rulează aplicaţii izolate în spaţiul alocat acestora – User mode prin limitarea accesului la resursele sistemului. În aceste sisteme de operare (spre deosebire de DOS), aplicaţiile nu pot accesa echipamentele hardware direct. Accesul la aceste echipamente este permis numai la nivelul nucleului (inelul zero, “Kernel mode”). Pentru a accesa un echipament hardware dintr-o aplicaţie, un programator trebuie mai întâi să scrie un driver de dispozitiv.
Uzual, acest proces include paşii următori:
1. Studiul sistemului de operare în care sunt integrate driverele de dispozitiv (Windows, Linux, VxWorks).
2. Studiul mediului de dezvoltare al driverelor (DDK, DDI/DDK, etc.).
3. Cunoştinţe aprofundate referitoare la noile instrumente de dezvoltare/depanare în Kernel Mode.
4. Scrierea driverului de dispozitiv în Kernel Mode care asigură intrările/ieşirile hardware.
5. Scrierea aplicaţiei în User Mode care permite accesul la echipamentele hardware prin intermediul driverului de dispozitiv scris în Kernel Mode.
6. Paşii 1 – 4 se repetă pentru fiecare sistem de operare în care se rulează aplicaţia.

Analizând paşii descrişi anterior, acest proces poate fi foarte incomod, iar întreţinerea codului pentru fiecare sistem de operare poate fi o sarcină copleşitoare. Anumite sisteme de operare nu au suportul necesar dezvoltării driverelor în limbaje de nivel înalt cum ar fi C/C++; trebuie deci să folosiţi limbajele de asamblare. Scrierea unui driver de dispozitiv poate dura săptămâni şi acesta numai pentru un singur sistem de operare.
Un scenariu tipic ar cuprinde: aţi scris un driver DOS, OK!. Nu încercaţi să îl transferaţi folosind tehnicile tradiţionale. Necesită prea multă muncă!
Ce se întâmplă dacă lucraţi frecvent în Visual Basic sau Delphi şi nu aveţi timp să învăţaţi C/C++ sau limbaje de asamblare.

Cum depăşiţi acest prag?
WinDriver oferă soluţii complete tuturor problemelor descrise mai sus şi pentru alte probleme ce pot apare în momentul scrierii driverului.

Ce este WinDriver?
WinDriver este cel mai bun kit cu instrumente de dezvoltare a driverelor de dispozitiv, proiectat special pentru a crea drivere performate pentru PCI/Compact PCI/USB/ISA/ISA PnP/EISA. Sistemele de operare în care pot fi implementate sunt: Windows 9x, NT, NT Embedded, 2000, CE, Me, Linux, Solaris, OS/2, VxWorks. Nu sunt necesare cunoştinţe suplimentare referitoare la nucleul sistemului de operare sau DDK deci poate fi utilizat cu succes şi de către programatorii fără prea multă experienţă în domeniu.
WinDriver permite programatorilor să creeze aplicaţii prin intermediul cărora pot accesa echipamente hardware noi sau deja existente fără a fi necesară scrierea unui driver în Kernel Mode. Această nouă tehnologie economiseşte luni de muncă şi în plus, codul driverului este compatibil cu diferite sisteme de operare. WinDriver are suport complet pentru tratarea întreruperilor, a intrărilor/ieşirilor, echipamentelor de mapare a memoriei, a transferului DMA, Plug and Play, plăci multiple, magistrale multiple şi CPU multiple.

Arhitectura WinDriver
Aplicaţia scrisă accesează un echipament hardware prin intermediul unei funcţii API în User Mode. Sunt disponibile funcţii cum ar fi inport() şi outport(), transfer DMA.
Pentru obţinerea unor performaţe superioare cum ar fi transmiterea rapidă a datelor sau I/O mapate, codul poate fi modificat din User Mode folosind modulul Kernel Plug In.

Acestă facilitate permite accesul către hardware direct din codul scris de programator.
WinDriver furnizează module Kernel pentru majoritatea sistemelor de operare Windows 9x, NT, 2000, CE, Me, Linux, Solaris, OS/2, VxWorks. Aceste module permit programatorului să ruleze driverul scris cu WinDriver pe sistemele de operare menţionate. Pentru a fi funcţional acesta trebuie doar recompilat.
Această arhitectură permite dezvoltarea şi depanarea codului în User Mode şi folosirea unuia din sistemele de operare enumerate. Depanarea codului poate fi făcută pas cu pas folosind depanatoarele standard disponibile în majoritatea mediilor de dezvoltare: MS Visual StudioTM, Borland DelphiTM, Borland C++ BuilderTM. Transferul driverului devine un fapt nesemnificativ. Întreţinerea codului este acum “floare la ureche” şi în plus este posibilă dezvoltarea lui ulterioară dacă cerinţele sistemului cresc.

DriverWizard
WinDriver conţine un kit complet de instrumente ce include: DriverWizardTM (prin intermediul căruia se realizează detectarea echipamentului hardware, depanarea codului şi generarea acestuia), exemple de coduri şi manuale complete.
DriverWizard permite scanarea tuturor magistralelor prin care se accesează echipamentele hard prezente (magistrala ISA nu poate fi listată automat, dar ISA PnP poate fi scanată fără probleme). Programatorul trebuie să aleagă un echipament din lista prezentată. Pe baza acestei opţiuni poate citi sau scrie date în porturi, în regiştri, în memorie sau poate verifica rutinele de întrerupere. Fişierul de înregistrare a datelor este în format .txt şi conţine toate apelurile şi rezultatele interogării sistemului.
Dacă răspunsurile primite sunt satisfăcătoare, DriverWizard poate crea automat o platformă hardware API specifică şi o aplicaţie de diagnosticare care va fi folosită ca model pentru driver.
Folosind C/C++, DriverWizard realizează un subdirector care conţine:
xxx_files.txt – un fişier text care descrie fişierele generate;
xxx_diag.c – o aplicaţie model funcţională care descrie funcţiile utilizate de DriverWizard;
xxx_lib.c – o bibliotecă generalizată ce conţine funcţiile necesare accesării echipamentului şi care este utilizată de xxx_diag.c;
xxx_lib.h – un fişier antet cu funcţiile utilizate;
• Alte fişiere caracteristice proiectului pentru platforma de dezvoltare aleasă.
xxx – reprezintă numele proiectului.
Pentru a folosi driverul realizat pe mai multe platforme este necesară recompilarea acestuia în platforma respectivă.

Funcţii API WinDriver pentru PLX, Altera, V3, AMCC; Galileo şi QiuckLogic
WinDriver include librării pentru chipseturile PLX, Altera, V3, AMCC; Galileo şi QiuckLogic ceea ce permite programatorilor realizarea de drivere de dispozitiv, pentru orice chipset PCI menţionat, într-un timp foarte scurt. Bibliotecile existente în WinDriver permit scrierea driverelor de dispozitiv atât de programatori profesionişti cât şi de începători într-un timp foarte scurt.

Rezumat:
Cost: se reduce până la 90% timpul de dezvoltare al driverelor;
Stabilitate: WinDriver a fost testat pe minim 1000 de echipamente hardware şi sisteme de operare;
Performaţă: permite alegerea optimă a nucleului prin intermediul modulului Kernel Plug In;
Portabilitate: Driverul scris cu WinDriver poate rula în sistemele de operare menţionate mai sus. Nu trebuie rescris, trebuie doar recompilat.
Puteţi obţine un kit de evaluare pentru 30 de zile de la adresa:
www.jungo.com sau www.vardaan.com

S-ar putea să vă placă și