Studying Embedded Systems


OK, so. I want to learn how to program micros, and I’m looking for a micro and associated training material that will:

  • If possible lead to some kind of qualification that I can wave at a future employer
  • Allow home study
  • Use readily available hardware and software
  • Focus on programming in C (employers seem to want this)

Back in the day, pretty much the only way to earn paper qualifications (at least in the UK) was to attend  a college or university in person for a period of several years and hopefully come away with a recognised qualification at the end of it. The one notable exception was the venerable Open University, which was founded in the late 1960s specifically to allow students to follow a non-traditional, distance-learning route to higher education.

Pre-internet, the OU’s material was delivered using a combination of written material, television programs and occasional short residential schools. More recently, delivery methods have also included electronic media such as DVD and delivery over the internet. It’s a great system which has allowed access to higher education for countless thousands of people around the world who otherwise would not have had the opportunity. I studied a single OU module myself in the 1990s (on thermodynamics) and the standard was exceptionally high.

In recent years, more institutions have started offering courses which can be studied by distance-learning. In engineering these range from BTEC HNC level all the way up to MSc and PhD. A couple of examples here and here. Some also allow students to study individual modules from a course as part of a process of Continued Professional Development (CPD).

For my purposes I’m not looking for another full degree or masters course as I don’t want to commit to a likely three or four years of study. Instead I’m after something shorter which still offers some kind of recognised qualification at the end. This does “narrow the field” somewhat, but after a lot of searching I finally hit gold with PGCert option of this course. The University of Leicester’s  Postgraduate Certificate (PGCert) in  Reliable Embedded Systems takes four modules from the MSc program of the same name and lasts for a single year. Study is distance-learning with four one-week residentials and the cost is definitely affordable. Start date is September 2017 and I’ve already confirmed that the course will run this year. Perfect – exactly what I’m looking for! So unless things change significantly between now and September, that’s what I’m going to do.

Of course, that does leave me with eight months or so before September. I already have plans as to what I’m going to do with that time, and yes it does involve micros. More on that next time…


The ARM Business Model

In my previous post (I really have to think of some new ways to start new posts…) I looked at the two main micro architectures – PIC and ARM – and decided on ARM as being the one I would learn. That still leaves a lot of open questions, though, as there are many variations on the ARM architecture. Before I get on to that, however, I need to explain a little about the ARM business model.

ARM, the company, doesn’t actually make physical micros itself. Rather, it produces designs (AKA “IP” for “Intellectual Property”) for the core micro technology which are fabricated by other companies, from that IP, under licence. Each of those companies will add its own flavour of “special sauce” to the basic ARM IP to provide the end user with somewhat customised variants. So a micro based on the ARM “Cortex-M3” technology manufactured by Company A may be quite different from a micro based on the same technology made by Company B, and so on.

To use the car analogy again, it’s a bit like saying that ARM produce the designs or blueprints for engines which are then sold to the car manufacturers who tweak the designs a bit for their own needs, build the engines and install them in the finished vehicles. The key point is that ARM produce the basic designs – the IP – which are then turned into physical micros by other companies. ARM don’t make microcontrollers themselves. This is a very astute business model, as it relieves ARM of the burden of making silicon chips (a complex operation best left to people who specialise in that sort of thing), leaving ARM to concentrate on the thing they’re good at – designing microcontroller technology. This is explained far better on ARM’s website, and in a lot more detail at this link.

Several companies have licensed ARM’s IP for use in their micro product ranges, including Qualcomm/NXP/Freescale, Renesas, ST Microelectronics, Infineon, Texas Instruments, etc., etc., etc. Micros from these manufacturers are freely available for anyone to buy and use in their own finished products. So if I was a company making internet-connected toasters, for instance, it would be perfectly feasible for me to use a micro from one of the companies I’ve just listed in my latest toaster designs.

Incidentally, some of the bigger mobile phone/tablet/gadget manufacturers use ARM-based micros in their products and are big enough to manufacture their own custom versions. These include Apple, Samsung and Microsoft amongst others. These companies don’t, however, make their micros available for other people to use as far as I know. Incidentally, and I’m going off on a bit of a tangent here, if you take a look at this link you can see a summary of (some of) the various different end uses to which ARM IP has been put (right-hand column of the table). Remember me saying that ARM technology is used rather widely? And that list probably isn’t even up to date…

