Okay, Freescale, I give up.
The Freescale "Freedom" FRDM-KL25Z boards have a lot going for them.
They're cheap ($13), and sport an ARM Cortex M0+ core in an Arduino-ish
form factor, with a fancy "OpenSDA" USB-based flash/debug thingey bolted
onto the side for user-friendlieness.
Unfortunately.. they botched the execution in many ways; some subtle,
some less so.
Let's start with the first impression. In order to get anything more
useful than marketing materials from Freescale's web site, you have to
register. They then hand this info off to a distributor who proceeds to
email and call you before you have a chance to meaningfully evaluate
anything.
The actual datasheets and programmer manuals were okay; not the worst
I've seen by any means, but not all that great either.
But the software side of things is another story. The only thing they
offer is a ginormous plugin for an obsolete version of Eclipse that
supports all of their microcontrollers... via a code generator.
Theoretically, once you generate that skeleton codebase it's usable
outside of Eclipse.
At least you can extract the not-quite-CMSIS-compliant processor headers
from that morass. But those files say "all rights reserved" which makes
them technically unredistributable. Sigh.
But the best part, the part I spent the last day and a half fighting,
was their "OpenSDA" programming/debugging mechanism.
In theory, it's a smart design -- It presents as a composite USB device
consisting of a serial port and a virtual mass storage device. The
serial port gives you the console, and to program the controller's
flash, you just copy a new firmware image over to the filesystem.
It turns out there's nothing open about it.
OpenSDA is about as proprietary as it gets. To actually use it as a
debugger under Linux you'll need a proprietary 32-bit-only binary
drivers+libraries. That's right, they don't even supply an application
to use it -- even a GDB server will cost you extra.
So it's useless as a debugger. What about as a flasher/programmer? It
fails even more spectacularly there, thanks to it simply not working
under Linux (or even OSX), due to gross violations of the USB mass
storage spec.
In all fairness, they did eventually fix these problems (both in their
bootloader and their flasher "application").. but you'll still need a
native Windows system (not a VM, because their USB enumeration is just
that badly broken) to do the update. Once you have the new application
running, it works well enough, though it doesn't complain if you try to
write something too large.
The one saving grace is that Keil released a firmware file that replaces
the anything-but-OpenSDA "flasher+debugger" with ARM CMSIS-DAP compliant
interface that JustWorks(tm). Unfortunately, it's only usable as a
debugger with the tools I have, so to actually flash an image, you have
switch back to the OpenSDA "applications" -- which, since they pulled
their fixed-for-Linux bootloader, requires a Windows box.
All I want to do is write a "Hello World" program on this thing, and
I've wasted the better part of two days on things that should
JustWork(tm).
So much to "Open" or "Freedom" -- Grand ideals ruined by horrible
execution. Unfortunately, this is the sort of thing I've come to expect
out of Freescale. Every encounter leaves me wanting to bash my head
againt the wall.
A month or so ago
I compared Freescale to someone shooting themselves in both left feet.
Maybe I should add "while running backwards" to that analogy.
In comparison, STMicro's STM32F4DISCOVERY board ($15 with a Cortex-M4!)
isn't without its flaws, but it took less than half an hour to assemble
everything I needed to flash and debug the board, and their
documentation and software samples are comprehensive and excellent.
...It's not much of a race.
Syndicated 2013-09-12 02:56:27 (Updated 2013-11-24 04:11:59) from Solomon Peachy