I will embark on the ARM Cortex M3 bandwagon soon with an official training (CPU side).
Now, I did a bit of Arduino and AVR before and have some basics in electronics but I am mostly a software developer. I've read most topics in here and quite a bit elsewhere regarding the tools available and they have been really helpful. What I need is something to connect all those answer elements together.
I would like to equip myself with a starter kit that is general enough to get me going and that at least allows me to experiment different hardware/software combinations (Steppers, CAN-Bus, SPI etc...). I am looking at the following list (please feel free to add more items!):
For the chip I would like one of the higher-end models to be able to try a bit of everything. The NXP LPC1768 seems like a good choice but there is also STM and Stellaris to consider.
Interesting candidates for the board right now are the Keil MCP1760, the STM3210E-EVAL but I am afraid of vendor lock-in as I would like to be able to try various toolchains on a single board. mBed is very attractive but out of the equation because of it's online compiler (unless a regular compiler can be used as well)
For the Toolchain, I have a "feeling" towards IAR, Rowley Associates. I would prefer ease of use/well-doneness vs open source and preferably tools that could be used on multiple targets.
Do I really need a JTAG unit? If it's a "standard industry tool" like it seems to be I would like to at least get some experience on it. It looks like another source of vendor lock-in tough. Would I be better of using an external one I can familiarize myself with or just using one included on the evaluation board?
Basically, I need help in choosing a winning combination for the aforementioned categories. Is it even possible or am I being naive and should look at saving costs because I will end up buying one of each in the end?
Thank you.
RESULTS: What I ordered:
I finally bought Joseph Yiu's "The Definitive Guide to the ARM Cortex-M3 (Embedded Technology)", found some training for the CortexM3 platform (coming soon) and bought an STMicro kit: STM3210C-Eval which has a bunch of sensors built-in and is not vendor locked to a specific software environment. I also picked-up a few STm32vl-Discovery boards (13$cdn from digikey!) with on-board JTAG. I am now playing with an evaluation version (32K) of Keil's uVision IDE and I can say that I am REALLY impressed! I was able to re-build the Discovery's firmware, load it back, and step through it with the debugger in a single day!
Thanks everyone!
both llvm and gcc are perfectly fine, no need to buy any software. Most folks out here providing free help are going to be gcc users. Codesourcery is the current place to get the newer/better gcc (for arm). The lite version is perfectly fine. Rolling your own gcc is a relatively easy thing, but maybe not something you are into. A nice thing about llvm is that it is always a cross compiler and pre-builts usually have several/all targets.
I also have stellaris and mbed and other cortex-m3 examples out there. I like stellaris, not a fan of lpc, avoid the expresso, the mbed is actually not bad. The crazy bright blue leds give me a migrane so I replaced them with green, otherwise it works just fine, easy to use. Igor is right you are not locked into their sandbox like you are with the expresso, I have an example blink the leds using gcc to compile out there somewhere. you simply copy the .bin file to the thing which looks like a flash thumb drive and press the reset button to load the new file.
sparkfun.com has the stm32 header board for under $50 plus the mbed and who knows what else. The stellaris boards are in the sub $100 range and are perfectly fine. I bricked my 811 almost immediately by accidentally doing exactly what the warning said not to do. Turned my jtag gpio pins the wrong way and...game over. The 1968 and other non-811 series are either non-brickable or not as easy to brick. The stellaris boards chew up all the io with onboard peripherals which is fun for a while, but not if you want to do something other than just how to use those peripherals. You will want a jtag wiggler if you are using the stm32 header (avoid the stm primers) amontek makes a good one, the jtag-tiny, and the olimex one should work fine, but I actually dont know that I ever got mine out of the box. In theory one stellaris board can be used as a jtag wiggler for another or for other cortex-m3s. if you have a stellaris board you wont need anything else, everything you need comes in the box for one price, well if you dont want to use that toolchain then you can download one listed above.