Software Development Services
We provide a software development service for high performance and / or embedded systems. We take pride in delivering code that has a fast execution speed and low memory usage.
Combining FPGA based SoC design, for example using embedded ARM, Nios or Microblaze CPUs, with software development allows the most appropriate resources (hardware or software) to be allocated to individual computational tasks. This can lead to significant improvements in system performance and/or can reduce system BoM cost through the use of lower cost silicon devices.
We are experienced in the following languages:
- C/C++ including Intel IPP
- Python / Numpy
We have experience developing for the following operating systems:
- Linux, uCLinux, Timesys Linux
- FreeRTOS
- VxWorks
- Windows
Our software development generally focuses on fast execution speed and minimal memory requirements. When using Python or Matlab, for example, we make extensive use of back end C which provides fast execution time whilst maintaining the flexibility of the interactive command prompt.
We are experienced in multi-core software using technologies such as OpenMP, and highly parallelised execution using SIMD/SSE/MMX technologies. Using these technologies we generally achieve a significant (over an order of magnitude) speed up over non optimised software.
For embedded systems we can use light weight operating systems such as uCLinux. However, for many embedded applications, it is often simpler and more resource efficient to use no operating system at all. This leads to faster (milliseconds!) boot times and lower memory requirements. We have completed many designs using embedded software without an operating system.
We have experience of using FPGA based embedded CPUs such as the Intel / Altera Nios and Xilinx Microblaze, application processors such as the TI ARM based OMAP series, and TI c66x (c6678) multicore DSPs.