Programming methods other than USB

I've had great success with embedding Atmega 328s and 2560s, writing code with the Arduino IDE, and then programming over ICSP (with an AVR ISP MKII).

I'd like to be able to do this with the ARM in the Arduino Due, but I'm a bit ignorant as to how to proceed.

Is there a simple way to program an embedded SAM3X8E (from the Arduino IDE!) with JTAG or some other method that doesn't involve a second microcontroller with its own ISCP header (like on the Due board)?

  • Ben

The DUE Native Port does not use a second microcontroller interface, and it works through the Arduino IDE. It is still USB, however.

I would like to ask a clarifying question here: are you saying that if an embedded SAM3X8E does not have the Arduino bootloader installed already, it is possible to program the chip with both the Arduino bootloader directly from the Arduino IDE?

I've been trying to research on how to load the bootloader onto the SAM3X8E and I'm not having good results- I have been using the AVR Dragon to load the bootloader onto ATmega328s for embedding, but it appears that the AVRdragon does not support the SAM3X8E. Any insight is much appreciated.

The SAM3X chip has a ROM with a pre-burned bootloader called SAM-BA. You have no way to change it, and it runs by default after an hardware "erase" (done by pushing the erase button on the board).

Arduino IDE uses SAM-BA bootloader to upload the sketch, and a tool called bossac that is the "avrdude-equivalent" for SAM chip.

I did a lot of patches on bossac with the active collaboration of bossac's author Scott Shumate. The patched version can be found on the "arduino" branch of the project GitHub - shumatech/BOSSA at arduino

said that, you have two ways to program the chip (besides JTAG):

  1. Upload through UART using SAM-BA protocol
  2. Upload through USB_CDC_ACM using SAM-BA protocol

SAM-BA automatically detects if an USB host is connected and chooses method 1 or 2.

If you don't want to use bossac, you can try with the official sam-ba uploader software from Atmel: