Home | USB/PCI Driver and Firmware Tools Store | Contact us |
Search:
|

WinDriver - No Performance Limitations

The following "Checklist" will help you determine how to improve the performance of your driver:

  1. Create your driver in the User Mode as explained in the previous chapters of this manual.
  2. Compile and debug your driver in the User Mode.
  3. When working in the User Mode, performance may take a hit. Check if you have performance problems. If you do not have any performance problems, you have finished your driver development.

If you do have performance problems:

  1. Identify which part of the code the performance problem is at. Classify and solve the problem according to the table below:
  Problem Solution

#1

ISA Card - Accessing an IO mapped range on the card.
  • Try to convert multiple calls to WD_Transfer() to one call to WD_MultiTransfer()
  • If this does not solve the problem, handle the IO at Kernel Mode, by writing a kernel PlugIn.

#2

PCI Card - Accessing an IO mapped range on the card.
  • First, try to change the card from IO mapped to memory mapped by changing bit 0 of the address space PCI configuration register to 0, and then try the solutions for problem #3. You will probably need to re-program the EEPROM to initialize BAR0/1/2/3/4/5 registers with different values.
  • If this is not possible, try the solutions suggested for problem #1.
  • If this does not solve the problem, handle the IO at Kernel Mode, by writing a kernel PlugIn.

#3

Accessing a memory mapped range on the card.
  • Try to access memory without using WD_Transfer(), by using direct access to memory mapped regions
  • If this does not solve the problem, then there is a hardware design problem. You will not be able to increase performance by using any software design method, or by writing a Kernel PlugIn, or by writing a full kernel driver.

#4

Interrupt latency. (Missing interrupts, Receiving interrupts too late)
  • You need to handle the interrupts at Kernel Mode, by writing a kernel PlugIn.

 

.