ITDev is expert at developing embedded software and firmware for a range of operating systems, microprocessors and microcontrollers.
We are frequently contracted to implement complex algorithms on embedded targets with strict criteria for performance and timing.
Limited System Resources
Embedded systems are often characterised by limited memory and CPU performance, and may have a requirement for low power consumption. We use various techniques to develop high quality code efficiently in these situations, including:
- Identifying and removing bottlenecks with performance analysis and tracing tools.
- Using low-level languages such as C or assembler for greater control over resource usage.
- Developing unit tests to quickly verify software modules on higher performance machines.
- Tuning code for low memory usage and looking for memory leaks using tools such as Valgrind.
- Preventing memory leakage by using static allocation if necessary (for example in a safety critical application).
Time-Critical Systems
We use timing diagrams and state-transition diagrams to document the timing requirements for applications where precise timing is essential. We can recommend an operating system or microkernel for the project based on this analysis. For real-time applications this might be a Real-Time Operating System (RTOS). We can architect the system, and develop the software code and the related test harnesses to achieve the required timings and performance.
Typical Platforms
- ARM, MIPS, Motorola, ST, TI, Microchip...
- Arduino
- Xilinx MicroBlaze (Softcore Processor)
- Xilinx and Altera FPGA (see Electronics Overview)
Typical Operating Systems
- Embedded Linux
- Android
- FreeRTOS
- μC/OS