Embedded Software Colin Walls
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 » Real time operating systems: black box or open source?June 16th, 2020 by Colin Walls
Most of the software that most of us use most of the time is obtained as a binary executable. The program may be run and does what it does, but the user has no knowledge of its inner workings and no opportunity to modify its functionality. And all of this is fine. For example, I am writing this posting on my PC using a Windows program. Later, I will probably review it on my iPad using the corresponding app. The two programs are probably written in different languages by different teams. Do I care? Nope. The important thing to me is the data [my text] and what the software does with it. In the world of embedded software, things are a bit different … Read the rest of Real time operating systems: black box or open source? Multiple constructors in C++May 18th, 2020 by Colin Walls
C++ is effectively a superset of C. As a result, many developers who are learning the language start from the basis of knowing C. This leads to various aspects of the language being rather surprising. One example results in a common question: What is the idea behind the provision of multiple constructors for a class? … Read the rest of Multiple constructors in C++ A hypervisor on a multicore systemApril 16th, 2020 by Colin Walls
Multicore systems may be configured in a number of different ways. An approach that is useful for many embedded applications is Asymmetrical MultiProcessing [AMP], where each CPU runs its own operating system or may no OS at all. A particular facet of interest is the incorporation of a hypervisor in an AMP system … Read the rest of A hypervisor on a multicore system Questions on multicore Linux, DO-178B and RTOS performanceMarch 16th, 2020 by Colin Walls
In many contexts – blog posts, seminars, webinars, via email – I am presented with questions about embedded software matters. I do my best to provide answers to the questioners. However, sometimes I think that the Q&A might have wider interest, so I might publish a few here … Read the rest of Questions on multicore Linux, DO-178B and RTOS performance Multicore systems: heterogenous architectures – untangling the technology and terminologyFebruary 17th, 2020 by Colin Walls
Multicore continues to be a hot topic, as an ever-increasing number of embedded systems are designed with multiple CPUs – most commonly multiple cores on a chip. One of the challenges with understanding multicore is that the term actually covers a number of architectures and approaches to design. Figuring out the terminology is the first challenge … Read the rest of Multicore systems: heterogenous architectures – untangling the technology and terminology struct vs class in C++January 15th, 2020 by Colin Walls
A common question about C++: how does a struct differ from a class in C++? … I will start by defining a struct in C. I would see it as a customized, composite data type, which may be constructed from the existing built-in data types [int, char, etc.], bit fields [integers of specified bit size] and other structures… Read the rest of struct vs class in C++ Problems with pointers: out of scope, out of mindDecember 16th, 2019 by Colin Walls
There is sometimes a little confusion about the difference between the scope of a variable/object and its actual existence. For “existence”, read “validity” because the memory occupied by a variable never goes away; the time at which the memory is actually allocated to the variable varies … Read the rest of Problems with pointers: out of scope, out of mind Exception handling in C++November 18th, 2019 by Colin Walls
Various aspects of the C++ language concern embedded software engineers, and a particular one is exception handling … Read the rest of Exception handling in C++ Dynamic memory in real time systems – a solution?October 16th, 2019 by Colin Walls
In C code, variables can be declared in a couple of ways. They might be static, so they are allocated a specific address in memory; this is the case for variables defined outside of functions or inside a function and qualified with the keyword static. Alternatively, a variable might be automatic, which means that it is allocated space on the stack or in a register for the duration of its scope [or, more precisely, its lifetime]. Another possibility is to dynamically allocate memory using the standard library functions … Read the rest of Dynamic memory in real time systems – a solution? Selecting a CPUSeptember 16th, 2019 by Colin Walls
You might question why, in a blog that is supposed to be about embedded software, I am considering the selection of an embedded CPU, which is clearly a hardware matter. It would be a fair question, except that, in embedded system design, the development of hardware and software are inextricably entwined, each having an influence on the other. So, how do software considerations affect the selection of a CPU? … Read the rest of Selecting a CPU |