Edward Swierk

CodeWarrior frustration

Discussion created by Edward Swierk on Mar 2, 2007
Latest reply on Jun 17, 2008 by Aaron Lager
This message is a bit of a rant, but I hope you will forgive the tone and consider it constructive feedback.

I'm an engineer working for a company developing products using Freescale's 32-bit embedded PowerPC processors. My job is to get our Linux-based software running on the evaluation board in preparation for the arrival of our own prototype hardware. I'm using an evaluation board from Embedded Planet and the USB TAP interface from Freescale. As far as I can tell, both are very nicely designed pieces of hardware.

Unfortunately, a major obstacle stands between me and that goal, and its name is CodeWarrior.

The _only_ thing I need CodeWarrior to do is to let me transfer code from my laptop to the flash memory on the board via the USB TAP. One would think the only software necessary for such a task is some sort of file transfer utility. But as the name implies, the CodeWarrior USB TAP can only be controlled from within the CodeWarrior IDE.

-> Why must I install an entire graphical integrated development environment, if all I want to do is transfer a file? I already have a great set of development tools: a text editor, a debugger, a gcc toolchain, a make program, a kernel, a boot loader. I do not want to switch to CodeWarrior, and every minute I'm forced to deal with extraneous tools is a minute (or hour, or day) wasted.

So I hold my nose and open up the CodeWarrior CD package. Now I've got to choose between a CD labeled CodeWarrior Development Studio PowerPC ISA Edition for Comm Processors v8.6 and one labeled CodeWarrior Development Studio for PowerPC ISA Linux Platform/Application Edition v2.6.

-> Put yourself into the shoes of a new user. Do all those extra words give you any clue whatsoever as to the purpose of the CD?

I pop in the first CD, which I'll call CWDSPIEfCP for short. Whoops, I'm running Linux, and all I see are .exe's!

-> If you ship two versions of CodeWarrior, one for Windows and one for Linux, and you aren't bashful about lengthy product names, why not include the word "Windows" somewhere in the name of the Windows version?

So I try the second CD, CWDSfPILP/AE. This one is indeed what I'm looking for. I run the installation program, which grinds away for a while and then informs me it's looking for a Java Virtual Machine.

-> Why in the name of all that is good and right do I need a Java Virtual Machine to copy a bunch of files from the CD to /usr/local/Freescale? Even the Sun Java Virtual Machine itself, certainly not a trivial piece of software, can be installed using rpm!

I wade through the very Windowsy installer, answering mandatory yet irrelevant questions like which gcc toolchain do I want (already got one, thanks!), and finally get around to running CodeWarrior. After a little bit of sleuthing I discover that the program I need to run is /usr/local/Freescale/CodeWarriorIDE/CodeWarrior/CodeWarrior_IDE.

-> The single most important file among the thousands I just installed (not counting the useless toolchain) ought to live in the top-level directory, not buried three levels deep.

-> Typing /usr/local/Freescale/CodeWarriorIDE/CodeWarrior/CodeWarrior_IDE should have the same effect as first cd'ing to /usr/local/Freescale/CodeWarriorIDE/CodeWarrior and then typing ./CodeWarrior_IDE. It should not simply crash complaining about a missing shared library called libxerces-c.so.22.

I run CodeWarrior_IDE, and here the real fun begins: a dialog box pops up (complete with cool retro 1984 Macintosh font) scolding me about a missing license key and telling me to follow the instructions on the registration card. When I click OK, the program dumps a backtrace.

I dig the registration card out of the box (which helpfully suggests registering the product "immediately, or within 15 days" ) and am again stumped: I'm told to "enter the registration code from this registration card" into the form on the web site. Guess what: the space under the words "Your registration number" is blank.

-> What is the point of a registration card that does not include a registration number?

The card also suggests that I email license@freescale.com if I have any questions about registration or activation (those aren't the same thing?). Well, I really do want to get some work done _now_, not in a day or three, so I try my luck on the web site instead.

I go to freescale.com/cwregister, click Registration and Activation, and enter the Registration and Licensing System. There I'm prompted for a Product or Support Registration Code. (Would that be the same as the registration number that wasn't printed on the card?) I don't have one of those, so I click Need to Register an Evaluation instead.

Now I'm presented with a list of eight Available Evaluations with similar but equally incomprehensible names, none of which matches CWDSfPILP/AE exactly. CodeWarrior for PPC ISA, Linux Application Edition Host sounds close enough, so I click that one, take a brief detour through creating a Freescale username and password, and finally am told to expect an email with an activation code shortly.

When I receive that email, I follow the instructions, which take me on another journey through the Freescale web site, this time copying the authorization code from the email into a web form.

-> If you generate a random 25-character code and email it to me, why do I then have to immediately regurgitate it to you? Couldn't you just remember it for me? Is my time really less valuable than your disk space?

Now I get to choose what kind of Node Lock ID I want: Ethernet Address, Solaris HostID, Dongle ID, or Disk ID. I'm not running Solaris, my disk doesn't have an ID, I don't even want to know what a dongle is, and "None of the Above" is not among the choices, so I choose Ethernet Address. I copy and paste the MAC address from my Ethernet configuration to the field and click Continue. The site promptly barks at me for leaving colons in the address, so I carefully delete each one and try again.

-> Text entry fields for phone numbers, IP addresses, MAC addresses and the like should be intelligent enough to handle spaces, dashes and colons. Come on, this is 2007!

-> If my laptop crashes and I have to switch to another one with a different MAC address, I get to go through this whole process again? I'd better guard my laptop like my first-born.

Finally the web site provides what I need: a license file. Unfortunately the file's contents are embedded right there in the page text; there's no link I can click on to download it. And there's no hint of where I'm actually supposed to put the file. So I copy and paste the contents to /usr/local/Freescale/CodeWarriorIDE/license.dat, and try running CodeWarrior. Nope, still no valid license. But now I notice that farther up in the backtrace is the full path of the license file it's expecting, so I move the file to /usr/local/Freescale/CodeWarriorIDE/CodeWarrior/license.dat, and try once more.

Victory! The IDE starts!

Well, not quite. Now I copy a bunch of board-specific files from another CD from Embedded Planet to the CodeWarrior tree. This itself was an involved process, but I won't get into it here.

I plug in the USB TAP, configure the Flash Programmer settings in CodeWarrior, and try a simple flash operation: computing the checksum of a region of flash memory on the board.

I click Calculate Checksum, the LEDs on the USB TAP start blinking very encouragingly. But then, another dialog box: "Unable to use the plugin 'EPPC Flash Programming'. It is licensed and a valid license key was not found."

You've _got_ to be kidding.

After hours of struggling with registrations and activations and licenses, I'm still not worthy to program the flash on my own board. Time to email license@metrowerks.com, switch off the computer, and go to bed.

If you've read this far, I congratulate you on your stamina and hope you at least found it entertaining. If you work for Freescale, please take some time to consider this:

-> If a person goes to the trouble of purchasing a Freescale evaluation board, odds are pretty good that he will want to use the CodeWarrior software that the vendor helpfully includes with it. If a person has not purchased a Freescale evaluation board, the chances that a person will want to use CodeWarrior are essentially zero. Therefore, forcing CodeWarrior users to get a PhD in Freescale Licensing solves a problem that does not exist--criminals trading bootleg copies of CodeWarrior--and punishes your actual customers.

-> Please, please, please: stop hurting your customers. We're only trying to use your really cool hardware products, and even help you sell lots more of them. We are not criminals. Our time is valuable, so stop wasting it.

I just hope I can get that flash programmed tomorrow, or next week maybe.