Our customer, for a new product, wanted to reuse an existing, ARM9 based, platform but needed secure communications capabilities (VPN) and printing capabilities, local or remote, while keeping power consumption, the system is powered on batteries.
After a preliminary study, needed due to the board specific power control features (power gating) and low memory capacity available (two 8MB flash chips...), we ported the Linux kernel on the board, extending driver power management and setting up the Linux distribution to fit the very limited memory capacity.
Our customer needed efficient access to IDE and SATA disks while being able to use all standard or extended commands from a specific application that will handle all interactions between Windows and the hard drive.
We therefore created two drivers for direct access to IDE or SATA drives allowing to manually manage disc errors. We also wrote a third driver allowing an application to provide Windows with a standard disk that will use the low-level drivers with advanced application-provided error recovery features.
Our customer produced an innovative touch interface suitable for interfaces projected on any support. He had written a Windows driver but wanted to offer it on Embedded Windows (XP Embedded, Windows Embedded Standard...)
We analyzed the driver to find all its dependencies and created the necessary components for installation in a Windows Embedded platform.