Back to work

Custom Linux device driver development

products ALT

Linux Device Drivers

We were contacted by Raymarine, a UK company building specialist marine electronics products, to develop Linux device drivers for a new product family.

The product family was based on a Freescale i.MX31 ARM CPU connected to several external devices, some via a custom FPGA. Linux drivers were not available for the devices, so drivers were to be written from scratch.

The kernel and core Linux components were provided in an SDK from Freescale.

Define, design

When discussing the project with the client, we quickly recognised a need to help them transition from an RTOS-based development model to an Embedded Linux environment.

To help aid the transition we opted to provide a C-based userspace API to the new device drivers, hiding the complexity of each kernel device driver from the application.

The goal was to allow the client's development team to concentrate on their application, leaving us to worry about the low level Linux bits.

Implement, test

Working closely with the client's hardware engineers, we implemented the project off-site using prototype hardware.

We delivered each device driver with an accompanying C library, exposing a simple API for application use. We also provided simple command-line test applications to demonstrate the use of each API.


The delivery included source code for the device drivers themselves, the C libraries, and test applications, together with makefiles and developer documentation.