More Than Just A Hobby
Whilst I have been playing (and I can’t think of a better word) with microcontrollers on and off for a few years, as I am beginning to incorporate
custom embedded hardware design into my business, I have had to start
re-evaluating both the parts I use and the tools with which I develop
the necessary firmware.
Nearly seven years ago – when this was very much a hobby – I
wrote in this journal of my plans to evaluate different families and manufacturers of 8-bit microcontrollers. The first part of my evaluation was
to look at the sampling performance of the shortlisted manufacturers.
My report on this attracted a response from Freescale Semiconductor
and it is that response, the ongoing correspondence and support that
came from it, that has made me comfortable with my decision that
Freescale parts will be specified first in the designs for my major projects.
The Other Contenders
It’s not going to be Freescale all the way. For one, I don’t think that
vendor lock-in is wise in any business, but the main reason is that I just
want to have experience with other families of devices.
Up to this point, just about all the work I have done has been with
Atmel AVR parts. AVR has an excellent Open Source toolchain
but, otherwise, I don’t really seen any particular advantages. I think
that I have only persisted with them to date is because any other family
presents a learning curve, and I have a few parts to hand looking for
From a commercial perspective, the fact that the
ATMega128 costs twice as much from my distributor (Element 14) as
does the very similarly specified Freescale MC90S08AC128 makes me wonder
whether I have been working with AVR only on the strength of said
toolchain. (Although the AVR community, particularly
AVR Freaks, is pretty good.)
I have a design which I have built (but not programmed) with AVR parts –
but this will be my last, other than quick “junk box” projects.
The Texas Instruments MSP430 range of 16-bit devices has much to recommend it,
and I will be using it in my Solstice Clock project, when I finally have the time to get back to it. I am drawn
to this line partly by the excellent low-power performance of these devices – and thus suitability for running for long periods of battery – the excellent
and inexpensive, nay, dirt-cheap, LaunchPad development board, which can also serve as a
JTAG programmer for other devices and other low-cost and interesting
development products, such as the very hackable
EZ430 Chronos sports watch.
Last, but not least, it was the book MSP430 Microcontroller Basics by John H. Davies that sold me on the line. It’s possibly the best-written
microcontroller book I have ever read, and gave me more than a few
‘Eureka’ moments on concepts with which I had formerly struggled.
The let-down of MSP430 is that the development tools provided by TI are Windows-only. To run anything on Linux, I need to use GCC for MSP430 – not an issue. However, the mspdebug tool,
which is required to – via the LaunchPad – programme devices, does not
keep pace well with new parts, making development on Linux a tricky affair.
I still have Dallas samples of 8052-based devices. I will be using these
more for my own education than anything, because not having worked with
anything from the 8051 family is a bit like studying English literature
without including Shakespeare.
And The Winner Is Freescale Semiconductor
Why Freescale? If I consider the entire product range, rather than
just microcontrollers, my reason for going the Freescale route may be
- A very broad range of microcontrollers.
- CodeWarrior – an IDE which actually runs natively on Linux which
covers everything from simple 8-bit HCS08 up to the 32-bit
Kinetis (ARM Cortex M4) parts.
- A very interesting range of digitally-interfaced sensors.
- Very important: the exceptional level of
support that I have received from Freescale, despite my being a
one-man operation, and even when I was really just in hobby-mode.
The Kinetis samples I was given recently only being the latest part
of this – and I can’t wait to get board designed for them.
For the time being, I will be working with HCS08 devices for my main projects,
with some stuff brewing in the background based on the Kinetis ARM parts –
the mixed-signal capabilities of which I am planning to incorporate into
Whilst in hobby-mode, I have always tried to use only Open Source tools,
for reasons of cost as much as anything. When I first started looking at
Freescale devices, all those years ago, my only feasible tool option was
SDCC – and whatever programming
tool was available then. CodeWarrior was a Windows-only affair, and thus
out of the question.
Re-visiting now, I am delighted to find that CodeWarrior is now Eclipse-based, and will run under Linux natively. Whilst there was a time when
I was all about idealism (using Open Source,) I have become somewhat more
pragmatic with age, and now focus on task completion rather than noble
causes. CodeWarrior looks like it will do the job for me, both with
HCS08 and Kinetis parts. The free version is code-size restricted – if that
becomes an issue, I will buy an appropriate license – if I am ever able
to figure out all the licensing options and what exactly they entail. (Black
mark there, guys.) I have already been down this route with the Cadsoft
Eagle PCB design software, and feel quite comfortable with paying for
these things, albeit somewhat lighter in the wallet regions. This is,
after all, business – and I am sure that the time that I save using
a development environment tailored for the parts I am using should more
than recompense me for the financial outlay.
It is the merits of a broad choice of products, a single development
environment that takes care of all those in which I am interested and – above
all – the peace of mind that there is a Big Company that gives a damn
about the small operator that has created my brand loyalty for Freescale
Semiconductor. 2012 will see the development of systems for one project,
already underway, using HCS08 parts and some interesting designs I have in
mind for my precious Kinetis parts – finally I can get my hands dirty
with some ARM!