Windriver. Herramienta para desarrollo de drivers


Cuadro de texto:  WinDriver es una herramienta para el desarrollo de drivers de dispositivos que simplifica la difícil tarea de desarrollar drivers. El driver que desarrolle utilizando WinDriver es código fuente compatible entre todos los Sistemas Operativos soportados (actualmente WinDriver soporta Windows 95/98/ME/NT/2000/CE/XP, Linux, Solaris, VxWorks y OS/2). Entre las arquitecturas de bus soportadas se encuentran USB, PCI, CardBus, CompactPCI, ISA, PMC, PCI-X y PCMCIA

 

WinDriver soporta todos los chips PCI, de todos los proveedores, pero ofrece soporte mejorado para chips PLX, Altera, Cypress, QuickLogic, National Semiconductor, STMicroelectronics, Texas Instruments, Xilinx, PLDA y AMCC.

 

En sistemas operativos en modo protegido (como Windows, Linux, Solaris y OS/2) el programador no puede acceder directamente al hardware desde la aplicación (“Modo Usuario”). Solo se permite el acceso al hardware desde dentro del mismo del sistema operativo (“Modo Kernel”) mediante módulos software llamados “driver de dispositivos”. Para lograr acceder al hardware personalizado desde el nivel de aplicación, el programador debe hacer lo siguiente:

 

  1. Aprender la arquitectura interna del sistema operativo con el que esta trabajando (95/98/ME/NT/CE/Linux/Solaris ...)
  2. Aprender como crear un driver de dispositivo
  3. Aprender las nuevas herramientas para desarrollo/depuración en el Modo Kernel (DDK, ETK, DDI/DKI)
  4. Desarrollar el driver de dispositivo en Modo Kernel que realiza las E/S básicas de hardware.
  5. Desarrollar la aplicación en Modo Usuario, que accede al hardware a través del driver escrito en Modo Kernel.
  6. Repetir los primeros cuatro pasos para cada nuevo Sistema Operativo en donde deba correr el código.

 

 

Ventajas de WinDriver

 

Fácil desarrollo – WinDriver permite a programadores de Windows crear drivers basados en USB, PCI, CardBus, CompactPCI, ISA, PMC, PCI-X y PCMCIA en un tiempo extremadamente corto. WinDriver le permite crear su driver en Modo Usuario en un entorno familiar, utilizando MSDEV, Visual C/C++, Borland Delphi, borland C++, Visual Basic, GCC o cualquier otro compilador de 32 bits. WinDriver elimina la necesidad de familiarizarse con el interior del sistema operativo, programación kernel o con el DDK, ETK, DDI/DKI o tener conocimientos de driver de dispositivos.

 

Plataforma Cruzada – El driver creado con WinDriver correra en Windows95/98/ME/NT/2000/CE/XP, Linux, Solaris, VxWorks y OS/2, es decir, escribe el driver una vez y los corre en cualquiera de estas plataformas.

 

Asistentes – DriverWizard (incluido) es una herramienta de diagnostico grafico que le permite escribir y leer desde el hardware, antes de escribir cualquier línea de código. Haciendo unos clicks con el mouse, el hardware es diagnosticado. Una vez que esta satisfecho con el funcionamiento de su dispositivo, DriverWizard crea el “esqueleto” del código fuente del driver, brindando funciones de acceso a todos los recursos en el Hardware.

 

Performance en Modo Kernel – La API de WinDriver esta optimizada para performance. Para drivers que necesitan performance en Modo Kernel, WinDriver ofrece el “Kernel PlugIn”. Esta poderosa característica le permite crear y depurar su código en Modo Usuario y correr las partes criticas de su código (como el manejador de interrupciones, o acceso a rangos de memoria mapeada de E/S), en Modo Kernel, logrando así performance en Modo Kernel.

 

Esta característica única permite al desarrollador correr el código en Modo Usuario en el kernel del Sistema Operativo sin tener que aprender el funcionamiento del kernel. Cuando se esta trabajando con Windows CE o VxWorks, no hay necesidad de utilizar el Kernel PlugIn, ya que en Windows CE y VxWorks no hay separación entre Modo Usuario y Modo Kernel. Esto le permite lograr una performance optima desde el código de Modo Usuario.

 

 

¿Que tan rápido puede funcionar?

 

Utilizando el Kernel PlugIn puede esperar el mismo rendimiento de un Driver Kernel personalizado. Usted esta limitado solo por su Sistema Operativo y limitaciones hardware. Una figura del rendimiento que puede lograr utilizando el Kernel PlugIn seria de aproximadamente 100.000 interrupciones por segundo. Facilidad de Modo Usuario, Performance de Modo Kernel.

 

Para concluir, utilizando WinDriver, todo lo que el desarrollador tiene que hacer es crear una aplicación que accede al  Hardware es:

 

  1. Iniciar DriverWizard y detectar el hardware y sus recursos
  2. Generar automáticamente el código del driver desde dentro del DriverWizard
  3. Hacer llamadas a las funciones generadas desde la aplicación de Modo Usuario

 

