I'd like to ask you some questions about ARM processor from Atmel like the SAM3X8E, the one used in the Arduino Due. I have found this [AVR programming guide] from abcminiuser on avrfreaks very helpful.

Q1. Why are there no ICSP pins in Arduino Due to use it to program the SAM3X8E from an external programmer instead of the USB port in the Due board?

Q2. If I want to program an Arduino Due from an external programmer which of the programmers in abcminiuser guide will do the job and give me the ability to program 8/16/32bit AVR and ARM chips from Atmel at the same time?

Q3. On the Arduino Due website I read this:

"Uploading sketches to the SAM3X is different than the AVR Microcontrollers found in other Arduino boards because the flash memory needs to be erased before being re-programmed. Upload to the chip is managed by ROM on the SAM3X, which is run only when the chip's flash memory is empty. "

What is that mean?

  • What is an Arduino Duo? I believe you mean "Arduino Due"
    – aaa
    Feb 20, 2016 at 9:16
  • Did you look at Chap. 18. Enhanced Embedded Flash Controller (EEFC) in the datasheet. atmel.com/Images/…. If you are constructing a board I would recommend starting there. Feb 20, 2016 at 10:11

1 Answer 1

  1. Because it is not needed. The chip comes with the bootloader pre programmed in ROM, not in Flash. It cannot be replaced, upgraded, removed, etc like other more sensible chips. So there is no real need for ICSP since the main use for that is putting the bootloader on.
  2. Unknown.
  3. Unlike the AVR chips, whose bootloader always runs first for about 2 seconds, the SAM3X's boot loader only runs if the flash is empty. As a result there is a way to empty the flash built in to the Arduino code, so that it can be erased by software. That means that the software has to be working right though, which isn't always the case, since people write bad code which crashes the chip. As a result they added a erase button to the board so you can manually erase the chip and get the bootloader to run.

I have always maintained that the SAM3X is a really idiotically designed chip and I wouldn't ever use it in a design of my own.

  • Thank for this info, but any other alternative chip to SAM3X8E, It 3.3v and 512K.B of RAM , and have many IO pins , There is no 3.3v with 512K.B RAM chip in AVR family, by the way I make some search and find that Atmel have two programmer Atmel-ICE and JTAGICE3 the last is less expensive and about half price the one and support AVR like Atmega2560 and ARM like SAM3X8E, So can I use it to programming SAM3X8E if I design custom SAM3X8E board and remove both USB port from Arduino Due design, Also what pins should I connect this programmer to the chip to programming It?
    – Haider
    Feb 20, 2016 at 9:57
  • Maybe you should look furthrt afield? Btw, it has 512k flash, not ram. It only has 96k ram. I use PIC32 chips mostly.
    – Majenko
    Feb 20, 2016 at 9:59
  • There are many makes of microcontroller that are better than the sam chips. Many manufacturers make them, so shop around. Define your requirements then fit the chip to those requirements, don't fit your requirements to the chip just because some toon at Arduino is a fan of it.
    – Majenko
    Feb 20, 2016 at 10:13
  • Maybe you should look Dear Majenko thank for your advise, the reason that make me choice AVR because it's very simple and can be programmed by C,also if there is library for and sensor work with Arduino I could make this library work with AVR with little change in it's code that's why i decide to upgrade from AVR to ARM from Atmel.
    – Haider
    Feb 20, 2016 at 10:35
  • All microcontrollers of this ilk can be programmed in C or C++. Many have an Arduino compatible API as well, such as Teensy, chipKIT, Energia, etc. so programming is almost identical.
    – Majenko
    Feb 20, 2016 at 10:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.