Driver Development Case Studies Illustrating our Expertise
ATA/SATA Disk Drive Test Suite
ExcelStor Technologies came to us needing a Windows based test suite that would allow them to perform a wide range of tests to augment their development and manufacturing process. They needed consultants that understood all aspects of Windows development: the application space as well as the kernel.
We came on board and were faced with two major problems: how to make the interface flexible enough to accommodate the needs of the various user’s (firmware engineers, servo engineers, manufacturing, customer support, etc) and how to access the drive to send a wide range of ATA commands to a disk drive.
The problem with the Windows built-in ATA/SATA driver is that it abstracts the drive to appear as a SCSI drive and thus controls how the SCSI command set gets translated into the ATA command set. This makes it impossible to access the drive with a wide range of ATA commands. To solve this problem we developed a SCSI miniport driver and a lower disk filter driver. The SCSI miniport driver attaches to the disk drive controllers (whether it is the onboard controller embedded into the south bridge or an external PCI controller) to directly access the disk drive’s task file registers. The lower disk filter driver allows the application to send custom IOCTLs containing the exact task file to write out to the drive. Both of these drivers are fully WDM compliant and work with the onboard ATA/SATA controllers as well as a wide range of SATA PCI controllers.
To solve the user interface problem we developed an extensive, interpreted C-like programming language that allows users to execute commands either interactively from the command line or from scripts. We also developed a user interface that is based on docking tool bars. The docking tool bars provided a look and feel similar to Microsoft’s Visual Studio while allowing the user to essentially select what data to display.
Link to free evaluation form
We also developed a rather sophisticated installation program that provided a user interface to display, in tree view format, all of the controllers and their attached disks. This allows the user to selectively install or uninstall the custom mini port driver and filter onto the controllers of choose.
Windows XP Embedded Board Support package
Octagon Systems manufactures high quality, high reliability, single board computers that are used in rugged environments. They wanted to extend their software support to include Windows XP Embedded. They needed a set of custom drivers to control their onboard peripherals along with a set of board support packages with varying levels of support. Given the nature of their business the drivers had to be extremely reliable.
We were hired to develop seven different PCI and SMBus drivers to support the embedded peripherals that ship with Octagon’s single board computers. The peripherals included temperature sensors, watchdog timers, serial EEPROMs, and LEDs. We componentized the drivers so that they could easily be incorporated into Windows XP Embedded board support packages. To ensure reliability we wrote a set of test applications that could continuously access the peripherals using the drivers we had just developed. While using Driver Verifier in the background we continuously ran the test applications for weeks. After this test cycle we were extremely confident that our drives would meet Octagon’s high standard of reliability. The drivers got through Octagon’s acceptance testing without a single problem.
The board support packages that we developed ranged in functionality from a very minimal version that only had a command line interface to a full-featured Windows Professional emulation version. The packages could be booted from hard disk as well as compact flash.
Link to free evaluation form
Windows 2000\XP VoIP PCI Device Driver
Intel was developing a new chipset that would be their introduction into the Voice over IP market place. They needed a Windows 2000/XP PCI Device Driver that was not only highly reliable but also high performance.
We developed a fully WDM compliant driver that used I2O messaging to communicate with the board. Because performance was such a high priority we developed a highly optimized asynchronous messaging system along with highly optimized ISR/DPC routines so that we could meet our customer’s requirement of processing over 2000 messages/second.
To demonstrate the reliability of our device driver we developed a multithreaded, voice messaging application that was capable of rapidly recording and playing back voice messages on multiple channels simultaneously. The application was also capable of tracking statistics such as the number of messages that failed and the rate of setup and tear down of the voice message channels. We ran the application continuously for many weeks. By simulating the stress that the system would undergo during normal operation in a call center, the application allowed us to demonstrate the performance and reliability of the driver.