I am a difficult customer. When I am buying something, I want see exactly what I am getting for my money. The words of the salesperson and the blurb on packages just do not convince me – I have been caught out too many times.
A while back my daughter was after a charger for her iPod, as she was traveling without a computer and “needed” her iPod. What she wanted was a mains plug which has a USB socket on the back. Easy, there are lots of those on the market. I even have two on the shelf in front of me. But neither of these worked with her iPod (a current generation Nano). Some research on the Internet showed that this problem is very well known. We went into a shop and found a charger which said “suitable for all iPod models” on the pack. I enquired whether this really meant ALL. I was assured that it did and the guy asked if we wanted to try it. The charger worked perfectly and he made a sale.
If only it were that straightforward with software …
Computer programs are extremely complex. If I draw a comparison with machines, the most complex mechanical device ever created is the Space Shuttle orbiter, which has around a million moving parts. In software terms, I suppose a bit is a moving part and program code consisting of 100m bits is not unusual. Apart from the debugging/verification issues, this complexity makes choosing software very challenging. It is virtually impossible to give a meaningful amount of information on a package or brochure. The only way to really find out what a program can do, whether it can perform the job that you want and if you are comfortable with the way it does it, is to give it a try.
A demonstration of software may be more interesting than a brochure, but I have a lot of experience in doing such demos, so I am very aware of their limitations. I love shareware, evaluation packages and open software. I am more than happy to pay money for software that has proven itself useful to me. Interestingly, I find that I can often reach conclusions very quickly. I can download a program, try it for a few minutes and immediately know it is not for me. If it gets past the first few minutes, a longer trial can prove the software’s true worth.
This is all fine for desktop software. The software developer knows exactly what my machine looks like – every Windows machine is, for all intents and purposes, identical. So it is easy to provide an evaluation that I can try. Embedded software is another matter, because every embedded system is different (which is what makes the business so interesting). This means that an evaluation needs to be specific to each customer, which, even if it is possible, is not an economic use of resources. The Mentor Graphics embedded software team is well aware of these constraints. So they came up with a means of running an evaluation version of the Nucleus OS on a regular PC (using target simulation software), which enables the user to try out lots of API calls and get a feel for how the RTOS works and do so using the real tools that you would use for, say, an ARM target. You can download it from the Mentor website, where there is also access to other evaluation software packages.
I just hope that our customers are not quite as difficult as I am.
About the Author
Colin Walls (@Colin_Walls) is an embedded software technologist at Mentor Graphics (@mentor_graphics), the leading EDA software company. You can read more about Colin and his work on embedded systems at The Colin Walls Blog at Mentor Graphics here.
Colin’s most recent publication, Embedded Software: The Works is available now on the Elsevier Store. Save 30% on his book and other Newnes Press and embedded systems books by using promo code “STBCNF13″ at checkout.