I recently had the joy of working with TI's Code Composer Studio, a fully integrated
Right out of the box, the system I got from TI was a disappointment. The system came with an EVM and a copy of Code Composer Studio. The installation of CCS went fine, but getting it to talk to the EVM failed. Now, to be fair, I am using Windows NT 4.0 and the EVM connects to the PC through a JTAG interface which connects via the parallel port. I have dealt with parallel port drivers under NT, particularly custom drivers, and being sufficiently jaded, I was not suprised when the interface didn't work the first time. Instead I started on the process of getting all the latest and greatest service packs and patches for my system and for CCS.
Reinforcing The Bad Taste In My Mouth
That was when I hit the second stumbling point, trying to get the latest version of CCS requires registering the product via the TI web site. Which failed. So I tried a different browser. Failed. Tried changing the case of the letters in the serial number I was typing in. Failed. So I resort to the tool of last resort, and pick up the phone. Now here, my expectations here higher as TI had included in the product packaging an entire booklet with technical support options around the world including web pages, phone numbers, fax numbers, and e-mail addresses. There was even a number specifically for North America "Software Registration/Upgrades".
It was disconnected. Disconnected! No forwarding to another number. No message to call some other number. Just disconnected.
So, back to the booklet to play another round of support roulette, I pick the Product Information Center, and finally get hold of human, who takes all the information on my two problems. Remember that I originally only had one problem, the JTAG interface didn't work, now I have two, I can't register my version of CCS.
Is this a cure or a disease?
The problems were reported on a Thursday, the following Monday I got the 'fix' for the product registration problem. Yes, two days later. If this were the only project I was working on then I could have spent a full day just twiddling my thumbs waiting for a response. Sorry, but that kind turn around time on technical support is unacceptable, particulary given the source of the problem, which it turns out to be, they didn't enter my product serial number into their database, thus I was unable to register CSS. So I register the product, and try to get the latest updates and drivers for the JTAG interface. Remember that problem, the original reason I set off down this road? So I go to download the new drivers, only, they aren't there. I am literally getting a 404 on a web address in their documentation. Documentation that was sent to me in a very expensive box purchased less than two weeks before. So now I have to go back to customer support to get the super-secret new web address for the drivers. Which they give me, with the infuriating self-assurance that belies the fact that they see nothing wrong, or at least unusual, in recently printed documentation pointing to non-existent web resources.
But how do you really feel?
So, finally installed and up and running, I plow through the tutorials, which are very good, but annoying for the tendancy of the narrator to mispronounce the word "project" as pro·ject instead of proj·ect. This is the Project Manager portion of the software she's talking about, not a Projectile Manager. But the honeymoon ends as quickly as it begins. I get portions of my code complete and want to do some timing analysis, so I fire up CCS, turn on the profiler, and am crushed. My code is slow. Very slow. So I start digging though the code, single stepping in the simulator, trying to find the slow points.
Now, leading up to this point, I had spent two days working on the external memory access timing for the DSP. Working through timing diagrams and datasheets to work out the timing for accessing the A/D converter. That is, the DSP is connected to A/D converter in a way that maps the A/D into the DSPs memory address. Now the DSP I am using has a pipelined architecture and when it goes to access external memory the pipeline stalls to compensate for the slower read times. Read from a specific address and it actually retrieves the value from the A/D converter. Write to that another address and it sets the configuration register on the A/D. Anyway, I spent quite a bit of time setting up the configuration of the DSP to access the A/D and I know, I mean I really know how long the pipe stalls should be and the simulator is giving completely different timing results. Now I'm open to the problem being me so I go back again, the masocist that I am, to TI tech support.
I explain the problem. The external memory acceess times in the simulator don't look correct, the processor is stalling for far longer than it should.
They ask for more details, the version of CCS I am running, some sample code to recreate the problem, etc. Already I am suspicious. I have dealt with enough tech support before and there are only two reasons for asking these types of questions, the first is that you have no idea what the problem could be, not encouraging, but acceptable. The other reason is that you know exactly what the problem is but you don't want to tell the customer.
So I fritter away half a day constructing and testing an abbreviated sample project that I zip up and send to tech support with all the answers to their questions. Some back and forth with them on what they are supposed to see and finally I get back this response:
Hi Joe, Please let me know if you have solved the problem on stalls. I am closing the case for time-being. I will re-open the case as soon as I get a reply from you.
Huh? I send them all the code to re-create the bogus pipeline stalls and this is the response I get? Get back to us when you have that problem fixed!? So I do get back to them and explain that they shouldn't close the bug as they haven't answered the very simple question I asked, are the simulator pipeline stalls accurate? And finally, one week after submitting my bug report I get the answer:
Hi Joe, This is a limitation in the Simulator. Simulator timings are not guaranteed to be correct.
Why couldn't I get that to begin with? Look back at all the crap I just went through. None of it is a technical problem with the product. All of it is simple attention to detail:
- Put the right web address on the documentation.
- Put the right phone number in the customer support guide. (Or maybe pay the bill for that number, I still have no idea why the Software Registration telephone number is disconnected.)
- Promptly enter the serial numbers of products you ship into the database. (This one in particular galls me, why isn't this automated?)
- Speed up technical support responses. I have dealt with other DSP vendors and never had these problems nor had these kinds of delays in getting responses.
- Answer the question the customer asked. Really, would it have killed the tech support person to go back to the original question I asked about pipeline stalls before closing out the bug report?
All of these problems are non-technical, failures of attention to detail, and have left me with a very poor impression of what appears to be a technically solid product, the real thing that TI is selling, the DSP chip.
Today, I received my "TI Product Information Center Satisfaction Survey". Oh, I'm going to enjoy filling out this one.
Update: I have received private e-mail that confirms some of my suspicions, that TI is primarily a designer/manufacturer of silicon and that the software group, and software technical support, is persistently under-staffed/under-funded. TI doesn't seem to understand that the software is the gateway to the silicon, and that if their support structure is weak they will eventually start losing sales, no matter how good their silicon is.
If you don't believe me, ask Borland. Was it Microsoft's superior technology, or was it Borlands failure to keep innovating, coupled with Microsoft rolling out the MSDN web site?
Second Update: Things are looking up. I had to go back to TI for more technical support. This time getting answers to all my questions in less than 12 hours. Most impressive, the email came in at 2:37AM.
Final Update: I got a call from the Director of World-Wide Technical Support for the Semiconductor Division wherein he apologized for the poor service I had received and explained some of the problems I saw.