http://dev.emcelettronica.com/selection-guide-low-cost-tools-cortex-m3

As I mentioned in another article, ARM Cortex-M3 is not compatible with ARM7TDMI in interrupt, ISA, bus structure and JTAG protocol (SWD). You have to upgrade ARM7TDMI tools to support Cortex-M3 microcontrollers. After a small research, I summarize following tool related information for your reference. Although, there are some high-end professional development tools, I only recommend those open source or low cost tools to reduce the R+D investment.

Some tool vendors have offered stable tools for a while. These suppliers are Keil/ARM, IAR/Segger, Code Red Technologies and CodeSourcery (GCC). Each tool vendors are trying to offer a complete tool chain for a new microcontroller, ranges from compiler, starter kit, and debugger to JTAG interface. That means once you pick one tool and get used to it, you have to invest more money on it in the following project. I am not trying to promote on open source in tools, since it is totally a commercial ecosystem. The issue is not how much you pay for it, but how much you can get support from the suppliers. Sometimes we spend too much, and we can not get enough support at all. It is up to you to make decision between proprietary tools and open source tools.

In general, proprietary tools are usually verified on targeted platforms. They are usually relatively expensive with promised technical support. Silicon suppliers usually offer low-cost starter board with feature limited evaluation tools. That means you have to spend more in case you are going to develop a serious project with richer feature set. On the other hand, you can open source tools or build it by yourself. But you should explore and solve problem by yourself. Recently some open source tool vendors also support professional kit, so you can buy their so-called Freenium service.

Compilers

The compiler is the first issue for a new microcontroller. You can pick the proprietary compilers from Keil, IAR, Raisonance, or GCC from CodeSourcery and Code Red Technologies.

  • IAR (EWARM-32K & 30day)
  • Keil (MDK 16K)
  • Raisonance (RIDE)
  • CodeSourcey (30 day, GCC)
  • Code Red Technologies (90 day, GCC)

Among these vendors, Keil, as an ARM company, offers MDK for Cortex-M3 in standard and basic (256KB) variants, and an evaluation version for 16KB limitation without license key. According to some reports, MDK is strong in code optimization and speed optimization, but it is quite expensive. I believe in Keil, because its 80C51 is indeed the best compiler I have used. And Keil definitely focus on limited platforms, so it must put a lot of effort on it. However, Keil is a complete proprietary kit. And its 16KB limited version can not be used in a ordinary project. IAR, another active supplier, offers 32KB limitation and 30 day full functional evaluation compilers, which can be used in a medium size project. Raisonance RKIT-ARM has not limitation on its compiler and RLINK-Pro debugger, but it has 32KB limitation on debug facilities. As a result, you either compile your code and download it, or develop your project within 32KB. CodeSourcery offers 30 day full functional GCC compiler and a free command line version. Alternatively, Code Red Technologies offers 90 day full functional GCC compiler.

Boards

Most of the semiconductor and its partners offer all kinds of boards in different names, starter kit, evaluation kit, demo kit, reference kit, development kit, professional kits. That makes things worse, because each kit is a bundle of a whole evaluation component. Luminary micro and ST releases different kits with many combinations. These kits are really a good resource to evaluation and start a simple project. Some boards have already mounted the JTAG interface on board, so you can save your effort to find one. On the other hand, you can not use the on board debugger for another new board as well.

  • STM3210B/E-EVAL
  • Keil MCBSTM32/E
  • IAR STM32-SK
  • Manley-STM32F
  • Raisonance-STM32 Primer

JTAG Interfaces and Debuggers

Since JTAG has been used in firmware development and device programming, it reduces the development cost. JTAG is only an interface between target microcontroller and debugger software running in PC. Here I hesitate to use a legacy word, emulator. An emulator is working to simulate a microcontroller in the target board, which is why it is called as ICE, In-Circuit-Emulator. JTAG is only not working in that way. Each microcontroller works as itself, only listens to the command from debugger via JTAG interface. An ordinary JTAG interface is only a USB microcontroller with JTAG protocol. That is also an important reason why the developers think the JTAG interface is over-charged at all. There are so many hacked versions on sell. However, hacked version usually stands for no support at all and sometimes it is also a beginning of a fraud. Of course, some JTAG probes are equipped with advanced features, such as trace buffer and logical analyzer, which are professional tools you may invest for a serious project.

JTAG interface plays two important roles, chip programming and firmware debugging. Usually JTAG interface has no problem in chip programming, but you may check if it can be used to program external memory such as NOR/NAND. In order to debug firmware, the JTAG interface should work with specified JTAG protocol and PIN layout, voltage, specified debugger protocol driver. It is the debugger running in PC, which handles the user command, parses the debug file to IDE front-end, and communicates with microcontroller. The debugger is totally proprietary protocol of the suppliers. In order to compete in the market, the tool vendors always try to bind their compiler (with debugger) with JTAG interface. In general, MDK works with U-LINK2 and U-LINK-ME only, since they all come from Keil. EWARM only supports Segger's J-Link since IAR and Segger are partners. The famous parallel Wiggler board has to work with licensed software. All of this mess makes things worse. As a popular platform, ARM's ecosystem is even worse than Freescale's ColdFire. At lease, you can find some open source BDM interface projects for Freescale.

Even proprietary MDK and EWARM also supports silicon vendors' JTAG interface and some standard debug protocols. So there are some combinations. At least EWARM supports Angle ROM monitor, IAR ROM monitor, J-Link, LMI FTDI, Macraigor, RDI and third-party driver. LMI FTDI based JTAG interface is directly supported, and ST-LINK-II is supported by a specified device driver. If you want to your JTAG interface work with GCC compiler, then you have to check if it offers gdb server, which is a remote debugger server, works in IP mode.

  • IAR/Segger J-Link
  • Keil U-Link2/U-Link Me
  • Raisonance STX-RLINK
  • ST-LINKII
  • HJTAG + Wiggler/USB emulator
  • OpenJTAG + OpenOCD

Finally, IAR is the winner in the proprietary suite, since it offers a low cost J-Link ARM for Non-Commercial-Use at 98USD with 30 full functional and 32KB limited compilers. It is consists of JLINK hardware with Flash breakpoint, downloader and GDB server. Although it doesn't offer RDI interface, it allows developer in a complete environment or alternative open source tool chain (like CodeSourcery G++). Please download v5.11 for gdb server.

HJTAG server and HJTAG USB emulator is another source works with IAR and Keil. It is available at 159 USD or 750 RMB in China.

OpenJTAG (FTDI based)/OpenOCD plus GCC is another choice, which may works in Windows and Linux. But you have to work with scripts and command line. Only recommended for Linux fans and experienced developers. According to some reports, it also works with IAR EWARM.

Programmers

Device programmers become less important in JTAG/BDM/Bootloader enabled microcontrollers. People are used to program the microcontrollers in many ways without a programming device, including JTAG, BDM, UART, USB device, USB host, CAN, I2C, SPI and SD card. But bench programmer is quite important in some cases, because it offers automatically high speed programming capacity. Some JTAG suppliers also offer flash programming SDK, you can integrate it with your programming requirement.


Reply via email to