La nueva aplicación de acceso a hardware ahora corre en todas las plataformas Windows (incluyendo CE), Linux, Solaris, VxWorks y OS/2 (Solo hay que recompilar).

 

 

Bus

Producto

Sistema Operativo

CPU

PCI, CardBus, CompactPCI, ISA, PMC, PCI-X, PCI and PCMCIA*

WinDriver Windows

Windows 98, Me, NT, 2000, XP, XP Embedded, Server 2003

x86

WinDriver CE

Windows CE 2.x- 4.2

x86, MIPS, ARM

WinDriver Linux

Linux 2.0.31 - 2.4.x

x86

WinDriver Solaris

Sun Solaris 2.6, 7, 8, 9

x86, Sparc

DriverBuilder

VxWorks 5.4

x86, PPC

USB 2.0, 1.1

WinDriver USB Windows

Windows 98, Me, 2000, XP, XP Embedded, Server 2003

x86

WinDriver USB for NT

Windows NT 4.0

x86

WinDriver USB Windows CE.NET

Windows CE.NET

x86, MIPS, ARM

WinDriver USB Linux

Linux 2.0.31 - 2.4.x

x86

 

 

 

Arquitectura de WinDriver

 

Para acceder al hardware, su aplicación realiza un llamado a una función de la librería WinDriver Modo Usuario (windrvr.h). La librería de Modo Usuario llama al WinDriver Kernel, el cual accede al hardware, a través de llamadas nativas del sistema operativo.

 

El diseño de WinDriver minimiza los golpes de performance en su código, aun cuando este corre en Modo Usuario. Sin embargo, algunos drivers de dispositivo necesitan performance, lo que no puede ser logrado en Modo Usuario. Después de crear y depurar su código en Modo Usuario, debe volcar los módulos con performance critica de su código (como un controlador de interrupciones de hardware) en el WinDriver Kernel PlugIn sin cambiar ni una sola línea del mismo. Entonces el Kernel de WinDriver llama a este modulo desde el Modo Kernel, logrando de esta manera máxima performance. Esto le permite programar y depurar en Modo Usuario, y lograr performance kernel donde sea necesario. En Windows CE y VxWorks no hay separación entre modo usuario y Modo Kernel, de esta manera se puede lograr una performance optima directamente desde el Modo Usuario, eliminando la necesidad de utilizar el Kernel PlugIn en estos Sistemas Operativos.

 

 

 

¿Que plataformas soporta WinDriver?

 

WinDriver soporta Windows 95/98/ME/NT/2000/CE/XP, Solaris, VxWorks, OS/2 y Linux. El mismo código fuente correrá en todos los sistemas operativos soportados. El mismo ejecutable que escriba correrá en Windows 95/98/ME/NT/2000/XP. Incluso si su código esta pensado para solo uno de estos sistemas operativos, utilizando WinDriver le dará flexibilidad de mover su driver a los otros sistemas operativos sin necesidad de cambiar su código.

 

 

 

¿Puedo probar WinDriver antes de comprar?

 

Si, versiones de evaluación de WinDriver para todos los sistemas operativos y buses soportados se encuentran disponibles.

 

 

 

¿Como desarrollo mi Driver con WinDriver?

 

En Windows 95, 98, ME, NT, 2000, XP

 

  1. Inicie DriverWizard. Diagnostique su tarjeta y deje que DriverWizard genere el esqueleto del código. El código generado por DriverWizard es un programa de diagnósticos, conteniendo funciones que leen y escriben a los recursos detectados o definidos, y habilita a las interrupciones de su tarjeta y los escucha. Modifica el código generado por el DriverWizard, adecuándolo a las necesidades particulares de su aplicación.
  2. Haga correr y depure su driver en Modo Usuario
  3.  Si su código contiene secciones de performance critica, utilice el Kernel PlugIn

 

 

En Windows CE

 

  1. Conecte su hardware en la maquina con NT
  2. Instale el CE ETK en NT
  3. Diagnostique su hardware con el DriverWizard y deje que este genere el esqueleto del código del driver. Modifique el código utilizando Visual C++ adecuándolo a sus necesidades específicas. Depure su código y hardware desde el emulador CE corriendo en la maquina NT
  4. Si no puede conectar su hardware en su maquina NT, podrá utilizar el DriverWizard cargando manualmente todos los recursos dentro del hardware. Deje que el DriverWizard genere su código y después depure su hardware utilizando conexión serie. Después de verificar que el código generado trabaja apropiadamente, modifíquelo de acuerdo a sus necesidades. Puede utilizar (o combinar) cualquiera de los archivos de ejemplo para su esqueleto de código del driver.
  5. Si su código contiene secciones de performance critica, mejore la performance utilizando el “Kernel PlugIn

 

En Linux y Solaris

 

Desde la versión 5.0, WinDriver ofrece un GUI Driver Wizard que facilita el desarrollo de Drivers en Linux y Solaris. Utilice el GUI DriverWizard para Linux y Solaris de la misma forma que utilizaría el de Windows y genere el código para Linux y Solaris.

 

