Embedded Software By Think Radio

Think Radio is probably about 50/50 on electronics and embedded code. In practice the time spent on each is probably more like 80/20 embedded-code/electronics.

But that’s because of the nature of modern digital devices, where most of the embedded code development occurs on manufacturer-supplied development boards, and once the real target hardware is available, that most-stuff-works-first-time hardware is a realistic expectation of board bring-up, with as many as possible remaining design issues solved in firmware, until a board re-spin becomes the better option.

Compilers, Segger Embedded Studio

At the heart of developing any embedded system* are the firmware compilation tools that translate the high level instructions ultimately into binary instructions in the flash memory chips.

The price, quality and support available for these tools, are a key factor into the choice of technology.

The big names in ARM compilation tools are KEIL, Segger, and the open-source GNU tools.

For the Nordic Semiconductor range of microcontrollers Segger offer their commercial-grade Embedded Studio tools on a free and unlimited basis. KEIL limit free of charge usage of their tools to 32K binaries.

Licence costs may be prohibitive for smaller businesses.

(*embedded systems are microprocessors or microcontrollers that run code compiled elsewhere, and then downloaded to it).

Repositories, GIT

The heart of any software development process is the repository, where every step of the development process can be tracked. GIT currently offers free usage, and all your project materials will be transferred to you. If you’re not currently using GIT, everything will be set up for you.

Debugging. Segger Real Time Tracing

Essential parts of the development process is being able to TEST what has been made (ideally without having to halt a running device). This is both to find and correct design errors during the development process, AND can be extended to provide a means to test individual product items are working as they roll off the production line.

Although sampling from the production line is useful, it is better if diagnostics are built into every product item, and the device is able to report its state of health immediately on first boot.

Various approaches to debugging and test have been used, but Segger’s Real Time Tracing (Segger RTT) is a significant step forward allowing very detailed data to be output from a running device, with no impact on performance. This is a real bonus, particularly for products with fast radio communications.


It’s the reality of sophisticated modern-day microcontrollers that they have design defects. Chips come with a manufacturers-supplied list of design defects, and (where possible) workarounds.

Of course there will be more defects, which the manufacturer may not yet be aware. This is where engineers really earn their keep, identifying unknown hardware defects, and finding solutions. Very few engineering problems are truly unsolvable, but some are uneconomic to solve.

Very Obscure Bugs

It happens, it’s maddening, and it can turn out to be very expensive, either in delayed delivery, or even worse, fixing up products already supplied to customers.


Porting is taking code that runs on existing hardware, and getting it to run correctly on new hardware. That can be as simple as an upgraded part from the same manufacturer, to only re-using the original algorithms in an all new design.

Free and Open-source ware porting

Through various companies, both as an employee and a contractor, I’ve contributed a port to Symbian OS of STLPort, and added a number of enhancements to eCos, including audio drivers (UDA1341) and porting a journaling flash file system (JFFS).