I'm currently evaulating the the IAR tools that came with ATMEL's AT91SAM7S-EK eval kit(which uses the AT91SAM7S64). The IAR tools (using a Segger J-Link tool) don't appear to be able to debug ISR's very well, if at all. Before I go through all the hoops to get several $1000 to spend on evaulating the JTAG debugger enabled version of the KEIL tools, I was wondering if anyone out there who's using them would mind commenting on how well they work when debugging ISR's.
It's typical for ARM JTAG debuggers to support only two hardware breakpoints. This number is a limitation of the ARM implementation at hand, not the debugger itself. You're at the mercy of the chip designer including extra logic to support software debugging. (The JTAG interface itself is essentially just a fast serial port that lets the debugger read and write the processor registers and some associated logic.) I've even used an ARM processor that only implemented one hardware breakpoint. I've never had the luxury of using a core that included the trace module. You really want two hardware breakpoints for debugging ISRs. The first breakpoint gets used to stop at the desired point in the code. The next you need to single-step. You can live with just one if you always remember to delete your "stop here" breakpoint before clicking "step", but that's frustrating in practice. Software breakpoints are usually implemented by replacing an instruction with a software interrupt or trap instruction of some kind. So, you can have an unlimited number of them, but you also have to have the ability to overwrite the executing code -- that is, run out of RAM.
Thanks Al & Drew... I appreciate your comments. I've used KEIL tools for a few years on other processors (C167 and 8051). There are a couple of other developers here who took a stab at using an earlier version of the KEIL tools with a U-Link debugger on a Philips ARM based eval board (and later with an LPC2114 board of our own design). They had dismal results, and were of the opinion that the KEIL debugger was unusable. I'm somewhat reluctant to concede that using a simulator will give the same results as real hardware. I've got a couple U-Link and a couple J-Link debuggers along with a current version of the KEIL eval. Unfortunately, the KEIL eval will not allow you to use a JTAG debugger. Not sure why. The debugger is a critical part of the tool, and the eval isn't worth all that much to me without it. It's very difficult for me to get my company to spend several thousand dollars just to do a tool eval. That's why I'm anxious to hear from other folks as to their results with these tools when debugging real code on real boards. So far, it looks like there are at least two folks who think the KEIL tools are okay to develop/debug ARM based projects. It's also encouraging to see that there haven't been any folks chiming in to rant that the tools are junk.
Unfortunately, the KEIL eval will not allow you to use a JTAG debugger. Not sure why. That's beacuse the usual crap about considering the IDE the holy grail. Most likely your JTAG debugger will work just fine if loaded separately even with Keil files. For instance in the '51 world you can use the SILabs JTAG debugger loaded as "the SILabs JTAG debugger" just fine. It's very difficult for me to get my company to spend several thousand dollars just to do a tool eval. If you are "a reputable company" it should be possible to have a full Keil for a short while for eval. When I were in the market for 12 sets, they loaned me one. Erik
CORRECTION: I have a pile of "USB to JTAG conversion boxes designed for ARM cores", not JTAG debuggers. The only ARM debugger I have is the one that came with the IAR/ATMEL eval kit. I was trying to use one of these conversion boxes with the KEIL eval to try out the KEIL debugger. Even though we've purchased several products from KEIL over the years, when I inquiried about evaluating the ARM debugger the response was "you must buy it to try it... if you don't like it then we'll give you a full refund". However, I'm not trying to buy a pile of licenses either. I'm just a lone developer on a one man team project.
Just a clearfication: ULINK allows full debugging even in an Eval version. The Eval version only has code size limits. I do not know why it did not work for you. Reinhard
Thank you Mr. Keil, and sorry for my mistake. I had incorrectly assumed that the dialog box that popped up when I clicked on the start debug button meant that the debugger wasn't working. Dialog box text:
uVision3 MISSING DEVICE (SECURITY KEY NOT FOUND) Running in Eval Mode
The interrupt example worked as-is, right out of the box too. I was able to set a breakpoint in the timer ISR that toggled the state of an LED, and every time program flow broke there I could click the run button and the state of the LED would change... just like you'd expect it to. Wonderful, just wonderful. Dave.
View all questions in Keil forum