Embedded Software Development
Are you developing an electronic product that needs custom software?
Blueberry Consultants’ software expertise includes C and C++ development on popular embedded microprocessors and microcontrollers, like the Atmel AVR series and the Microchip PIC series, and development of embedded PC solutions.
Introduction - Embedded Software Development
Although most of Blueberry’s work is now in .NET / SQL development, the company spent many years working in C++, and the management team all started programming on small microprocessors. This means the management team has experience of working with digital electronics design and embedded software development.
These skills have allowed Blueberry to bid for and win a number of contracts that feature tight integration between software and custom hardware. This includes pure embedded systems programming, using the ‘C’ programming language on small 8-bit processors and larger PC-based control systems - including a large project in secure electronic locking.
We believe that Blueberry’s wide skill base gives us a unique ability to assist clients at all stages and levels of the product development process.
Modern microcontrollers are miracles of engineering – cheap, tiny, low-power and packed with features, they are at the heart of many electronic products.
Programming microcontrollers is arguably simpler than developing business applications because microcontrollers are quite simple devices, and there is no ‘Windows’ or ‘Linux’ to complicate things. But embedded development presents other complexities – frequently, the tools for debugging are limited when compared with business tools, and working directly with hardware components can be quite complex.
The two most popular families of microcontroller are the Atmel AVR range, and the MicroChip Technologies PIC range. Both companies sell many, many different varieties of microcontroller – in fact, there are so many variants that selecting one can be tricky. Blueberry prefers the AVR range, partly because we’ve used it more, and partly because we felt the development tools were better.
Microcontrollers typically include extensive on-chip IO and peripheral devices. For example, the Atmel ATMega16 includes 10 ADC channels, 2 timers, three serial controller varieties and 32 IO pins. These features make it easy to interface these devices to other computers or electronics. Recently, Atmel and Microchip have produced devices with built-in support for various radio network technologies such as Zigbee. These technologies should make it easier to produce new radio-networked products.
Embedded Software Development using PCs
As powerful and versatile as they are, Microcontrollers are not suited to every project. In particular, projects which require high-quality colour LCD displays, or complex data processing are often easier to implement on a more sophisticated platform. And there are hundreds of platforms, each with different levels of functionality and price. At the top-end of the market are variations on the ubiquitous PC, normally in the form of a small-form-factor motherboard, like the VIA EPIA range.
To many purists, PCs are not a good platform for embedded software development – they are poor at real-time responses to external signals, and the operating systems are big and complex. On the other hand, there is the ease of developing more complex code with PCs, and the vast array of free or cheap software. For example, say we want to create a device which reads Gas meters using OCR (something Blueberry has looked at). This is tricky work on a small microcontroller, but more or less trivial on a PC platform, because there is free OCR code available, and PCs work well with USB cameras.
Modern microcontrollers and embedded PCs make it cheaper and easier than ever to develop new electronics projects. Blueberry has the raw programming skills to bring such projects to life - and can also help customers with many other aspects of the product development process.