Device driver development
What is a device driver?
A device driver is a piece of software that controls (or drives) a specific piece of computer hardware. This allows the hardware to operate in the context of a computer system. On the one hand a driver will interact with whatever hardware interface the hardware provides. On the other, a driver will present an abstraction of the device to the Operating System or application software. This allows application software to utilise the hardware in a much easier way than would otherwise be the case.
The main challenges of driver development

Implementation
Device drivers are closely tied not only to the specific hardware that they are controlling, but also the operating system and the computer system they are required to work with. This means that a lot of knowledge is required in order to write good device driver software.

Robustness
Since device drivers need to access low level hardware, they often operate at a very high level of privilege, within the Operating System. This places a very high responsibility on the software engineer to ensure that device drivers are extremely robust.

Data coherency & integrity
Depending to some extent on the Operating System in use, device drivers may have to deal not only with requests from application code but also external hardware events, often notified by means of an interrupt to the processor which is then dispatched by the OS to the device driver to deal with.
Key elements to consider for device driver development
Hardware knowledge
It is essential to have full details of the hardware the device driver is going to control. This is normally available from the manufacturer in the form of a data sheet. In addition a good level of general hardware and architecture knowledge is essential.
OS Concepts
Device drivers usually work very closely with an Operating System. Device driver writers must have an intimate knowledge of Operating System concepts including the specific Operating System being targeted and the driver frameworks it provides.
Debugging Tools
As a result of the privileged environment in which device drivers operate, they can often be harder to debug when things don’t work as expected. Therefore it helps to have good debugging skills. Sometimes the OS will provide a range of debugging aids but being able to improvise is essential.
SUCCESS STORY
Optimizing the application and driver stacks of Firstkind medical equipment
Firstkind contacted Witekio for help with an application that was multiplexing four UART channels onto a single CAN bus and vice versa. The application was unreliable and suffering from buffer overrun even under light data loading. It was not robust. The solution was to modify the application and driver stacks to operate more efficiently utilising DMA and more efficient interrupt handling. The result was that the system is now capable of operating continuously under heavy data loads without a single error.
we've been developing drivers for decades
Witekio have several highly skilled Software Engineers who are able to work with device drivers under a number of different operating systems (OS).

Your trusted embedded software, application and connectivity partner
4 Countries
4 countries
ISO 27001 certified
ISO 27001 certified
