Embedded design work

Embedded Programming

Introduction

ITDev is expert at developing embedded software and firmware for a range of operating systems, microkernels, microprocessors, microcontrollers and PICs.

Developing on Systems with Low Resources

Embedded systems are often characterised by limited memory and CPU performance. We use the following techniques to develop high quality code efficiently in these situations:

  • We develop unit tests to verify software modules on higher performance machines.
  • We tune code for low memory usage and analyse for memory leaks using tools such as valgrind.
  • We prevent memory leakage by using static allocation if necessary.
  • We use low level languages such as C or assembler for greater control over resource usage.
  • We develop workarounds for any bottlenecks found by performance analysis and tracing.

Real-Time Systems

ITDev has worked on a number of real-time applications, where we performed detailed timing analysis during the systems analysis stage. Timing diagrams and state-transition diagrams are used to document timing constraints. We can choose an appropriate operating system or microkernel for the project based on these investigations. Sometimes this will be a real-time operating system (RTOS). We are then able to develop the software code and the related test harnesses to achieve the required timings and performance.

Typical Languages

  • C / C++
  • NI LabVIEW
  • Assembler

Typical Platforms

  • Intel and AMD PC Processors
  • 8051
  • Xilinx FPGA
  • Xilinx MicroBlaze
  • Motorola 680X0
  • Microchip PICs

Typical Operating Systems

  • Embedded Linux
  • Microsoft Windows XP Embedded
  • Microsoft Windows CE
  • Embedded DOS
  • Microware (RadiSys) OS-9