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…
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!