Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Using this guide allows a Windows 8.1 machine, using a jtagice3 programmer, to flash the Zigduino platform with the OpenWSN Zigduino port firmware. No guarantees are made for other software or hardware although this will likely be similar.

AVR-GCC and AVRDUDE for Windows 

There are no official easy-to-use recent avr-gcc versions available. The easiest way to work with AVR for Windows is using Atmel Studio, but which forces using a big software solution, or using the outdated WinAVR tools, which is incompatible with more recent JTAG devices such as jtagice3.  In addition, most online resources are (partly) outdated, though still useful (See also: http://m8051.blogspot.be/2015/01/avrdude-on-windows-long-time-after.html ). This guide describes how to easily get a more recent version of AVRDUDE working with Windows. Alternatively, you can always compile the most recent version of AVRDUDE yourself (from http://www.nongnu.org/avrdude/ ) but this is a fairly painful process on an unconfigured Windows computer (see also).

...

Code Block
> avrdude -v
avrdude: Version 6.1-svn-20131205, compiled on Dec 5 2013 at 17:34:22
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\avr-gcc\bin\avrdude.conf"

JTAGICE3 with Windows

Unfortunately, AVRDUDE relies on the JTAGICE3 programmer to be connected to a Linux USB port such as LibUSB (source). In addition, depending on the firmware of the JTAGICE3 the USB descriptors might be totally different (source and source).

...

Normally, you should now be able to use avrdude to flash your firmware using a JTAGICE3.

 

AVR Toolchain on Linux

The adjusted Sconscript has also been used on Linux, on Ubuntu 14.04.

...

Note also that this does not install the most recent versions of this software. Therefore, it is sufficient to program but, for example, lacks debugging support with the JTAGICE3.
See the "Debugging" section for more info on how to make this work. 

Tying it together – integrating it all and flashing the Zigduino firmware

As a reference on how you can use this toolchain for your own port, we describe how to do it for the Zigduino platform.

...

Note that Sconscript needs a 'jtag=' command to work with a jtag programmer.  The variable included does not actually matter; the jtag port itself is automatically detected and will simply flash the board it is connected to. 

Adjusting fuses

If you need to adjust the fuses, simply go to the following code in Sconscript:

...

Remember that you only need to set the fuses once per change. Once changed, you can recomment the line again.


Alternative ports

If you have another board and want to use the same toolchain and programmer, you only need the Sconstruct and Sconscript files with some small additions.

...

For the Sconscript file look for all mentions of 'zigduino' and follow that example to add the relevant code for your (type of) board.

 

Debugging with the JTAGICE3 on Linux

Note, that I have not been able to get debugging working on Windows due to the lack of support for a recent standalone AVR-toolchain version on this platform. E.g., the jtagice3 JTAGICE3 has no support.

Therefore, only Linux is described. Thanks goes out to http://www.mikrocontroller.net/topic/301030#postform.

If you want to debug with the JTAGICE3, you aren't finished yet. 

First off, you will need to update Avarice to the most recent version from their repo (2.13): 

Code Block
svn checkout svn://svn.code.sf.net/p/avarice/code/trunk avarice-code
sudo ./Bootstrap
sudo ./configure
sudo make
sudo make install
:/tmp/avarice-code/avarice$ avarice -h
AVaRICE version 2.13svn20130104, Jun 30 2013 21:26:37
Usage: avarice [OPTION]... [[HOST_NAME]:PORT]
Options:
-h, --help Print this message.
-1, --mkI Connect to JTAG ICE mkI (default)
-2, --mkII Connect to JTAG ICE mkII
-3, --jtag3 Connect to JTAGICE3

...

You should have established a successful JTAG interface connection now.  

To start debugging, run avarice through the following command:

Code Block
sven@ubuntu:~$ sudo avarice -P atmega128rfa1 -3 -j usb :4242

And finally, in another terminal, you can then start your debug session through:

Code Block
sven@ubuntu:~$ gdb
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) target remote :4242
Remote debugging using :4242
0x0041ff00 in ?? ()

...



AVaRICE version 2.13svn20141210, Dec 13 2015 23:45:03
Defaulting JTAG bitrate to 250 kHz.
JTAG config starting.
Found a device, serial number: J30200026194
Reported device ID: 0xA701
Configured for device ID: 0xA701 atmega128rfa1 -- Matched with atmega128rfa1
JTAG config complete.
Preparing the target device for On Chip Debugging.
Waiting for connection on port 4242.

Finally, you can pick your desired gdb front-end. This has been tested with both regular GDB through the command line interface and with Eclipse.

In both cases, you need to have started avarice as above.

GDB in the command line interface

Simple, point GDB to the project file you want to debug, for example, oos_openwsn, and then attach it to avarice. Then you can start debugging away.

Code Block
sven@ubuntu:~/Desktop/OpenWSN_Sven/openwsn-fw$ gdb /home/sven/Desktop/OpenWSN_Sven/openwsn-fw/build/zigduino_avr/projects/common/03oos_openwsn_prog
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/sven/Desktop/OpenWSN_Sven/openwsn-fw/build/zigduino_avr/projects/common/03oos_openwsn_prog...done.
(gdb) target remote localhost:4242
Remote debugging using localhost:4242
0x0041ff00 in ?? ()
(gdb) list
30	extern uint8_t radio_trx_end_isr();
31	extern uint8_t radiotimer_compare_isr();
32	extern uint8_t radiotimer_overflow_isr();
33	
34	//=========================== main ============================================
35	uint8_t mcusr_backup;
36	
37	extern int mote_main(void);
38	
39	int main(void) {

 

Debugging through Eclipse

Debugging through a graphical front-end can be easier. This has been tried out with Eclipse. This section has been copied mostly from http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging with some relevant adjustments.

Once avarice is started we can start the Eclipse debugger. But first we need to configure GDB Hardware Debugging.

Open the Debug Configuration dialog: select the project to debug and then click on the little triangle icon next to the debug iconImage Added and select Debug Configurations...Image Added

The dialog should look something like this:


If the GDB Hardware Debugging configuration type is not shown you do not have this optional feature installed. Start Software Updates... from the Help Menu and add the CDT update site (at the time of writing http://download.eclipse.org/tools/cdt/releases/8.8). Then browse this update site and install the Eclipse C/C++ GDB Hardware Debugging optional feature.

Now create a new configuration.

The first Tab (Main) should be configured like this, with the C/C++ application pointing towards your file.

Image Added

For the Debugger tab. Most options have been set to reasonable defaults by Eclipse. The only options that need to be changed have been marked in the screenshot.

Image Added
GDB Command: change this to "avr-gdb". The preselected "gdb" does not work, as it would try to debug the target as an i386.

Next continue on the Startup tab


Now the configuration is finished. Click on the Debug button to save everything and if all is well the debugging session should start and your application should stop at the beginning of your main() function.

View file
nameSConstruct
height250

...