Open side-bar Menu
 Embedded Software

Author Archive

The value of software

Tuesday, August 15th, 2017

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 … (more…)

C libraries

Monday, July 17th, 2017

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 … (more…)

Stuffing bits

Monday, June 12th, 2017

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 … (more…)

Software instrumentation

Monday, May 15th, 2017

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” … (more…)

Monolithic or not

Tuesday, April 18th, 2017

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 … (more…)

Get packing

Wednesday, March 15th, 2017

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 … (more…)

Embedded tools – the third way

Thursday, February 16th, 2017

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 … (more…)

OS migration

Monday, January 16th, 2017

I have often talked about the process that might be applied to the selection of an embedded operating system and I hope that I can provide some guidance. However, developers tend to stick with a specific OS [or, at least, with a particular OS vendor] – recent research suggested that only about 20% of developers anticipated a change of OS for their next project.

I started thinking about why there is this apparently high degree of loyalty … (more…)

Memory signature

Thursday, December 15th, 2016

I am often asked questions about embedded software. Sometimes they are complex; other times they are simple. But frequently, the simplest ones are what leads to an interesting train of thought. The one that set my brain working recently was something like this: “I have some non-volatile memory in my design, which is used to retain specific parameters through power cycling. The first time the device is used, the memory contains garbage and needs to be initialized. When the software starts up, how can I detect that this is the first time it has executed and an initialization sequence needs to be run?”

My first thought was to suggest that simple inspection of the data would show whether it was valid or not. In some applications, that would certainly be true. In others, perfectly valid data could look like a jumble of ones and zeros. There must a be simple, reliable way to make it clear that the memory/data has been initialized … (more…)

Choosing an embedded operating system

Tuesday, November 15th, 2016

I was recently approached for help by a Mentor Graphics customer, who was planning a new project and needed to select an operating system. They wanted guidance with that choice. Of course, one is tempted to say that it does not matter which of our products they chose (as, between them, Nucleus RTOS and Mentor Embedded Linux do cover most possibilities), but I felt they needed something more objective.

There is actually a huge choice. Given that it is decided to purchase an OS, instead of developing something in-house (an expensive option which rarely makes sense), there is the choice between the “heavyweight” OSes, like Windows CE and various flavors of Linux, and around 200 other, mostly real time (RTOS), products. What the customer was after was a simple decision driven process, like a flowchart … (more…)

S2C: FPGA Base prototyping- Download white paper
TrueCircuits: IoTPLL



Internet Business Systems © 2017 Internet Business Systems, Inc.
25 North 14th Steet, Suite 710, San Jose, CA 95112
+1 (408) 882-6554 — Contact Us, or visit our other sites:
TechJobsCafe - Technical Jobs and Resumes EDACafe - Electronic Design Automation GISCafe - Geographical Information Services  MCADCafe - Mechanical Design and Engineering ShareCG - Share Computer Graphic (CG) Animation, 3D Art and 3D Models
  Privacy Policy