Software development

We like to think that our collective competence in the field of programming is unique. Our developers have a wealth of experience of working with advanced systems that involve extreme demands in terms of reliability, performance and security.
Of course, we’re comfortable with all the common programming languages such as C, C++, C# and Java. But we also work with those that are less common, such as ADA, Lisp and a number of script languages. Furthermore, we regularly work at the assembly level, typically to locate and fix bugs or optimise performance.

Advice

Apart from design, development and troubleshooting, we also work in an advisory capacity and with board bring-up. For instance, we help our customers to choose the right system and/or CPU architecture.

Since we’re not dependent on any particular manufacturer or supplier, we’re always completely free to choose the solution that suits you best. We have knowledge and experience of most CPU architectures including ARM, Power PC and x86 and of various types of soft processor such as Nios, Leon3 and Microblaze etc.

When it comes to operating systems, we know all about their various advantages and disadvantages. Of course, it might be that the best solution is not having any operating system at all and instead designing ‘bare metal’, as it’s called. We also have an extensive knowledge of most RTOS solutions on the market, whether commercial or open-source.

Regardless of which combination of the above best suits you and your project, our consultants can help you deliver it.

New systems for existing applications

If your current application works as expected but for some reason needs an upgrade or update, we’re happy to help with porting. As part of this service, you can make use of our internal development environment, which is entirely built on open-source. This improves the efficiency of your development, improves quality and minimises bug creation.

Integration of embedded systems

The Internet of Things is based on connecting systems together. This means that a system-wide perspective is becoming more and more important when designing software, so that the various parts of the system can communicate with each other.

This is where our considerable experience of communications protocols comes into play. Regardless of whether these protocols are standard, such as TCP/IP, or proprietary, we can quickly become acquainted with the system. We have great experience of most available communications interfaces, whether wired or wireless. And of course we’ve worked with most of the available interfaces on the market such as USB, Bluetooth and Ethernet, as well as with industrial communications buses such as RS485, CAN and other fieldbuses.

We love open-source!

Many of our projects result in embedded Linux platforms. We often build these from scratch, sometimes with the help, for example, of Yocto, Buildroot or Open Embedded. But we also work with commercial distributions where appropriate.

Our aim is, wherever possible, to use and develop Linux systems which are as close as possible to ‘mainline’ Linux. There are advantages to this in terms of both finance and security. It is also easier to carry out future maintenance and updates, whilst allowing for the secure implementation of functions such as remote upgrade. Other common projects here at RTE include developing U-boot and Android customisations.

Our own development environment is built on open-source tools. This, combined with our considerable Linux experience, means that we’re well aware of those (particularly) important points to be borne in mind when working in or with open-source. One example of this is Emul8, our emulator which has been released as open-source.

Algorithms for image analysis

Do you need to develop, implement or optimise an algorithm, for example, for image analysis? Then you’ve come to the right place. If you need any relevant training or coaching, we’ll arrange that too.