I've used a slew of hideous development environments for microcontrollers. I once spent three weeks just trying to install software to test a snippet of code (won't mention the product). I've always had an affinity for Microchip's MPLAB environment. It's simple, usually not too buggy although I've had a release or two that hiccupped, and seems to have 90% of the bells and whistles.
What is your favorite development environment and why? Which product line does it support?
Lon - Solutions Cubed
I am working on a microprocessor development tool.
Which features do you like to have at your development system which you did not get up to now?
What are the essentials which you need?I
I would like to integrate these features into the development which I am working on.
Rather than touch on what I do not get, I'll touch on what's needed. If I had to list the essential aspects of a good development environment it would be a pretty short list.
1. A good code editor that provides, among other things, color differentiation for different code elements. This is pretty common in C code editors and makes writing and reading the code under development easier. An extreme example is Microsoft's Visual Studio. It has autocorrect-like features that speed coding.
2. Programming and debugging are necessary, but I understand that these features often depend on the IC hardware. 90% of the time I can get by with just a couple of breakpoints to test code. A trace buffer is necessary less often, but can be useful for measuring timing or backtracking from a breakpoint to an event. I rarely use complex (conditional) breakpoints. Late in a design I like to be able to switch back and forth between debugging and testing the microcontroller with the release version of its code. It is best if this change can be done without touching the code or changing the connectivity to the part.
3. Clean project organization is ideal. The ability to add and remove files from your project should be siimple, and all components should be in one location visually.
4. Watch list capability that allows you to change the displayed value for variables (example, display binary, hex, ascii, or decimal). It would be great if you could drag-dop variables into different watch lists that are based on functionality.5. The ability to step through code under test and switch between assembly and higher level languages.
5. Keep everything visually simple. The easier it is to get started the more people will use it.
Lon - Solutions Cubed
This is a very good quiestion. I remember that many years ago, when I started working with MCUs, my development process was:
- Create the MCU code in assembly code.
- Burn in the EPROM with this code (obviously with a very expensive programmer)
- Erase the PROM with UV light and wait for ten minutes
- Repeat the cycle up to finish the project
But now we have a lot of tools and methodologies for development and it's not easy to make a choice, but in any case we want to reduce the learning curve as well as the time to market.
I can see at least two big scenarios, the traditional one, supported by the traditional MCU suppliers (Microchip, ST, NXP, Feescale,Renesas, etc) and I want to mention two excellent tools:
- Codewarrior - for Freecale MCUs, compilation limited to 32K(classical vesion, I don't mean the eclipse version)
- HEW for Renesas MCUs
and the two excellent and traditional tools:
- IAR embedded workbech, compilation limited to 32k, 8k or 4k, depending of the MCU.
- Keil, compilation code limited to 32K.
By the other side some new MCU suppliers ( MCU or something like that, because the big integration of peripherals and in some cases, of several CPUs inside of the MCU). On this scenario I want to remark:
- Cypress Creator, outstanding free tool.(for PSoC3 and PSoc5)
- Cypress Designer (for PSoC1)
- Propeller tool, free tool for Parallax Propeller Devices (a single device contains 8 ARM CPUs, all of them acting in parallel).
- XDE - Development tool for X MOS devices (an event oriented device with 8 CPUs working in parallel).
And of course, we can't forget the 'newest guys' of the moment, Arduino and their brothers Wire, Mapple, etc.
In conclusion, we have tools for this life and the next ones!
We've used just about everything you mention above, with the exeptions being the Propeller and XDE. I will actually order a Propellor this month to check it out. We've used the Parallax BS2 in a few production testers for years now. I've always liked their offerings.
We still have our UV eraser laying around. I remember the days of "burn-and-learn" with windowed DIP packages. Then there was the dedicated emulators that had to plug into the board under test. You'd have to design your board so the emulator pod could attach correctly. We probably have several thousand dollars wortt of unused emulator hardware and IC adapters laying around. I just finished a design with Microchip's ICD3, that I think costs less than $100.
Things have definitely gotten easier.
The worst development environment(s) I've used recently was related to Actel's (now Microsemi) SmartFusion offering. There were multiple IDE's necessary. The various software tools didn't mesh very well. The settings were complicated, and when they didn't work you'd fall into the rabbit hole of just clicking buttons and crossing your fingers to see if it worked. I spent 3 weeks installing software, installing updates, uninstalling software, changing computers, etc.
When I finally got an LED to blink I was overjoyed.
Lon - Solutions Cubed
I would like to share a nice complete microchip development environment that I use and have found to be very useful. MikroElektronika Develoment Tools - http://www.mikroe.com/eng/categories/view/6/pic-development-tools/. I believe that there is NO one product that will fit everyone's needs but I have had very good customer support as well as community support for this product. It is well worth looking at. They have development tools for other micro controllers.
I'll outdate all you guys...recall writting hexcode on terminals for RCA parts...yep..hexcode...on.dumb terminals...then blowing to the UV eraser parts. Ok...enough of the old timers stories.
MICROCONTROLLER VENDORS TAKE NOTE: Give it away.Give away the razor blade holder and sell razor blades.
Frankly as a consultant the best I find are the FREE OPEN ONES. Its a real hassle having to do all the code development, send off to a customer...and tell him to coordinate and buy some weenie-ware development code that: (1) Always changes versions (2) Is forever installed on some computer someone doesn't have access too....or worse (3) has a dongle. I can't tell you the number of times even at customer locations who bought the code that one walks in to fix an issue....and the guy with the program installed is out that day...or is busy doing other things...or is in another part of the building and you need it in the lab. Or you end up forever chasing versions between users who aren't up to date. Such a hassle. With a free version EVERYONE has access....everyone can download the latest...no need to walk arond with some silly 'hold onto your dongle' mentality. Much easier to pop online and download
I'm the opposite of all these old timer guys. I've only been playing with these since they became easy. I've never used any of those expensive programmer widgets. I've use PIC's MPLAB, which is totally solid and does all that needs doing, but is huge and cumbersome. When I'm prototyping, which is all I ever do, I want fast and sleek.
I'm just chiming in because no one has yet mentioned mbed. It's an online compiler from NXP to work with thier cortex-M3 and cortex-M0 chips. It's almost childishly simple to use. I've had simple digital and analog I/O programs up an running in minutes and a whole ethernet stack good to go in a few hours the first time I tried. It's not probably the tool for real professionals, but for the prototyper getting started it really hits the mark.
Also to go along with daveatwave, you don't even download it, it's so free. It's a web based compiler. I can write the code and my co-workers can compile it to thier MCU right away just by logging in and hitting the button.
Again, I've never tried to use it to release a real product, just prototyping using their demo board. They say it can be done, but I only ever build one of what I need.