Drivers

AstroSoft develops drivers and firmware for different hardware appliances to optimize their functionality and response.
The firmware and drivers may be developed from scratch for new type appliances or based on existing operating systems (including ones with open source code).
We cooperate with hardware and software manufacturers, and even develop drivers and firmware for exceptional models which are no more produced.

 

Windows

We have been developing drivers for more than 15 years. During this period the concept of driver development in the Windows universe has changed several times – from partially assembler code for Windows 95 to the today’s WDF environment which allows to develop some types of drivers that do not differ from ordinary user applications.

 

Windows Drivers

  • 01Windows Driver Model (WDM)
    This concept of driver development was formed at the beginning of the millennium. Its main drawback for the developer is a lack of integral architecture. Consequently, learning curve is long and only a very experienced and deeply concerned programmer is able to create such drivers.

    Developed WDM drivers:
    • File system access control
      Provides backup of files locked exclusively by applications (usually, such files cannot be read and thus copied).
    • BiPrint filter
      Provides 2D bar code insertion into the document for print through the undefined application.
    • Multi-keyboard
      Facilitates servicing a number (dozens) of USB keyboards so that they are visible from 'customized' applications, but not usable for accessing the system. This enabled to avoid hacking server when organizing a testing center.
    • Laptop shock sensor filter
      Immediately switches the HDD to the safe mode once a laptop falls to prevent damaging its heads. The main task of this driver is to ensure that the programs reading from or writing to the HDD overlook the temporal unavailability of the drive.
    • PCI and USB
      A number of drivers servicing PCI and USB devices have been developed, including a universal PCI driver that allows to service a number of different devices (usually, each device requires its own driver, but as for the universal driver, it was enough to enter the device identifier in the installation file for the driver to get started).
  • 02

    Windows Driver Framework
    It has been long enough since Microsoft created a brand new environment – WDF. It is based on the same foundation of WDM, but the programmer is now provided with a unified well thought-out architecture. This allows reducing the cost of driver development, as well as error probabilities.

    In addition to complex kernel-level drivers, the WDF infrastructure enables to develop drivers for a number of devices operating at the user security level, effectively facilitating development and debugging processes.

    We have developed many drivers for a variety of PCIe devices. We have proven experience in upgrading the PCIe WDM obsolete drivers, including re-engineering and restoration / enhancement of the previous functionality in the WDF architecture. We have also created several drivers for USB devices at the UMDF level.

  • 03Drivers “without” development
    There is a universal USB device driver that can be used even in Windows XP. The use of this driver helps to avoid the development of dedicated USB drivers. We are experienced in this technology and use this driver to serve all the developed USB devices with non-standard protocols.

    In addition, Microsoft has standard USBSER drivers for servicing the virtual COM port and USBSTOR for servicing USB drives. In this case, the reverse approach is used: to use standard drivers for servicing without creating the own ones, when developing USB devices we make them compatible with the standard protocol. USBSER.SYS serves not only USB-COM adapters, but also all the devices supplied with terminal commands. This may be the engine control system, communication system and MODBUS-based industrial SCADA systems. When developing all these systems, we adapt the existing protocol to standard drivers coming with Windows to simplify the development.

 

Linux

  • 01

    Multimedia devices
    (digital video recorders (DVR) or time shifted TVs).
    We have created a file system that combines the properties of a general purpose file system and at the same time meets specific performance requirements: support of multiple simultaneous reading and writing streams with a total volume comparable to the actual possible data transfer rate on the physical disk. Additionally, support of files with "holes" formed mainly at the beginning of file during the archive obsolescence was provided.
    The solution is based on the support of "regular" files, special support of "large and fast" files and free space management (especially formed from the "holes" of "large" files). A kernel module implementing the VFS interface was developed to realize the task.

  • 02MFD Controller and scanner
    When developing the firmware for a multifunction printer, the task was to transfer data via USB between the scanning and head unit based on the ARM processor controlled by VxWorks. The standard tools provided operating only with the integrated USB1.1 controller, whose speed was too low, so the USB controller was connected via the PCI bus. It was necessary to develop a controller driver and a scanner driver. The controller driver was developed based on the Linux-driver which we adapted to the VxWorks environment by creating middleware for controlling boot and interrupts, access to the storage, DMA and own memory management program (when using standard VxWorks, the operating speed was unacceptably low).
  • 03GPS navigation chip
    The cost of the GPS navigation chip may be reduced by transferring calculations to the general purpose processor, which means that we are to solve the task of fast and synchronous transmission of large data volumes from the GPS receiver to the system memory. We created a suitable driver, and since the solution is to operate with different operating systems, the data-receiving driver uses the cross-platform mechanism libusb. Depending on the transmission mode (raw / bulk or isochronous), performance or flow integrity control problems have been resolved.
  • 04Fuse drivers
    When developing a medical device, the task was to transfer files from the device's internal memory to laptop. Problem: when connecting a flash drive to the computer, the file system driver starts and solely controls the data distribution on the USB flash drive; when connecting the device, the disk drive is controlled by the device operating system.

    The initial solution to allocate the raw memory for copying the data before connecting to a computer was inconvenient since transfer of this memory to the computer exclusive control and reverse operations after shutdown required non-obvious user actions and could cause data synchronization errors.

    A block device driver simulating a FAT formatted disk, providing, however, data from an allocated directory of the device native file system was created.

 

Microcontrollers

Microcontrollers are computers, so they also need drivers. For us it is even more since we have created (and continues to develop) the real-time operating system MACS for microcontrollers. Every day we are working on drivers for this system.

One of the advantages of our RTOS is its user-friendliness, so the drivers are not "just working", but are as convenient as possible. Drivers principles for MACS RTOS are generated by developers, which is quite unusual for this field developments, where the majority follow the already prepared third-party solutions (for example, from Microsoft). We laid down the requirements for drivers, made a choice of the model meeting these requirements, and then – based on the chosen model, we created a system of drivers, allowing to write applications as efficiently and informatively as possible.

Get In Touch

  • Gelsingforsskaya 3, corpus 11D
    194044, St. Petersburg, Russia
  • +79522068225
  • This email address is being protected from spambots. You need JavaScript enabled to view it.