Lots of smartphones in the world, each using one or two ARM micros. That’s a lot of micros.

Anyway, back to the matter in hand… I haven’t counted them, but there are probably several hundred ARM-based micros on the market from the various manufacturers that I listed above plus others. So which to choose?

The point of this exercise is to learn how to program micros, so obviously whichever one I choose has to have some kind of training course or program associated with it – either from its own manufacturer or from a third party. Ideally, that course or program should:

  • If possible lead to some kind of qualification that I can wave at a future employer
  • Allow home study
  • Use readily available hardware and software
  • Focus on programming in C (employers seem to want this)

I think I hear Google calling… More soon!


Reverse job hunting: ARM v PIC

At the end of my previous post I said I would describe the process I used to decide on which micro I was going to learn. Here is the first part of that description.

There are two main “families” of micro – the ARM and PIC families – also frequently referred to as “architectures”. This is a bit like saying there are two main “families” of car – petrol and diesel. They both do the same thing (providing a mode of transportation), and to the user the controls are the same (apart from putting the right fuel in), but what’s going on under the bonnet is quite different.

The main goal of this exercise is to improve my employability and so the most important, top-level question to answer is therefore: what are potential  employers actually looking for – experience of the ARM or PIC architecture? After all, there’s no point investing time and effort in learning about one architecture only to find that employers are generally looking for the other.

To answer the “ARM or PIC” question I used a process that I like to think of as “Reverse Job-Hunting”. To explain what I mean by this, I first need to describe the process of ordinary job-hunting as I see it. This is just my personal view, gained from the experience of being a job-hunter, and doubtless there’s a lot of detail that I’m missing, but just bear with me.

Let’s suppose that an employer finds themselves in the position of needing to recruit a new employee. It’s quite likely that the employer will use the services of one of the specialized recruitment agencies through which almost all recruitment seems to be done these days. The employer will give the agency a job description, details of the experience and qualifications required, etc., and the agency will post the vacancy on its website. A job-hunter will be able to search the agency’s vacancy listings and apply for any positions he or she finds appropriate. With me so far? Good!

This is all done online, and there are agencies servicing many different areas of the job market e.g. technical, creative, managerial, etc., etc. In my case I’m interested in those agencies covering the electronics industry, of which there appear to be approximately 30 or so in the UK.

To answer my ARM or PIC question I can use the system I’ve just described, but this time sort-of in reverse. I pick one of the recruitment agency websites, and enter appropriate terms in their search engine. This could be “microcontroller” for job title and “UK” for location. This returns a list of vacancies for microcontroller-related vacancies in the United Kingdom. At this point, if I was a regular job-hunter, I would start combing through the list and applying for the jobs that I like the look of. In my case, though, I look at each vacancy listing in turn and see whether a preference is given for the ARM or PIC architecture. Do this for a few agencies and I can start to build up picture of what it is that employers are looking for.

Here is the result of just such an exercise, carried out today:Survey graph.jpg

It’s a graph! Of course it’s a graph – I’m an engineer. I like graphs.

Seriously, though, this exercise does highlight a couple of useful things:

  • Out of 65 job vacancy postings, over half did not express a preference for either ARM or PIC and just asked for “microcontroller experience” or some similar phrase.
  • Of those that did express a preference, ARM was more popular by a ratio of 5:1.

OK, so this is a very small, very unscientific survey, but it does indicate this I should focus my efforts in the direction of the ARM architecture.

I’m quite sorry that the Microchip PIC family didn’t fare better as that family do seem to have a huge hobbyist following and a whole universe of third-party learning resources and tutorials. Some years ago I worked through the excellent Gooligum PIC tutorials, and I do recommend these if you are interested in studying the PIC series yourself.

Having decided on the ARM architecture, there are still decisions to be made about which of the many ARM versions to go for. This is a lengthy subject, and one I will return to in my next post. In the meantime, I wish you a happy new year, and thank you for reading!



First blog post!

Hello and welcome to the Learning Micros blog.

This blog will document my attempts to learn about microcontrollers – how they work, how they’re programmed and what they can do.