En Sistemas Operativos Embebidos

 

Para sistemas operativos embebidos, como Windows CE o VxWorks, usted puede utilizar la característica Remote WinDriver. Solo corra DriverWizard en una plataforma Host soportada y podra detectar y diagnosticar su hardware remoto utilizando la opcion Remote WinDriver.

 

 

 

¿Que incluye el kit de herramientas WinDriver?

 

- CD de WinDriver

- Manual impreso

- Cuatro meses de soporte técnico gratuito (Teléfono – Fax – E-mail)

- La licencia de WinDriver CE le permite correr su código del driver CE en su maquina NT via emulador CE.

- Las licencias WinDriver Linux y WinDriver Solaris le permiten utilizar el DriverWizard en su maquina Windows para diagnosticar su hardware y generar automáticamente el esqueleto del código del driver. Deberá compilar y correr el código creado en su maquina Linux o Solaris. El código no correrá en su maquina Windows sin la licencia de Windriver para Windows.

 

- Modulos WinDriver

 

WinDriver versión 5 – (windriver\include) – el kit de herramientas de acceso al hardware de propósito general. Los archivos importantes son:

 

1.windrv.h: el API de WinDriver, las estructuras de datos y las constantes están definidas en este archivo de cabecera.

2. windrv_int_thread.h :  este archivo de cabecera contiene funciones wrapper que simplifican el manejador de interrupciones.

 

DriverWizard (accesible a través de Inicio/programas/WinDriver/DriverWizard). – Herramienta grafica que diagnostica su hardware y le permite codificar fácilmente su driver.

 

Depurador Gráfico (accesible a través de Inicio/programas/WinDriver/Monitor Debug Messages).- es una herramienta gráfica de depuración que colecta y depura información en su driver mientras corre. En Linux, Solares, WinCE y VxWorks tendrá que utilizar la versión de consola de este programa.

 

Paquete de distribución WinDriver (windriver\redist).- Los archivos que necesitan ser incluidos en el driver para su distribución a sus clientes.

 

Manual WinDriver  - (accesible a través de Inicio/programas/windriver).- Manual completo de WinDriver, en formato pdf (Adobe Acrobat)

 

WinDriver Kernel PlugIn (windriver\kerplug).- Son los archivos y ejemplos necesarios para crear un Kernel PlugIn para WinDriver.

 

 

- Utilidades

 

PCI_SCAN.EXE (\windriver\util\pci_scan.exe). una utilidad para obtener una lista de las tarjetas PCI instaladas y los recursos asignados para cada una de ellas

 

PCI_DUMP.EXE (\windriver\util\pci_dump.exe) Utilidad para obtener todos los registros de configuración PCI de todas las tarjetas PCI instaladas

 

PCMCIA_SCAN.EXE (\windriver\util\pcmcia_scan.exe) Utilidad para obtener una lista de las tarjetas PCMCIA instaladas y los recursos asignadas para cada una de ellas.

 

Nota: PCMCIA_SCAN.EXE solo se encuentra disponible en la versión WinDriver CE

 

USB_DIAG.EXE (\windriver\util\usb_diag.exe). Utilidad para obtener una lista de las tarjetas USB instaladas y los recursos asignadas para cada una de ellas y para el acceso de los dispositivos USB.

 

 

- La versión CE incluye:

 

\REDIST\...\X86EMU\WINDRVR_CE_EMU.DLL: la DLL que comunica con el kernel WinDriver para el modo emulación de X86 HPC de Windows CE.

 

\REDIST\… \X86EMU\WINDRVR_CE_EMU.LIB: La libreria de importacián para enlazar con aplicaciones WinDriver que son compilados para el modo de emulación para el X86 HPC de Windows CE.

 

 

- Soporte especifico de Chip-sets

 

Estos son APIs que soportan la mayoría de los chipset PCI, para desarrollar código en forma mas rápida.

 

WinDriver PLX APIs

WinDriver Altera APIs

WinDriver Cypress APIs

WinDriver QuickLogic

WinDriver National Semiconductor APIs

WinDriver STMicroelectronics APIs

WinDriver Texas Instruments APIs

WinDriver Xilinx APIs

WinDriver PLDA APIs

WinDriver AMCC APIs

 

 

- Ejemplos

 

Aquí encontrara el código fuente para las utilidades, junto con otros ejemplos que muestran como varias tareas son realizadas. Encuentre el ejemplo que mas se acerca al driver que usted necesita.

 

 

 

¿Puedo distribuir el driver creado con WinDriver?

 

Si, WinDriver es adquirido como un kit de desarrollo, y cualquier driver de dispositivo creado utilizando WinDriver puede ser distribuido libremente en la cantidad de copias que desee.

 

 

 

Descargue versión de evaluación (por 30 días). (click aquí ...)

 


Para más información contacte con nosotros en el teléfono 913589222 o por E-mail en
info@tga.es


www.tga.es