Colin Walls has over thirty years experience in the electronics industry, largely dedicated to embedded software. A frequent presenter at conferences and seminars and author of numerous technical articles and two books on embedded software, Colin is an embedded software technologist with Mentor … More »
November 15th, 2017 by Colin Walls
Not so long ago, I was having some trouble with my Internet connection. I will probably never know exactly what was wrong (as broadband is, for intents and purposes, magic), but investigating the problem was interesting. I am not a networking specialist, so I would expect that messing with the settings inside a router would be hard, but the manufacturers have made it very simple.
I began to wonder why there are not many devices that work in the same way … Read the rest of Who needs a Web server?
October 16th, 2017 by Colin Walls
I have historically been somewhat skeptical about open source software (OSS). I am always wary of anything that is “free” and subscribe to the TANSTAAFL (“there ain’t no such thing as a free lunch”) principle. It has taken me quite a few years to understand that open software is not free – it is just a different business model from the usual “we make it, you buy it” approach.
I am only now coming to grips with how the OSS model really works, why it is a good thing and how business can leverage it to mutual benefit … Read the rest of In an open-source world, it’s all about integration
September 18th, 2017 by Colin Walls
Somebody asked me: “What is the plural of Linux?” Maybe it is Linuxes. That sounds a bit messy, which seems rather appropriate really… Read the rest of What about embedded Linux?
August 15th, 2017 by Colin Walls
It is interesting how different parts of my life intersect with one another. I am thinking of my working life in embedded software and an aspect of my personal life: my lifelong interest in photography. Years ago, they were very separate activities, but the move from film to digital has brought them closer together.
A particular incident occurred recently that raised interesting questions about the value of software … Read the rest of The value of software
July 17th, 2017 by Colin Walls
For a software developer, the idea of a library is quite simple: It is a file containing a (typically large) number of functions/procedures/subroutines in a special format. At link time, the linker looks in the library (or there may well be more than one, in which case it checks each in turn) to resolve any references to functions not satisfied by the supplied object modules. This means that the programmer just needs to reference commonly used functions and their code is pulled in automatically.
Of course, it is not quite that simple. Also, as with most aspects of embedded programming, libraries present more challenges and options to developers … Read the rest of C libraries
June 12th, 2017 by Colin Walls
I am not a networking specialist. If you are an expert in this area, this posting will be teaching a grandmother to suck eggs (strange expression – I wonder what it actually means). Obviously, over years of working with embedded systems, I have learned quite a lot about protocols, so learning about a new one is not starting from scratch. For many, networking begins and ends with TCP/IP. However, there are lots of other Internet protocols – FTP, UDP and HTTP, for example. There are also other kinds of connectivity that may or may not be thought of as networking – Wi-Fi, Bluetooth and USB, for example.
It was while studying the operation of the last of these, USB, that I came across a technique that was familiar in form, but unfamiliar in application: bit stuffing … Read the rest of Stuffing bits
May 15th, 2017 by Colin Walls
Embedded software development tools are important to all developers and a topic that I frequently discuss. The way such tools are described by vendors is interesting. For example, there might be a reference to an “optimizing compiler”. That is rather meaningless, as all compilers are optimizing to at least some degree. For an embedded compiler, the important factors are the quality of optimization and, more importantly, the degree of control that the user can apply.
Another interesting terminological issue is applied to debuggers and trace tools. They are commonly referred to as “non-intrusive” … Read the rest of Software instrumentation
April 18th, 2017 by Colin Walls
All my working life, I have had a challenge with explaining to people what I actually do for a job. It all starts with defining what is an embedded system. This is by no means easy. I thought that this might become simpler over time, as embedded systems become even more ubiquitous, but the reverse is true. The definition is getting even fuzzier.
It has reached a point where software engineers do not necessarily know whether they are working on embedded systems or not … Read the rest of Monolithic or not
March 15th, 2017 by Colin Walls
I have frequently made the observation that a key difference between embedded and desktop system programming is variability: every Windows PC is essentially the same, whereas every embedded system is different. There are a number of implications of this variability: tools need to be more sophisticated and flexible; programmers need to be ready to accommodate the specific requirements of their system; standard programming languages are mostly non-ideal for the job.
I have written on a number of occasions about the non-ideal nature of standard programming languages for embedded applications. A specific aspect that can give trouble is control of optimization … Read the rest of Get packing
February 16th, 2017 by Colin Walls
A significant factor in getting any job done properly is having the right tools. This is true whether you are building a kitchen, fixing your car or developing embedded software. Of course, it is the last of these that I am interested in here. I have been evangelizing on this topic for years (decades!). The problem is that there is a similarity – arguably superficial – between programming an embedded system and programming a desktop computer. The same (kind of) languages are used and software design techniques are fairly universal. However, there are really some major differences … Read the rest of Embedded tools – the third way