For brevity, and because I’m a lazy typist, from now on I’ll just use the term “micros” when referring to microcontrollers. Other terms you may see used elsewhere include “MCU” (for Micro Controller Unit), and µC (easily confused with micro-coulomb, a unit of electrical charge), but I won’t be using those terms here unless it’s in reference to someone else’s text.

There are plenty of online descriptions of what micros actually are, and this Wikipedia article gives you one definition which may be helpful if you need it. Without paraphrasing the entire Wikipedia entry, it’s enough for the moment to say that a micro is a small, complete computer on a single silicon chip and that micros are used almost everywhere.

You probably own a fair few micros without even realising it: there will be a couple in your mobile phone, a few in your domestic appliances, perhaps one in your TV and quite a few in your car, to name but a few applications. They are cheap, useful and utterly ubiquitous.

Micros can also form part of an “embedded system”, and again it’s Wikipedia to the rescue for an explanation.  I’ll probably use the term “embedded system” or “embedded programming” as we go along, so best to introduce those phrases now as well.

This is going to be a “warts and all” blog in that some of the things I write might seem dumb or obvious to a more knowledgeable audience. But hey, it’s my blog and my journey, and making mistakes is part of that journey. I may also throw some questions open to my audience (I hope I actually get an audience…) and will be very interested in your views expressed in the “Comments” section.

Now a few words about how I came to be writing this blog…

For the past 20 years or so I was employed in a very specialised segment of the electronics industry. The exact details aren’t really important, but suffice to say the job had little to do with micros or embedded systems. Sadly, a couple of months ago I found myself to no longer be in that job any more.

To be in the position of job-hunting after such a long time was a shock to say the least – the last time I was doing this the internet hadn’t been invented and CVs were written on actual paper and sent through the post!

It didn’t take long for a couple of things to become very much apparent:

  • My current skill-set was extremely specialised, and only directly interesting to a relatively small number of potential employers.
  • I was facing a choice of either relocation or finding a job doing something else.

If I was happy to relocate to “anywhere” then I could probably have two or three interviews a week. For a while I was fielding daily calls from recruiters asking if I would move to: Devon, Portsmouth, North Wales, Colchester, Southern Ireland, Tyneside, the north of Scotland, etc., etc., etc. Whilst I’m sure these are all perfectly nice places, I like where I live now and for various personal reasons I simply cannot relocate. So the prospect of staying put geographically whilst continuing to work in the industry seemed increasingly remote.

It took me a while to realise that there was in fact a third option: re-skill. During my many hours spent job-hunting I had noticed a high demand for people with microcontroller/embedded skills. Was this something I could retrain for? Could I learn micros? Clearly there was no way I was going to be able to compete with people who had many years experience as an embedded software developer, but maybe I could learn enough to at least gain a toe-hold in the field?

As well as possibly helping with my immediate employment difficulties, acquiring some micros skills appealed to me for another reason:

Like many people of “a certain age” my thoughts sometimes turn to old age and retirement. Despite having paid into various pension schemes over the years, I doubt I’ll ever be able to retire with anything like a reasonable standard of living, even if the retirement age is raised above the 70 years they’re starting to talk about now. In short, I expect to be working until the day I’m wheeled out feet-first.

This prospect doesn’t particularly bother me – I think it’s mathematically inevitable given that proportionally fewer people in-work  are paying for proportionally more retirees and the bias is becoming more pronounced as time goes on.  But it does leave me wondering what exactly I could be doing at the age of 65, 70, 75…

I’m pretty sure micros are here to stay, or will at least be around for a very long time to come, and so learning micros is likely to be a good way of “future proofing” myself. Plus I don’t want to be in a similar situation again in a few years time thinking “I really wish I’d done that when I had the chance”.

So taking this into account, my bullet-point list of reasons for wanting to learn micros is as follows:

  • apparent shortage of people with these skills = better and more varied career choice
  • has the potential to keep me in gin and tonic in my old age – future proof!
  • likely to be a fun and interesting challenge
  • Internet of Things!
  • an excuse to learn WordPress

Maybe I’m over-optimistic about just how fun and interesting the micros world is, but if I don’t try going there then I’ll never find out for myself. N’est-ce pas?

Well look at that – 1000 words and I’ve said almost nothing about actually learning micros. I’ll put that right in my next post where I’ll describe the process I followed in deciding which micro I was actually going to learn.