A couple of weeks ago, I was contacted by Sergio Prado in Brazil. He is a reader of this blog and writes a blog on embedded matters himself [in Portuguese, of course]. He asked me whether I would be prepared to participate in an email interview about my career and views on embedded software. I agreed, he sent the questions and I sent back the answers, which he translated and posted. I thought that it might be interesting to share the English version of the interview …
1. Colin, tell me a little bit about yourself. How did you start working with embedded systems? How was it in the early days?
When I was a kid, electronics was my hobby. Later I became interested in computers and started a career in software, specializing in real time control. Moving on to embedded was a natural progressing.
2. What do you do at Mentor Graphics? Which projects are you currently working on?
I have been with the company a long time. I was with Microtec, which was acquired in the mid-90s. I started out doing purely technical stuff: technical support, development, etc. Later I moved into marketing, taking advantage of my technical background. I have always enjoyed writing and discovered that I also enjoyed presenting. Nowadays I am most at home in front of an audience. Over the last couple of years, I have become increasingly involved with online marketing events – Web seminars. We are finding them most effective.
3. What was the biggest challenge in your career?
I think my decision to join Microtec was a big issue for me. I was leaving a secure job with a large company to join a start-up. I did the right thing.
4. Which tools do you use in your day-to-day basis to manage and/or develop embedded systems?
I am not actively involved with any development at this time. If I were and when I have been, I would naturally select Mentor Embedded tools. 🙂
5. What can you say about the future in embedded systems?
Crystal ball gazing is always hazardous, as new technology often emerges and changes the game. But some things are certain. Embedded systems will become even more ubiquitous. Hardly a day goes by when I do not hear about some new electronic device. Power consumption will continue to be an issue, as portability and environmental issues are strong influences. Designs incorporating multiple cores will become more common – probably the norm.
6. And what about the growing number of devices with embedded Linux?
As there are a great many programmers working on desktop applications, it seems only sensible for embedded developers to be able to take advantage of their work and have access to all the drivers and middleware etc. So, using Linux for embedded applications, where memory size and real time behavior are not priorities, is very reasonable. I think that we will see more and more users applying Android, which is built on top of Linux, for embedded applications which are not mobile handsets.
7. What do you have to say to new engineers/developers that are beginning the career on embedded systems? Any tips or tricks?
The key thing is that they need to know how to program. A lot of desktop software is built by bolting together existing components. There is nothing wrong with that, but, for embedded, an awareness of resource utilization is essential. An embedded developer probably needs to know C and have at least the ability to read assembly language, if not be able to code at this level.
8. I’ve read “Embedded Systems The Works” and like it a lot. Is a new book coming soon?
Thank you. It has been well received and sold quite well. And every copy sold results in a charitable donation (of the royalties) which is very pleasing. Writing a book is very time consuming and time is something that I do not have to spare right now. However, a new edition of “The Works” will be published next year.
9. If you would go to a desert island, which programming language, CPU architecture and operating system would you carry? 🙂
I am not sure that I would want to do embedded programming on my desert island! However, I guess that I have favorites. I think C would be first choice of language, though learning something new would be interesting. Programming in a high level language largely insulates the programmer from the CPU architecture, but I did always like the 68000 CPU, so maybe Coldfire would suit me. A choice of OS would depend upon the application, but a solid RTOS like Nucleus would be an easy choice.
10. Last words for our readers…
Just one little thought:
It is very easy to assume that all embedded systems are built around high end 32-bit (or 64-bit) devices. Although they are certainly critical for many high-functionality devices, there are many applications where such a CPU would be total overkill. As a result, there are still many 8-bit and 16-bit (even 4-bit) devices available. Such systems are often “invisible” – deeply embedded with no user interface at all. However, programming them can provide many interesting challenges.
Thanks a lot for sharing your experiences with us!