I spent yesterday playing around with the Arduino Zero and looking at hardware debugging options. My standard setup up until now has been Atmega328P boards with Atmel Studio 7 + Visual Micro. However I am now very excited about the possibilities of hardware debugging and wanted to see what Zero owners use and also have some questions.
1) Atmel Studio 7 + Visual Micro.
I managed to setup a blink project, add break points and trace points that fed back variable values. I liked it because it was familiar to the structure of my 8-bit setup. However I couldn’t get line by line stepping to work (F10/11) or watches (so I can hover the mouse over variables while breaked). In fact I wasn’t able to find much more than break & trace - can it do anything else?
2) Atmel Studio 7 + inbuilt Arduino sketch import
It took quite a bit of faffing to get this to work. Check this link out which describes issues and fixes.
The debugging seems to be much more powerful. I managed breaks, traces and stepping, as well as watching. Also seems to be feedback on pin states, disassembly and memory. Haven’t got into that yet though. It’s like proper software debugging but for hardware!
There’s a minor gripe that it wipes the Arduino bootloader, but as long as you then stick to Atmel Studio, you should be fine. My bigger concern is that it is only an importer, it can’t create new projects. It creates an Arduino Core class, presumably by scanning all the dependencies of your sketch. However it would be a bit pointless writing the entire project in Arduino IDE and then importing at the end. If I import an empty sketch or blink and then write a much deeper project, will I be permanently sifting through the Arduino libraries and trying to find the includes to add to the Core?
I’m just trying to get some opinions from Zero owners at this stage, before I commit to a particular method. Thanks!
You can use Visual Micro in a few different ways. That includes native Atmel hardware debug with Arduino cross-platform compatibility. Best of both worlds. Sorry the docs haven't been obvious to you.
Hopefully the following explains things a little more clearly.
Visual Micro - Option 1)
What you describe in 1) is Visual Micro in serial/bluetooth debug mode. You can watch/update expressions and also plot/trigger charts. Downside is you have to set the watch/update expressions prior to upload, can only step from break-point to break-point, . All this is described in the docs on visualmicro.com.
Visual Micro - Option 2)
Visual Micro in Atmel Studio also offers full Atmel hardware debugging whilst maintaining compatibility with Arduino libraries etc. There are various options that enable us to use the "standard Arduino bootloader with Atmel hardware debug" or "native Atmel upload with Atmel hardware debug". Again the docs, + the vMicro menu and the tips in the build output should guide you to using these options.
A good place to start is via the "More Information" option next to the Visual Micro download option in Atmel Studio. The "More Information "link takes you to the "Visual Micro/Atmel Studio" page that gives some important tips for more advanced users like yourself.
Visual Micro also has maintained a forum for many years where questions are answered to help people understand or use Visual Micro. Unfortunately this forum is so large it is impossible to monitor and help people.
The Visual Micro forum is here http://www.visualmicro.com/forums/
Ah that's really interesting to find out about option 2) thanks. I'll certainly give it a try and see if I can get it to work!
I've been using the Atmel Studio Arduino Import method for the last couple of months. It works well and I've fooled the Core project into using the Arduino/libraries folder by making junction links in cmd, from the Atmel project folder to the libraries folder.
However it'd be great to use Visual Micro, as I'm so used to it for 8-bit programming, so will give it a try.