Skip to main content
Software Engineering

Embedded software

We’ve been developing embedded software as part of our multidisciplinary offer for over 40 years. We’ve seen a lot of changes over this time, including technological improvements in what microcontrollers can do, development improvements in what design tools can provide, and application trends in what clients are asking for from embedded systems.

With our broad experience in solving complex problems with embedded software, we can help you tackle the widest range of challenges. Whether it’s a tiny, self-contained system or a full-blown connected product, we can use our knowledge and insights to develop the best solution for your specific requirements.

We can help you tackle the widest range of challenges

Low power software

Products are becoming increasingly small and complex, and often need to run off a small, non-rechargeable battery, such as a coin cell, that may not be replaceable during the product’s lifetime. While our electronic engineering team can design circuitry to minimise the power consumption of the hardware, there is a separate area of expertise in doing the same for the software.

Working with microcontroller low power modes, optimising algorithms for power consumption and balancing connectivity throughput with its demands on the battery are our bread and butter. We are accustomed to modelling, measuring and analysing power consumption from a software perspective and providing solutions that meet very challenging power requirements.

Bare metal vs RTOS

Given the capability of most microcontrollers these days and the advanced features of many development environments, it could be tempting to use Real-Time Operating Systems (RTOS) for any application. The challenges of correct task prioritisation are outweighed by the convenience of many of the vendor-supplied or open-source systems handling much of the underlying process, and by the sheer speed of modern microcontrollers. Some applications such as Bluetooth connectivity may even require an RTOS to function correctly.

However, in applications where the explicit workings of the device need to be understood, documented and testable, particularly in safety-critical applications, there may be more benefits in a bare metal approach. Being in control of the exact behaviour leads to a safer application, where error conditions and potential failure modes can be handled directly. Also, for low power applications, complete control via a bare metal approach can provide power savings that might not be possible with an RTOS.

Depending on the application, a combination of bare metal and RTOS may be beneficial to balance the requirements of safety and usability. We are used to working with both bare metal and RTOS approaches and have extensive experience in combining the two, leveraging the best of both worlds.

A combination may be beneficial to balance the requirements of safety and usability

Communications

Embedded software is very rarely limited to the bounds of the microcontroller these days. There are often external components such as real-time clocks, sensors and other processors that need to be interfaced with via communications protocols such as I2C, SPI and UART. There are also often requirements to communicate with external systems using Bluetooth Low Energy, LoRaWAN, NFC or proprietary client protocols.

At DCA, we work with these existing protocols but can also provide application layer protocols to go on top of these. For example, a specific exchange of information or credentials may need a unique procedure to reduce cybersecurity risks. We can work with you and your other suppliers to develop protocols that meet such requirements without adversely impacting the usability of your product.