Table of Contents
Arduino Due
The Due is a larger form factor Arduino board containing a ATSAM3X8E ARM Cortex-M3 processor running at 84MHz.
There are two USB connectors on this board. One is labelled the native port which is a direct connection to the processor. This allows the MCU to become a USB device in its own right. The other port called the programming port connects to a serial bridge for updating the firmware and it also allows regular UART communication.
Programming
SAM BA
SAM BA is the ROM based bootloader found on the processor and is connected to via the programming port.
JTAG
JTAG utilises the miniature header and can be used with the JLink EDU Mini.
With an adapter the Olimex UCD USB H can also be utilised.
openocd -f "interface/ftdi/olimex-arm-usb-ocd-h.cfg" -c "adapter speed 4000" -c "transport select jtag" -f "target/at91sam3XXX.cfg" Open On-Chip Debugger 0.12.0-rc2+dev-00012-g4e077fdda (2022-11-12-16:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html adapter speed: 4000 kHz jtag cortex_m reset_config sysresetreq Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 500 kHz Info : JTAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4) Info : [sam3.cpu] Cortex-M3 r2p0 processor detected Info : [sam3.cpu] target has 6 breakpoints, 4 watchpoints Info : starting gdb server for sam3.cpu on 3333 Info : Listening on port 3333 for gdb connections
gdb-multiarch (gdb) set architecture armv7 (gdb) target extended-remote localhost:3333 (gdb) info registers r0 0x1ff 511 r1 0x8000000 134217728 r2 0x1 1 r3 0x20070e38 537333304 r4 0x3e8 1000 r5 0x2711 10001 r6 0x81d8c 531852 r7 0x93cdc71 154983537 r8 0x2007002c 537329708 r9 0xd844d7c0 -666576960 r10 0x2358288a 592980106 r11 0x314f2ac3 827271875 r12 0xa8 168 sp 0x20087fd8 0x20087fd8 lr 0x8090b 526603 pc 0x8090a 0x8090a xPSR 0x81000000 -2130706432 msp 0x20087fd8 0x20087fd8 psp 0x4921e0e0 0x4921e0e0 primask 0x0 0 basepri 0x0 0 faultmask 0x0 0 control 0x0 0