Software Development Services

Thinking Binaries Ltd
intelligent software inside



Our main activity is writing embedded software (firmware) for small to medium sized microcontrollers. We also write PC software, but mainly this consists of software build tools, simulation tools, test tools and datalogging tools.

Our smallest projects have been for tiny 8 bit microcontrollers with very limited memory and peripherals, and our largest projects have scaled up to 32 bit processors running within a real time operating system.

Most of the time, our projects split up into a series of iterations of 4 main phases.

DESIGN - a good design leads to a reliable implementation, and we believe that the architecture of software is the most important part of the design. Our software is designed as a set of layers, and the application basically becomes a script running on top of a set of common services. Even on very tiny systems, we have techniques to structure the code in this way such that it is easy to read, and easy to change.

IMPLEMENTATION - most projects are split into a number of small discrete phases with a deliverable of some kind at the end of each phase. RAM and FLASH utilisation are always a major concern, and we have a number of small-footprint coding techniques (with supporting tools) to make everything fit, such that the program is still very easy to read and maintain. We build our own tiny debug facilities into all code, which makes debugging and testing much easier and more predictable.

TEST - testing is a mindset rather than a phase, and testing continues throughout the whole project from the early prototypes through to final deliverables. Our debug agents built into the code allow us to unit test, regression test, and system test using a single consistent interface, and our PC logging and diagnostics tools allow both online and offline analysis of captured logs, making fault diagnosis much more predictable.

TRANSFER - Customers always know when the time is right on the project to transfer ownership of the code and the design. A range of techniques are used, including the design of bespoke training courses, the generation of documentation packs to your requirements, or defined periods of coaching and mentoring of your engineers so they take ownership of the code and can continue to develop and change it as your needs change.

You will notice the absence of a specification phase - typically most of this work tends to be done by the customer, and they come to us with a reasonably clear idea of what they are trying to achieve. However, see also our feasibility study services.

see also: typical project
[protected email - turn on javascript to view]




rapid prototyping, firmware, microcontrollers, small footprint software, wireless, testing, tools