Search code examples
armembeddedcortex-mtoolchain

Advice needed for ARM Cortex M3 beginner


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!):

  • Cortex M3 Chip
  • Evaluation board
  • Tool Chain
  • JTAG tools

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!


Solution

  • I'm also a software developer originally. I used a couple of different kits, but the one I found most easy to use and did most with is mbed. You can literally get it up and running in five minutes from opening the box. No need to install any IDEs from the CD, no need for the JTAG dongles, no need to pour over datasheets - just write the code, compile and run.
    Yes, some complain that it's "tied" to the online compiler. But I only heard that from people who did not actually try it. And it's just not true - you can still use any other toolchain that can produce binaries for LPC1768: IAR, Keil, CodeSourcery, Yagarto, or your own toolchain. I did not myself yet find a case for that, but it's certainly possible.
    Probably the biggest disadvantage of mbed is that it does not expose the JTAG interface and so you cannot debug interactively. So far I did not find this critical but it might be important if you do a lot of low-level work.