The earliest known aerial photograph was taken from a tethered balloon in France in 1858. After that, kites, rockets and even pigeons were used to carry cameras aloft.
With the advent of more manoeuvrable fixed-wing aircraft during the early years of the 20th century, the field of aerial reconnaissance and surveillance really began to develop, and it became an essential tool for mapping, surveying, and battlefield surveillance in the years that followed.
Moving forward to the 21st century now, and our client – a leading supplier of graphics and video display systems used in avionics, radar and surveillance applications.
Our client developed a new high-definition MPEG4/H.264 video compression and capture (VC&C) card based around a custom ASIC.
The VC&C card was initially developed on a VxWorks system.
In order to allow the card to be deployed in a wider range of applications, most notably on Linux and Windows platforms, our client needed their driver and video application frameworks ported to Linux and Microsoft Windows, and the accompanying device drivers developed for each new platform.
As our client’s own embedded software engineering team was already fully deployed, they engaged us to port the application frameworks and to develop the Linux and Microsoft Windows device drivers.
First, we had to define the project requirements and acceptance criteria. We used the existing VxWorks device driver as a reference, i.e. the new ported software and drivers must provide the same features as the original on the VxWorks platform, and they must perform to an equivalent level.
The project was split into two phases.
In the first phase, we carried out the port and driver development for the mainstream x86/x64 Linux kernel, since this platform was most similar to the original VxWorks.
In the second phase, we carried out the port and driver development for Microsoft Windows.
We maintained weekly communication with our client and agreed to deliver a documented and verified driver at the end of each project phase.
We carried out the development in an iterative and agile way, initially implementing the basic card identification and device tree entry, and then building out the requirements, feature by feature.
We verified the resulting drivers and ported frameworks using a suite of different high-definition video sources and displays over an internal laboratory Ethernet network.
Phase One – Linux Platform
We carried out the GNU/Linux port on a high-performance HP Compaq Workstation running the Canonical Ubuntu 9.10 GNU/Linux distribution.
Our approach to the framework porting activity meant that the source packages would be portable across pretty much all GNU/Linux distributions.
The device driver development was targeted at the official Torvalds’ Linux kernel source tree and carried out to the standard kernel development model.
Phase Two – Windows Platform
We used a high-performance HP Compaq Workstation running both Windows 32-bit and Windows 64-bit in order to carry out the Windows port.
Our approach to the framework porting activity meant that the binary packages would be portable across both 32-bit and 64-bit targets and should remain compatible with future Windows versions.
The device driver development was carried out using the Windows Device Framework (WDF) and Visual Studio and because of this, should remain compatible with future Windows versions.
We verified the embedded software on a private laboratory Ethernet network using RDP and VNC protocols to relay compressed and uncompressed streams, and by performing simultaneous compression and decompression on our client’s card.
Our experience with multi-platform device driver development reduced risk on the project. We ensured that the common framework elements, e.g. the operating system extraction layer, were developed with a minimum of complexity and to maximise performance.
Likewise, we were able to ensure the delivered software would support future Linux and Windows platform changes with little if any maintenance.
Most importantly, though – we have the skills to take on challenging video-related framework and driver development projects, which meant that our client had their Linux and Windows platforms available and verified much faster than if they had scheduled the work in-house.