Sunday, January 18, 2009

Is the Freescale ecosystem healthy?

I'm a bit worried about it.

It seems that Freescale or P&E Micro are intentionally hobbling the USB-BDM interfaces on Freescale's DEMO boards, forcing people to buy development hardware that they don't need - like an external USB-Multilink.

One of Freescale's avowed core values is "to be the most ethical company in the business". I think they have some self-reflection to do here, and in fact I think the user community needs to take them to task.

Folks in the ARM world crow about the "ARM ecosystem" and how wonderful it is to have multiple chip, development board, and software tool vendors. It was something that attracted me to the ARM architecture for a long time.

The 8-bit world is different. Except for the 8051, the popular 8-bit architectures - HC08, PIC, AVR - are single-sourced. Every architecture has a development tool story as well. Except for AVR, there are few to no free tools for the 8-bit chips.

In the Freescale world, people pretty much use CodeWarrior (CW) exclusively, and it's easy to buy relatively inexpensive ($50 to 100) "demo" boards from Freescale to try out a chip family. There is a free version of CW, but it is limited in the code size that it will compile. That's another story, and it deserves its own post.

I found out about this "hardware hobbling" by doing some research on Freescale's 8-bit processor forum. I was considering buying a DEMOJM board. This is a "motherboard", with built-in USB-to-BDM converter, some i/o, and a square of headers to plug a doughtercard into. It comes with two daughtercards: one for the S08JM60, and one for the MCF51JM128 (a ColdFire part). It looks like a good way to get started with the JM family - these are the nifty USB parts - and because it has a built-in USB-BDM, I figured I could use it to program parts from other families - at least other 5v parts.

But I found some alarming posts on the forum. People were asking "can I use a DEMOxx board to program other parts?" and others were responding "sure, the DEMOxx has a full USB-BDM interface built in." Then the trouble started. Someone with a DEMOQE board - which, like the DEMOJM comes with two daughtercards - couldn't program, using the built-in USB-BDM, anything other than the chips on the daughtercards. These were S08QE chips too - not chips from some other family.

It turns out that the latest version of CodeWarrior - version 6.2 - has code that intentionally breaks these boards! It's possible, by replacing a few DLLs, to fix the problem.

I really think that the community needs to let Freescale know that this kind of thing is hardly ethical behaviour. I don't want my black-box dev tools, when upgraded, to silently break perfectly good hardware that I've legitimately purchased! At the very least this creates confusion and leaves a bad taste. "This used to work; why doesn't it work any more?" Or, "this board has a USB-BDM; I bet I can use that on these other chips!" There is no official explanation, when it doesn't work, about why, and I think this needs to be remedied.

Having had the experience of trying something that should work, but doesn't, people are going to respond in one of three ways - none of them good:
  • give up on Freescale and go elsewhere
  • grumble, buy a USB-Multilink, and continue with Freescale, but with a sour taste
  • learn the truth - that this is intentional breakage - and get angry
In chronological order, here are a few threads from the forum that document all this craziness.

1 comments:

  1. Yes I have had the problem with the DEMOJM and I´m a bit worried abot it becouse I designed a PCB with the JM60 micro into it, but surprise, when I tried to used the BDM link to progrmam my target board, it doesnt works, now I know why!!
    Bad think to the development comunity...

    Danilo

    ReplyDelete