Device Driver Engineering
Lextel has developed and delivered many Device Drivers.
A Device Driver is a specialized piece of software that fits in between an operating system, and a physical piece of hardware. Each Operating System has a unique way of interfacing with device drivers, and each operating system may have different device driver APIs ( Application Programming Interfaces) for various classes of device driver. For example, vxWorks has an api specific to network devices, which is different than the api for storage devices.
Development of a device driver requires significant and specific expertise. This includes knowledge of how to write a device driver in general, knowledge of the specific operating system internals and driver api, and knowledge of the hardware device. Often, logic analyzers, bus analyzers, and other pieces of equipment may be required for debugging and analysis.
Since a device driver is controlling hardware, it is advantageous to have had experience designing hardware when writing a device driver. However, in today’s world of specialization, the majority of computer programmers do not have experience designing hardware, and most do not have experience with operating system internals, mmu or cache control, or the details of various processor architectures.
When developing an embedded systems driver, make sure the developer has experience with:
- The Operating System driver API
- The processor architecture as it relates to hardware interfacing
- The ‘bus’ structure that interfaces the device hardware to the processor
- Interrupt Handling
- Dma Control
- Processor Caching
- Processor MMU control
- OS Semaphores and scheduling
- Data/Byte Alignment
- Assembly language when needed
- Control of Instruction Execution Order and Optimization
- Consideration of performance issues
Lextel has significant experience developing Device Drivers for embedded systems, as well as for non-embedded systems such as Windows and off the shelf Linux. Our experience includes:
Operating Systems
- vxWorks
- Linux
- Windows
- MAC OS
- Embedded Systems with no OS
Processor Architectures
- X86
- Power PC
- 68xxx
- ARM
- XScale
- MIPS
Sample of Devices
- Network Controllers ( MACs)
- Network Switches and Routers
- Network Packet Processing Engines
- Crossbar Connect Devices
- Sub-micron resolution Linear Motor for Medical Laser
- CPCI cards
- Raid Storage
- Serial Lines
- I2C, SPI serial control links
- Image Processing Cards
- Data Acquisition Cards
- Fan Control
- DDR Control
- CPLD, FPGA download
- EEPROM
- Flash Memory
- Cache controllers
- MMU (Memory Management Units)
- Shared Memory Networking Controllers
- Printer Controller ICs
- Scanner Controller ICs
We hope this gives you some ‘food for thought’. Please Contact us and let us know how we can help you.