This is from the Arduino, successful upload :
Found upload port: /dev/cu.usbmodem142201
/Users/alex/Library/Arduino15/packages/arduino/tools/bossac/1.8.0-48-gb176eee/bossac -i -d --port=cu.usbmodem142201 -U -i --offset=0x4000 -w -v /var/folders/q9/yy0nsq9d2jxfd2ww28x_rzxr0000gn/T/arduino_build_812791/Hallowing_M4_mar20b.ino.bin -R
Set binary mode
version()=v1.1 [Arduino:XYZ] Jul 23 2019 16:43:41
Connected at 921600 baud
readWord(addr=0)=0x2000d6a0
readWord(addr=0xe000ed00)=0x410fc241
readWord(addr=0x4)=0x56d
readWord(addr=0x41002018)=0x60060005
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x80)
writeWord(addr=0x20004020,value=0x20008000)
version()=v1.1 [Arduino:XYZ] Jul 23 2019 16:43:41
readByte(addr=0x804000)=0x39
readByte(addr=0x804001)=0x92
readByte(addr=0x804008)=0xff
readByte(addr=0x804009)=0xff
readByte(addr=0x80400a)=0xff
readByte(addr=0x80400b)=0xff
Device : ATSAMD51x19
Version : v1.1 [Arduino:XYZ] Jul 23 2019 16:43:41
Address : 0x0
Pages : 1024
Page Size : 512 bytes
Total Size : 512KB
Planes : 1
Lock Regions : 32
Locked : none
Security : false
BOD : false
BOR : true
Write 12608 bytes to flash (25 pages)
[ ] 0% (0/25 pages)write(addr=0x20004034,size=0x1000)
writeWord(addr=0x41004014,value=0x4000)
readByte(addr=0x41004012)=0x11
readByte(addr=0x41004013)=0xd
writeWord(addr=0x41004004,value=0xa501)
readByte(addr=0x41004012)=0x11
readByte(addr=0x41004013)=0xd
readByte(addr=0x41004010)=0x1
readByte(addr=0x41004011)=0
writeBuffer(scr_addr=0x20004034, dst_addr=0x4000, size=0x1000)
[========= ] 32% (8/25 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x5000, size=0x1000)
[=================== ] 64% (16/25 pages)write(addr=0x20004034,size=0x1000)
writeWord(addr=0x41004014,value=0x6000)
readByte(addr=0x41004012)=0x11
readByte(addr=0x41004013)=0xd
writeWord(addr=0x41004004,value=0xa501)
readByte(addr=0x41004012)=0x11
readByte(addr=0x41004013)=0xd
readByte(addr=0x41004010)=0x1
readByte(addr=0x41004011)=0
writeBuffer(scr_addr=0x20004034, dst_addr=0x6000, size=0x1000)
[============================ ] 96% (24/25 pages)write(addr=0x20004034,size=0x200)
writeBuffer(scr_addr=0x20004034, dst_addr=0x7000, size=0x200)
[==============================] 100% (25/25 pages)
Done in 0.164 seconds
Verify 12608 bytes of flash
checksumBuffer(start_addr=0x4000, size=0x200) = edc2
[= ] 4% (1/25 pages)checksumBuffer(start_addr=0x4200, size=0x200) = 1104
read(addr=0x4200,size=0x200)
[== ] 8% (2/25 pages)checksumBuffer(start_addr=0x4400, size=0x200) = 2131
read(addr=0x4400,size=0x200)
[=== ] 12% (3/25 pages)checksumBuffer(start_addr=0x4600, size=0x200) = cc80
read(addr=0x4600,size=0x200)
[==== ] 16% (4/25 pages)checksumBuffer(start_addr=0x4800, size=0x200) = 5a40
read(addr=0x4800,size=0x200)
[====== ] 20% (5/25 pages)checksumBuffer(start_addr=0x4a00, size=0x200) = 4235
read(addr=0x4a00,size=0x200)
[======= ] 24% (6/25 pages)checksumBuffer(start_addr=0x4c00, size=0x200) = e1f3
read(addr=0x4c00,size=0x200)
[======== ] 28% (7/25 pages)checksumBuffer(start_addr=0x4e00, size=0x200) = 2cc8
read(addr=0x4e00,size=0x200)
[========= ] 32% (8/25 pages)checksumBuffer(start_addr=0x5000, size=0x200) = c3d5
read(addr=0x5000,size=0x200)
[========== ] 36% (9/25 pages)checksumBuffer(start_addr=0x5200, size=0x200) = 1e71
read(addr=0x5200,size=0x200)
[============ ] 40% (10/25 pages)checksumBuffer(start_addr=0x5400, size=0x200) = c34c
read(addr=0x5400,size=0x200)
[============= ] 44% (11/25 pages)checksumBuffer(start_addr=0x5600, size=0x200) = 5422
read(addr=0x5600,size=0x200)
[============== ] 48% (12/25 pages)checksumBuffer(start_addr=0x5800, size=0x200) = 8c34
read(addr=0x5800,size=0x200)
[=============== ] 52% (13/25 pages)checksumBuffer(start_addr=0x5a00, size=0x200) = 1f72
read(addr=0x5a00,size=0x200)
[================ ] 56% (14/25 pages)checksumBuffer(start_addr=0x5c00, size=0x200) = 2807
read(addr=0x5c00,size=0x200)
[================== ] 60% (15/25 pages)checksumBuffer(start_addr=0x5e00, size=0x200) = d6ba
read(addr=0x5e00,size=0x200)
[=================== ] 64% (16/25 pages)checksumBuffer(start_addr=0x6000, size=0x200) = 2ce9
read(addr=0x6000,size=0x200)
[==================== ] 68% (17/25 pages)checksumBuffer(start_addr=0x6200, size=0x200) = 767f
read(addr=0x6200,size=0x200)
[===================== ] 72% (18/25 pages)checksumBuffer(start_addr=0x6400, size=0x200) = 45da
read(addr=0x6400,size=0x200)
[====================== ] 76% (19/25 pages)checksumBuffer(start_addr=0x6600, size=0x200) = 4e4d
read(addr=0x6600,size=0x200)
[======================== ] 80% (20/25 pages)checksumBuffer(start_addr=0x6800, size=0x200) = f085
read(addr=0x6800,size=0x200)
[========================= ] 84% (21/25 pages)checksumBuffer(start_addr=0x6a00, size=0x200) = 3473
read(addr=0x6a00,size=0x200)
[========================== ] 88% (22/25 pages)checksumBuffer(start_addr=0x6c00, size=0x200) = a8a9
read(addr=0x6c00,size=0x200)
[=========================== ] 92% (23/25 pages)checksumBuffer(start_addr=0x6e00, size=0x200) = b1e5
read(addr=0x6e00,size=0x200)
[============================ ] 96% (24/25 pages)checksumBuffer(start_addr=0x7000, size=0x140) = 33c6
read(addr=0x7000,size=0x200)
[==============================] 100% (25/25 pages)
Verify successful
Done in 0.300 seconds
writeWord(addr=0xe000ed0c,value=0x5fa0004)
Bossa tool seems to be Ok :
bossac --help
Usage: bossac [OPTION...] [FILE]
Basic Open Source SAM-BA Application (BOSSA) Version 1.9.1
Flash programmer for Atmel SAM devices.
Copyright (c) 2011-2018 ShumaTech `(http://www.shumatech.com)`
Examples:
bossac -e -w -v -b image.bin # Erase flash, write flash with image.bin,
# verify the write, and set boot from flash
bossac -r0x10000 image.bin # Read 64KB from flash and store in image.bin