Automatic (Software) Reset
The SAM3X microcontroller differs from AVR microcontrollers because the flash memory needs to be erased before being re-programmed. A manual procedure would involve holding the erase button for a second, pressing the upload button in the IDE, then the reset button.
Because a manual erase-flash procedure is repetitive, this is managed automatically by both USB ports, in two different ways:
Opening and closing the '‘Native’ port at the baud rate of 1200bps triggers a “soft erase” procedure: the flash memory is erased and the board is restarted with the bootloader. If, for some reason, the MCU were to crash during this process, it is likely that the soft erase procedure wouldn’t work as it’s done in software by the MCU itself.
Opening and closing the Native port at a baudrate other than 1200bps will not reset the SAM3X. To use the serial monitor, and see what your sketch does from the beginning, you’ll need to add few lines of code inside the setup(). This will ensure the SAM3X will wait for the SerialUSB port to open before executing the sketch:
while (!Serial) ;
Pressing the Reset button on the Due causes the SAM3X reset as well as the USB communication. This interruption means that if the serial monitor is open, it’s necessary to close and reopen it to restart the communication.
The Programming port uses a USB-to-serial chip connected to the first UART of the MCU (RX0 and TX0). The USB-to-serial chip has two pins connected to the Reset and Erase pins of the SAM3X. When you open this serial port, the USB-to-Serial activates the Erase and Reset sequence before it begins communicating with the UART of the SAM3X. This procedure is much more reliable and should work even if the main MCU has crashed.
To communicate serially with the Programming port, use the “Serial” object in the IDE. All existing sketches that use serial communication based on the Uno board should work similarly. The Programming port behaves like the Uno’s serial port in that the USB-to-Serial chip resets the board each time you open the serial monitor (or any other serial communication).
Pressing the Reset button while communicating over the Programming port doesn’t close a USB connection with the computer because only the SAM3X is reset.