Can program SAMD5x on Windows, but not macOS

I got a Teknic ClearCore motion controller that's based on an Atmel SAME5 MCU, and they have Arduino support for programming it. I'm able to build the examples on macOS using Arduino 2.x, but programming the chip (using bossac) fails to verify. It does seem to write something, but it always fails to verify. Doing the same with Arduino on Windows works fine.

I emailed them over the weekend with a detailed message, but they just came back saying they don't support macOS.

Unfortunately, while Arduino on macOS shows the bossac invocation, it doesn't show the invocation or programming parameters on Windows.

I'm wondering if there’s something wrong with the way the macOS setup is invoking bossac:

"/Users/rmann/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino1/bossac" -i -d -a --port=cu.usbmodem3224101 -U -e -w -v --offset=0x4000 "/Users/rmann/Library/Caches/arduino/sketches/71F55F8C0907EEFE4D496BFF118C38F3/AsgWithMeasuredTorque.ino.bin" -R

The device seems to have a UF2 bootloader on it. When you connect it, a drive mounts with CURRENT.UF2 and INFO_UF2.TXT which contains

UF2 Bootloader v2.3.1-Teknic.4 SLFHRO
Model: ClearCore
Board-ID: SAME53N19A-ClearCore-F1

Is there any way to get the details of how the Windows programmer is invoked? Any other ideas to try?

Hi @jetforme.

You probably have the Show verbose output during: ☐ upload option enabled in the Arduino IDE preferences on your macOS machine, but disabled on the Windows machine.

Yes, I'll provide instructions:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Uncheck the box next to Show verbose output during: compile in the "Preferences" dialog.
    This is not absolutely necessary, but the compilation output is likely not relevant to this effort so it will be best to exclude the superfluous verbose compilation output so that you can focus on the verbose upload output.
  3. Check the box next to Show verbose output during: ☐ upload.
  4. Click the "OK" button.
    The "Preferences" dialog will close.
  5. Perform an upload, just as you did before.

Now you can carefully compare the output produced by that upload against the output from an upload on the macOS machine. If you like, you can post both outputs in a reply here on the forum thread and the forum helpers will take a look.

Okay, the invocations are identical, as are the outputs up until the read/verify stage. The macOS version also has an additional output line for each progress update.

The output for the same source code compiled on each platform:

macOS output:

Sketch uses 135840 bytes (26%) of program storage space. Maximum is 507904 bytes.
Global variables use 9132 bytes of dynamic memory.
Performing 1200-bps touch reset on serial port /dev/cu.usbmodem2101
Waiting for upload port...
No upload port found, using /dev/cu.usbmodem2101 as fallback
"/Users/rmann/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino1/bossac" -i -d -a --port=cu.usbmodem2101 -U -e -w -v --offset=0x4000 "/Users/rmann/Library/Caches/arduino/sketches/833020ED47CB87CD067EA89A46C23BA8/WriteDigitalOutput.ino.bin" -R
Set binary mode
version()=v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
Connected at 921600 baud
readWord(addr=0)=0x2000e430
readWord(addr=0xe000ed00)=0x410fc241
readWord(addr=0x4)=0x59d
readWord(addr=0x41002018)=0x61830303
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x80)
writeWord(addr=0x20004020,value=0x20008000)
version()=v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
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       : ATSAME53x19
Version      : v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
Address      : 0x0
Pages        : 1024
Page Size    : 512 bytes
Total Size   : 512KB
Planes       : 1
Lock Regions : 32
Locked       : none
Security     : false
BOD          : false
BOR          : true
Erase flash
chipErase(addr=0x4000)

Done in 2.366 seconds
Write 136496 bytes to flash (267 pages)

[                              ] 0% (0/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x4000, size=0x1000)
write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x5000, size=0x1000)

[=                             ] 5% (16/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x6000, size=0x1000)

[==                            ] 8% (24/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x7000, size=0x1000)

[===                           ] 11% (32/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x8000, size=0x1000)

[====                          ] 14% (40/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x9000, size=0x1000)

[=====                         ] 17% (48/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xa000, size=0x1000)

[======                        ] 20% (56/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xb000, size=0x1000)

[=======                       ] 23% (64/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xc000, size=0x1000)

[========                      ] 26% (72/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xd000, size=0x1000)

[========                      ] 29% (80/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xe000, size=0x1000)

[=========                     ] 32% (88/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xf000, size=0x1000)

[==========                    ] 35% (96/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x10000, size=0x1000)

[===========                   ] 38% (104/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x11000, size=0x1000)

[============                  ] 41% (112/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x12000, size=0x1000)

[=============                 ] 44% (120/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x13000, size=0x1000)

[==============                ] 47% (128/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x14000, size=0x1000)

[===============               ] 50% (136/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x15000, size=0x1000)

[================              ] 53% (144/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x16000, size=0x1000)

[=================             ] 56% (152/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x17000, size=0x1000)

[=================             ] 59% (160/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x18000, size=0x1000)

[==================            ] 62% (168/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x19000, size=0x1000)

[===================           ] 65% (176/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1a000, size=0x1000)

[====================          ] 68% (184/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1b000, size=0x1000)

[=====================         ] 71% (192/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1c000, size=0x1000)

[======================        ] 74% (200/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1d000, size=0x1000)

[=======================       ] 77% (208/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1e000, size=0x1000)

[========================      ] 80% (216/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1f000, size=0x1000)

[=========================     ] 83% (224/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x20000, size=0x1000)

[==========================    ] 86% (232/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x21000, size=0x1000)

[==========================    ] 89% (240/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x22000, size=0x1000)

[===========================   ] 92% (248/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x23000, size=0x1000)

[============================  ] 95% (256/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x24000, size=0x1000)

[============================= ] 98% (264/267 pages)write(addr=0x20004034,size=0x600)
writeBuffer(scr_addr=0x20004034, dst_addr=0x25000, size=0x600)

[==============================] 100% (267/267 pages)
Done in 0.740 seconds
Verify 136496 bytes of flash
checksumBuffer(start_addr=0x4000, size=0x200) = 489d
read(addr=0x4000,size=0x200)
checksumBuffer(start_addr=0x4200, size=0x200) = d8ef
read(addr=0x4200,size=0x200)
checksumBuffer(start_addr=0x4400, size=0x200) = b605
read(addr=0x4400,size=0x200)
checksumBuffer(start_addr=0x4600, size=0x200) = 137f
read(addr=0x4600,size=0x200)
checksumBuffer(start_addr=0x4800, size=0x200) = 5db8
read(addr=0x4800,size=0x200)
checksumBuffer(start_addr=0x4a00, size=0x200) = a238
read(addr=0x4a00,size=0x200)
checksumBuffer(start_addr=0x4c00, size=0x200) = d072
read(addr=0x4c00,size=0x200)
checksumBuffer(start_addr=0x4e00, size=0x200) = 3623
read(addr=0x4e00,size=0x200)
checksumBuffer(start_addr=0x5000, size=0x200) = 466c
read(addr=0x5000,size=0x200)

[=                             ] 3% (9/267 pages)checksumBuffer(start_addr=0x5200, size=0x200) = 5067
read(addr=0x5200,size=0x200)

[=                             ] 3% (10/267 pages)checksumBuffer(start_addr=0x5400, size=0x200) = a4c2
read(addr=0x5400,size=0x200)

[=                             ] 4% (11/267 pages)checksumBuffer(start_addr=0x5600, size=0x200) = c013
read(addr=0x5600,size=0x200)

[=                             ] 4% (12/267 pages)checksumBuffer(start_addr=0x5800, size=0x200) = e738
read(addr=0x5800,size=0x200)

[=                             ] 4% (13/267 pages)checksumBuffer(start_addr=0x5a00, size=0x200) = 13d6
read(addr=0x5a00,size=0x200)

[=                             ] 5% (14/267 pages)checksumBuffer(start_addr=0x5c00, size=0x200) = f163
read(addr=0x5c00,size=0x200)

[=                             ] 5% (15/267 pages)checksumBuffer(start_addr=0x5e00, size=0x200) = f902
read(addr=0x5e00,size=0x200)

[=                             ] 5% (16/267 pages)checksumBuffer(start_addr=0x6000, size=0x200) = e298
read(addr=0x6000,size=0x200)

[=                             ] 6% (17/267 pages)checksumBuffer(start_addr=0x6200, size=0x200) = e503
read(addr=0x6200,size=0x200)

[==                            ] 6% (18/267 pages)checksumBuffer(start_addr=0x6400, size=0x200) = b22b
read(addr=0x6400,size=0x200)

[==                            ] 7% (19/267 pages)checksumBuffer(start_addr=0x6600, size=0x200) = abb5
read(addr=0x6600,size=0x200)

[==                            ] 7% (20/267 pages)checksumBuffer(start_addr=0x6800, size=0x200) = 5227
read(addr=0x6800,size=0x200)

[==                            ] 7% (21/267 pages)checksumBuffer(start_addr=0x6a00, size=0x200) = 55f7
read(addr=0x6a00,size=0x200)

[==                            ] 8% (22/267 pages)checksumBuffer(start_addr=0x6c00, size=0x200) = 8940
read(addr=0x6c00,size=0x200)

[==                            ] 8% (23/267 pages)checksumBuffer(start_addr=0x6e00, size=0x200) = e73e
read(addr=0x6e00,size=0x200)

[==                            ] 8% (24/267 pages)checksumBuffer(start_addr=0x7000, size=0x200) = f8cc
read(addr=0x7000,size=0x200)

[==                            ] 9% (25/267 pages)checksumBuffer(start_addr=0x7200, size=0x200) = d24d
read(addr=0x7200,size=0x200)

[==                            ] 9% (26/267 pages)checksumBuffer(start_addr=0x7400, size=0x200) = 974e
read(addr=0x7400,size=0x200)

[===                           ] 10% (27/267 pages)checksumBuffer(start_addr=0x7600, size=0x200) = c7ae
read(addr=0x7600,size=0x200)

[===                           ] 10% (28/267 pages)checksumBuffer(start_addr=0x7800, size=0x200) = 96fe
read(addr=0x7800,size=0x200)

[===                           ] 10% (29/267 pages)checksumBuffer(start_addr=0x7a00, size=0x200) = 968a
read(addr=0x7a00,size=0x200)

[===                           ] 11% (30/267 pages)checksumBuffer(start_addr=0x7c00, size=0x200) = 2212
read(addr=0x7c00,size=0x200)

[===                           ] 11% (31/267 pages)checksumBuffer(start_addr=0x7e00, size=0x200) = 9b5
read(addr=0x7e00,size=0x200)

[===                           ] 11% (32/267 pages)checksumBuffer(start_addr=0x8000, size=0x200) = 1c82
read(addr=0x8000,size=0x200)

[===                           ] 12% (33/267 pages)checksumBuffer(start_addr=0x8200, size=0x200) = 3615
read(addr=0x8200,size=0x200)

[===                           ] 12% (34/267 pages)checksumBuffer(start_addr=0x8400, size=0x200) = 7433
read(addr=0x8400,size=0x200)

[===                           ] 13% (35/267 pages)checksumBuffer(start_addr=0x8600, size=0x200) = 286b
read(addr=0x8600,size=0x200)

[====                          ] 13% (36/267 pages)checksumBuffer(start_addr=0x8800, size=0x200) = 42ad
read(addr=0x8800,size=0x200)

[====                          ] 13% (37/267 pages)checksumBuffer(start_addr=0x8a00, size=0x200) = af72
read(addr=0x8a00,size=0x200)

[====                          ] 14% (38/267 pages)checksumBuffer(start_addr=0x8c00, size=0x200) = 3e82
read(addr=0x8c00,size=0x200)

[====                          ] 14% (39/267 pages)checksumBuffer(start_addr=0x8e00, size=0x200) = c23e
read(addr=0x8e00,size=0x200)

[====                          ] 14% (40/267 pages)checksumBuffer(start_addr=0x9000, size=0x200) = ee0c
read(addr=0x9000,size=0x200)

[====                          ] 15% (41/267 pages)checksumBuffer(start_addr=0x9200, size=0x200) = 77b0
read(addr=0x9200,size=0x200)

[====                          ] 15% (42/267 pages)checksumBuffer(start_addr=0x9400, size=0x200) = 6a57
read(addr=0x9400,size=0x200)

[====                          ] 16% (43/267 pages)checksumBuffer(start_addr=0x9600, size=0x200) = 3d9d
read(addr=0x9600,size=0x200)

[====                          ] 16% (44/267 pages)checksumBuffer(start_addr=0x9800, size=0x200) = ab26
read(addr=0x9800,size=0x200)

[=====                         ] 16% (45/267 pages)checksumBuffer(start_addr=0x9a00, size=0x200) = 239f
read(addr=0x9a00,size=0x200)

[=====                         ] 17% (46/267 pages)checksumBuffer(start_addr=0x9c00, size=0x200) = f1aa
read(addr=0x9c00,size=0x200)

[=====                         ] 17% (47/267 pages)checksumBuffer(start_addr=0x9e00, size=0x200) = 4eb8
read(addr=0x9e00,size=0x200)

[=====                         ] 17% (48/267 pages)checksumBuffer(start_addr=0xa000, size=0x200) = f68
read(addr=0xa000,size=0x200)

[=====                         ] 18% (49/267 pages)checksumBuffer(start_addr=0xa200, size=0x200) = 4da2
read(addr=0xa200,size=0x200)

[=====                         ] 18% (50/267 pages)checksumBuffer(start_addr=0xa400, size=0x200) = 3578
read(addr=0xa400,size=0x200)

[=====                         ] 19% (51/267 pages)checksumBuffer(start_addr=0xa600, size=0x200) = ed44
read(addr=0xa600,size=0x200)

[=====                         ] 19% (52/267 pages)checksumBuffer(start_addr=0xa800, size=0x200) = a8ae
read(addr=0xa800,size=0x200)

[=====                         ] 19% (53/267 pages)checksumBuffer(start_addr=0xaa00, size=0x200) = 8f4c
read(addr=0xaa00,size=0x200)

[======                        ] 20% (54/267 pages)checksumBuffer(start_addr=0xac00, size=0x200) = 307b
read(addr=0xac00,size=0x200)

[======                        ] 20% (55/267 pages)checksumBuffer(start_addr=0xae00, size=0x200) = 381c
read(addr=0xae00,size=0x200)

[======                        ] 20% (56/267 pages)checksumBuffer(start_addr=0xb000, size=0x200) = d8fa
read(addr=0xb000,size=0x200)

[======                        ] 21% (57/267 pages)checksumBuffer(start_addr=0xb200, size=0x200) = 364d
read(addr=0xb200,size=0x200)

[======                        ] 21% (58/267 pages)checksumBuffer(start_addr=0xb400, size=0x200) = de47
read(addr=0xb400,size=0x200)

[======                        ] 22% (59/267 pages)checksumBuffer(start_addr=0xb600, size=0x200) = f3e2
read(addr=0xb600,size=0x200)

[======                        ] 22% (60/267 pages)checksumBuffer(start_addr=0xb800, size=0x200) = 9e17
read(addr=0xb800,size=0x200)

[======                        ] 22% (61/267 pages)checksumBuffer(start_addr=0xba00, size=0x200) = 178d
read(addr=0xba00,size=0x200)

[======                        ] 23% (62/267 pages)checksumBuffer(start_addr=0xbc00, size=0x200) = 80cc
read(addr=0xbc00,size=0x200)

[=======                       ] 23% (63/267 pages)checksumBuffer(start_addr=0xbe00, size=0x200) = 86ae
read(addr=0xbe00,size=0x200)

[=======                       ] 23% (64/267 pages)checksumBuffer(start_addr=0xc000, size=0x200) = e868

[=======                       ] 24% (65/267 pages)checksumBuffer(start_addr=0xc200, size=0x200) = 173b

[=======                       ] 24% (66/267 pages)checksumBuffer(start_addr=0xc400, size=0x200) = c551

[=======                       ] 25% (67/267 pages)checksumBuffer(start_addr=0xc600, size=0x200) = a91f

[=======                       ] 25% (68/267 pages)checksumBuffer(start_addr=0xc800, size=0x200) = b894

[=======                       ] 25% (69/267 pages)checksumBuffer(start_addr=0xca00, size=0x200) = 4a44

[=======                       ] 26% (70/267 pages)checksumBuffer(start_addr=0xcc00, size=0x200) = aac6

[=======                       ] 26% (71/267 pages)checksumBuffer(start_addr=0xce00, size=0x200) = b96

[========                      ] 26% (72/267 pages)checksumBuffer(start_addr=0xd000, size=0x200) = d1df
read(addr=0xd000,size=0x200)

[========                      ] 27% (73/267 pages)checksumBuffer(start_addr=0xd200, size=0x200) = cd71
read(addr=0xd200,size=0x200)

[========                      ] 27% (74/267 pages)checksumBuffer(start_addr=0xd400, size=0x200) = 376c
read(addr=0xd400,size=0x200)

[========                      ] 28% (75/267 pages)checksumBuffer(start_addr=0xd600, size=0x200) = a534
read(addr=0xd600,size=0x200)

[========                      ] 28% (76/267 pages)checksumBuffer(start_addr=0xd800, size=0x200) = 9d31
read(addr=0xd800,size=0x200)

[========                      ] 28% (77/267 pages)checksumBuffer(start_addr=0xda00, size=0x200) = 23e
read(addr=0xda00,size=0x200)

[========                      ] 29% (78/267 pages)checksumBuffer(start_addr=0xdc00, size=0x200) = 14c3
read(addr=0xdc00,size=0x200)

[========                      ] 29% (79/267 pages)checksumBuffer(start_addr=0xde00, size=0x200) = aeb6
read(addr=0xde00,size=0x200)

[========                      ] 29% (80/267 pages)checksumBuffer(start_addr=0xe000, size=0x200) = d177
read(addr=0xe000,size=0x200)

[=========                     ] 30% (81/267 pages)checksumBuffer(start_addr=0xe200, size=0x200) = 2780
read(addr=0xe200,size=0x200)

[=========                     ] 30% (82/267 pages)checksumBuffer(start_addr=0xe400, size=0x200) = 8c19
read(addr=0xe400,size=0x200)

[=========                     ] 31% (83/267 pages)checksumBuffer(start_addr=0xe600, size=0x200) = 709e
read(addr=0xe600,size=0x200)

[=========                     ] 31% (84/267 pages)checksumBuffer(start_addr=0xe800, size=0x200) = 7d73
read(addr=0xe800,size=0x200)

[=========                     ] 31% (85/267 pages)checksumBuffer(start_addr=0xea00, size=0x200) = 3624
read(addr=0xea00,size=0x200)

[=========                     ] 32% (86/267 pages)checksumBuffer(start_addr=0xec00, size=0x200) = 52fe
read(addr=0xec00,size=0x200)

[=========                     ] 32% (87/267 pages)checksumBuffer(start_addr=0xee00, size=0x200) = 5005
read(addr=0xee00,size=0x200)

[=========                     ] 32% (88/267 pages)checksumBuffer(start_addr=0xf000, size=0x200) = 20d
read(addr=0xf000,size=0x200)

[==========                    ] 33% (89/267 pages)checksumBuffer(start_addr=0xf200, size=0x200) = 8d80
read(addr=0xf200,size=0x200)

[==========                    ] 33% (90/267 pages)checksumBuffer(start_addr=0xf400, size=0x200) = 7223
read(addr=0xf400,size=0x200)

[==========                    ] 34% (91/267 pages)checksumBuffer(start_addr=0xf600, size=0x200) = 16c5
read(addr=0xf600,size=0x200)

[==========                    ] 34% (92/267 pages)checksumBuffer(start_addr=0xf800, size=0x200) = 17f6
read(addr=0xf800,size=0x200)

[==========                    ] 34% (93/267 pages)checksumBuffer(start_addr=0xfa00, size=0x200) = 528e
read(addr=0xfa00,size=0x200)

[==========                    ] 35% (94/267 pages)checksumBuffer(start_addr=0xfc00, size=0x200) = 7c99
read(addr=0xfc00,size=0x200)

[==========                    ] 35% (95/267 pages)checksumBuffer(start_addr=0xfe00, size=0x200) = 5335
read(addr=0xfe00,size=0x200)

[==========                    ] 35% (96/267 pages)checksumBuffer(start_addr=0x10000, size=0x200) = 1a99
read(addr=0x10000,size=0x200)

[==========                    ] 36% (97/267 pages)checksumBuffer(start_addr=0x10200, size=0x200) = f071
read(addr=0x10200,size=0x200)

[===========                   ] 36% (98/267 pages)checksumBuffer(start_addr=0x10400, size=0x200) = 576f
read(addr=0x10400,size=0x200)

[===========                   ] 37% (99/267 pages)checksumBuffer(start_addr=0x10600, size=0x200) = 6a87
read(addr=0x10600,size=0x200)

[===========                   ] 37% (100/267 pages)checksumBuffer(start_addr=0x10800, size=0x200) = 86ad
read(addr=0x10800,size=0x200)

[===========                   ] 37% (101/267 pages)checksumBuffer(start_addr=0x10a00, size=0x200) = 4851
read(addr=0x10a00,size=0x200)

[===========                   ] 38% (102/267 pages)checksumBuffer(start_addr=0x10c00, size=0x200) = 5b6b
read(addr=0x10c00,size=0x200)

[===========                   ] 38% (103/267 pages)checksumBuffer(start_addr=0x10e00, size=0x200) = 2c86
read(addr=0x10e00,size=0x200)

[===========                   ] 38% (104/267 pages)checksumBuffer(start_addr=0x11000, size=0x200) = 3a1
read(addr=0x11000,size=0x200)

[===========                   ] 39% (105/267 pages)checksumBuffer(start_addr=0x11200, size=0x200) = 11d7
read(addr=0x11200,size=0x200)

[===========                   ] 39% (106/267 pages)checksumBuffer(start_addr=0x11400, size=0x200) = 7614
read(addr=0x11400,size=0x200)

[============                  ] 40% (107/267 pages)checksumBuffer(start_addr=0x11600, size=0x200) = a30
read(addr=0x11600,size=0x200)

[============                  ] 40% (108/267 pages)checksumBuffer(start_addr=0x11800, size=0x200) = 65b5
read(addr=0x11800,size=0x200)

[============                  ] 40% (109/267 pages)checksumBuffer(start_addr=0x11a00, size=0x200) = 40a5
read(addr=0x11a00,size=0x200)

[============                  ] 41% (110/267 pages)checksumBuffer(start_addr=0x11c00, size=0x200) = a5b8
read(addr=0x11c00,size=0x200)

[============                  ] 41% (111/267 pages)checksumBuffer(start_addr=0x11e00, size=0x200) = cd21
read(addr=0x11e00,size=0x200)

[============                  ] 41% (112/267 pages)checksumBuffer(start_addr=0x12000, size=0x200) = 4dda
read(addr=0x12000,size=0x200)

[============                  ] 42% (113/267 pages)checksumBuffer(start_addr=0x12200, size=0x200) = 70a2
read(addr=0x12200,size=0x200)

[============                  ] 42% (114/267 pages)checksumBuffer(start_addr=0x12400, size=0x200) = 238d
read(addr=0x12400,size=0x200)

[============                  ] 43% (115/267 pages)checksumBuffer(start_addr=0x12600, size=0x200) = 4815
read(addr=0x12600,size=0x200)

[=============                 ] 43% (116/267 pages)checksumBuffer(start_addr=0x12800, size=0x200) = c88d
read(addr=0x12800,size=0x200)

[=============                 ] 43% (117/267 pages)checksumBuffer(start_addr=0x12a00, size=0x200) = 29e5
read(addr=0x12a00,size=0x200)

[=============                 ] 44% (118/267 pages)checksumBuffer(start_addr=0x12c00, size=0x200) = ff9e
read(addr=0x12c00,size=0x200)

[=============                 ] 44% (119/267 pages)checksumBuffer(start_addr=0x12e00, size=0x200) = cef5
read(addr=0x12e00,size=0x200)

[=============                 ] 44% (120/267 pages)checksumBuffer(start_addr=0x13000, size=0x200) = 75ed
read(addr=0x13000,size=0x200)

[=============                 ] 45% (121/267 pages)checksumBuffer(start_addr=0x13200, size=0x200) = 5f7a
read(addr=0x13200,size=0x200)

[=============                 ] 45% (122/267 pages)checksumBuffer(start_addr=0x13400, size=0x200) = aa95
read(addr=0x13400,size=0x200)

[=============                 ] 46% (123/267 pages)checksumBuffer(start_addr=0x13600, size=0x200) = f8aa
read(addr=0x13600,size=0x200)

[=============                 ] 46% (124/267 pages)checksumBuffer(start_addr=0x13800, size=0x200) = 7c81
read(addr=0x13800,size=0x200)

[==============                ] 46% (125/267 pages)checksumBuffer(start_addr=0x13a00, size=0x200) = 62cf
read(addr=0x13a00,size=0x200)

[==============                ] 47% (126/267 pages)checksumBuffer(start_addr=0x13c00, size=0x200) = 12c4
read(addr=0x13c00,size=0x200)

[==============                ] 47% (127/267 pages)checksumBuffer(start_addr=0x13e00, size=0x200) = dcc
read(addr=0x13e00,size=0x200)

[==============                ] 47% (128/267 pages)checksumBuffer(start_addr=0x14000, size=0x200) = 10a6
read(addr=0x14000,size=0x200)

[==============                ] 48% (129/267 pages)checksumBuffer(start_addr=0x14200, size=0x200) = 8f28
read(addr=0x14200,size=0x200)

[==============                ] 48% (130/267 pages)checksumBuffer(start_addr=0x14400, size=0x200) = d0ec
read(addr=0x14400,size=0x200)

[==============                ] 49% (131/267 pages)checksumBuffer(start_addr=0x14600, size=0x200) = 5d21
read(addr=0x14600,size=0x200)

[==============                ] 49% (132/267 pages)checksumBuffer(start_addr=0x14800, size=0x200) = b7a
read(addr=0x14800,size=0x200)

[==============                ] 49% (133/267 pages)checksumBuffer(start_addr=0x14a00, size=0x200) = 1ac
read(addr=0x14a00,size=0x200)

[===============               ] 50% (134/267 pages)checksumBuffer(start_addr=0x14c00, size=0x200) = 3e5b
read(addr=0x14c00,size=0x200)

[===============               ] 50% (135/267 pages)checksumBuffer(start_addr=0x14e00, size=0x200) = 9a12
read(addr=0x14e00,size=0x200)

[===============               ] 50% (136/267 pages)checksumBuffer(start_addr=0x15000, size=0x200) = d5b4
read(addr=0x15000,size=0x200)

[===============               ] 51% (137/267 pages)checksumBuffer(start_addr=0x15200, size=0x200) = 52a5
read(addr=0x15200,size=0x200)

[===============               ] 51% (138/267 pages)checksumBuffer(start_addr=0x15400, size=0x200) = 20a8
read(addr=0x15400,size=0x200)

[===============               ] 52% (139/267 pages)checksumBuffer(start_addr=0x15600, size=0x200) = bc66
read(addr=0x15600,size=0x200)

[===============               ] 52% (140/267 pages)checksumBuffer(start_addr=0x15800, size=0x200) = 48d
read(addr=0x15800,size=0x200)

[===============               ] 52% (141/267 pages)checksumBuffer(start_addr=0x15a00, size=0x200) = 3750
read(addr=0x15a00,size=0x200)

[===============               ] 53% (142/267 pages)checksumBuffer(start_addr=0x15c00, size=0x200) = eeb8
read(addr=0x15c00,size=0x200)

[================              ] 53% (143/267 pages)checksumBuffer(start_addr=0x15e00, size=0x200) = 8309
read(addr=0x15e00,size=0x200)

[================              ] 53% (144/267 pages)checksumBuffer(start_addr=0x16000, size=0x200) = f6d0
read(addr=0x16000,size=0x200)

[================              ] 54% (145/267 pages)checksumBuffer(start_addr=0x16200, size=0x200) = 36c6
read(addr=0x16200,size=0x200)

[================              ] 54% (146/267 pages)checksumBuffer(start_addr=0x16400, size=0x200) = 94bc
read(addr=0x16400,size=0x200)

[================              ] 55% (147/267 pages)checksumBuffer(start_addr=0x16600, size=0x200) = 68ce
read(addr=0x16600,size=0x200)

[================              ] 55% (148/267 pages)checksumBuffer(start_addr=0x16800, size=0x200) = b69d
read(addr=0x16800,size=0x200)

[================              ] 55% (149/267 pages)checksumBuffer(start_addr=0x16a00, size=0x200) = f1ce
read(addr=0x16a00,size=0x200)

[================              ] 56% (150/267 pages)checksumBuffer(start_addr=0x16c00, size=0x200) = 9073
read(addr=0x16c00,size=0x200)

[================              ] 56% (151/267 pages)checksumBuffer(start_addr=0x16e00, size=0x200) = 7103
read(addr=0x16e00,size=0x200)

[=================             ] 56% (152/267 pages)checksumBuffer(start_addr=0x17000, size=0x200) = 4dd1
read(addr=0x17000,size=0x200)

[=================             ] 57% (153/267 pages)checksumBuffer(start_addr=0x17200, size=0x200) = 8041
read(addr=0x17200,size=0x200)

[=================             ] 57% (154/267 pages)checksumBuffer(start_addr=0x17400, size=0x200) = d4f2
read(addr=0x17400,size=0x200)

[=================             ] 58% (155/267 pages)checksumBuffer(start_addr=0x17600, size=0x200) = e4b7
read(addr=0x17600,size=0x200)

[=================             ] 58% (156/267 pages)checksumBuffer(start_addr=0x17800, size=0x200) = 1652
read(addr=0x17800,size=0x200)

[=================             ] 58% (157/267 pages)checksumBuffer(start_addr=0x17a00, size=0x200) = 633b
read(addr=0x17a00,size=0x200)

[=================             ] 59% (158/267 pages)checksumBuffer(start_addr=0x17c00, size=0x200) = 5906
read(addr=0x17c00,size=0x200)

[=================             ] 59% (159/267 pages)checksumBuffer(start_addr=0x17e00, size=0x200) = a3b1
read(addr=0x17e00,size=0x200)

[=================             ] 59% (160/267 pages)checksumBuffer(start_addr=0x18000, size=0x200) = 41f0

[==================            ] 60% (161/267 pages)checksumBuffer(start_addr=0x18200, size=0x200) = e52d

[==================            ] 60% (162/267 pages)checksumBuffer(start_addr=0x18400, size=0x200) = 6c5f

[==================            ] 61% (163/267 pages)checksumBuffer(start_addr=0x18600, size=0x200) = ba4c

[==================            ] 61% (164/267 pages)checksumBuffer(start_addr=0x18800, size=0x200) = 4f34

[==================            ] 61% (165/267 pages)checksumBuffer(start_addr=0x18a00, size=0x200) = 1cac

[==================            ] 62% (166/267 pages)checksumBuffer(start_addr=0x18c00, size=0x200) = 7ec

[==================            ] 62% (167/267 pages)checksumBuffer(start_addr=0x18e00, size=0x200) = e6c2

[==================            ] 62% (168/267 pages)checksumBuffer(start_addr=0x19000, size=0x200) = 91f1
read(addr=0x19000,size=0x200)

[==================            ] 63% (169/267 pages)checksumBuffer(start_addr=0x19200, size=0x200) = 9d13
read(addr=0x19200,size=0x200)

[===================           ] 63% (170/267 pages)checksumBuffer(start_addr=0x19400, size=0x200) = 619e
read(addr=0x19400,size=0x200)

[===================           ] 64% (171/267 pages)checksumBuffer(start_addr=0x19600, size=0x200) = 564a
read(addr=0x19600,size=0x200)

[===================           ] 64% (172/267 pages)checksumBuffer(start_addr=0x19800, size=0x200) = 2c7f
read(addr=0x19800,size=0x200)

[===================           ] 64% (173/267 pages)checksumBuffer(start_addr=0x19a00, size=0x200) = 76bd
read(addr=0x19a00,size=0x200)

[===================           ] 65% (174/267 pages)checksumBuffer(start_addr=0x19c00, size=0x200) = 134b
read(addr=0x19c00,size=0x200)

[===================           ] 65% (175/267 pages)checksumBuffer(start_addr=0x19e00, size=0x200) = a569
read(addr=0x19e00,size=0x200)

[===================           ] 65% (176/267 pages)checksumBuffer(start_addr=0x1a000, size=0x200) = 5938
read(addr=0x1a000,size=0x200)

[===================           ] 66% (177/267 pages)checksumBuffer(start_addr=0x1a200, size=0x200) = ee21
read(addr=0x1a200,size=0x200)

[====================          ] 66% (178/267 pages)checksumBuffer(start_addr=0x1a400, size=0x200) = 8014
read(addr=0x1a400,size=0x200)

[====================          ] 67% (179/267 pages)checksumBuffer(start_addr=0x1a600, size=0x200) = 42d6
read(addr=0x1a600,size=0x200)

[====================          ] 67% (180/267 pages)checksumBuffer(start_addr=0x1a800, size=0x200) = eda7
read(addr=0x1a800,size=0x200)

[====================          ] 67% (181/267 pages)checksumBuffer(start_addr=0x1aa00, size=0x200) = 9f29
read(addr=0x1aa00,size=0x200)

[====================          ] 68% (182/267 pages)checksumBuffer(start_addr=0x1ac00, size=0x200) = 3a1a
read(addr=0x1ac00,size=0x200)

[====================          ] 68% (183/267 pages)checksumBuffer(start_addr=0x1ae00, size=0x200) = 1c24
read(addr=0x1ae00,size=0x200)

[====================          ] 68% (184/267 pages)checksumBuffer(start_addr=0x1b000, size=0x200) = ab4b
read(addr=0x1b000,size=0x200)

[====================          ] 69% (185/267 pages)checksumBuffer(start_addr=0x1b200, size=0x200) = 11e0
read(addr=0x1b200,size=0x200)

[====================          ] 69% (186/267 pages)checksumBuffer(start_addr=0x1b400, size=0x200) = 7734
read(addr=0x1b400,size=0x200)

[=====================         ] 70% (187/267 pages)checksumBuffer(start_addr=0x1b600, size=0x200) = bedb
read(addr=0x1b600,size=0x200)

[=====================         ] 70% (188/267 pages)checksumBuffer(start_addr=0x1b800, size=0x200) = ed8b
read(addr=0x1b800,size=0x200)

[=====================         ] 70% (189/267 pages)checksumBuffer(start_addr=0x1ba00, size=0x200) = 9160
read(addr=0x1ba00,size=0x200)

[=====================         ] 71% (190/267 pages)checksumBuffer(start_addr=0x1bc00, size=0x200) = 49cc
read(addr=0x1bc00,size=0x200)

[=====================         ] 71% (191/267 pages)checksumBuffer(start_addr=0x1be00, size=0x200) = 9c19
read(addr=0x1be00,size=0x200)

[=====================         ] 71% (192/267 pages)checksumBuffer(start_addr=0x1c000, size=0x200) = b008
read(addr=0x1c000,size=0x200)

[=====================         ] 72% (193/267 pages)checksumBuffer(start_addr=0x1c200, size=0x200) = 4e89
read(addr=0x1c200,size=0x200)

[=====================         ] 72% (194/267 pages)checksumBuffer(start_addr=0x1c400, size=0x200) = 87
read(addr=0x1c400,size=0x200)

[=====================         ] 73% (195/267 pages)checksumBuffer(start_addr=0x1c600, size=0x200) = 4c2
read(addr=0x1c600,size=0x200)

[======================        ] 73% (196/267 pages)checksumBuffer(start_addr=0x1c800, size=0x200) = b045
read(addr=0x1c800,size=0x200)

[======================        ] 73% (197/267 pages)checksumBuffer(start_addr=0x1ca00, size=0x200) = d9f3
read(addr=0x1ca00,size=0x200)

[======================        ] 74% (198/267 pages)checksumBuffer(start_addr=0x1cc00, size=0x200) = 460b
read(addr=0x1cc00,size=0x200)

[======================        ] 74% (199/267 pages)checksumBuffer(start_addr=0x1ce00, size=0x200) = 8677
read(addr=0x1ce00,size=0x200)

[======================        ] 74% (200/267 pages)checksumBuffer(start_addr=0x1d000, size=0x200) = 1689
read(addr=0x1d000,size=0x200)

[======================        ] 75% (201/267 pages)checksumBuffer(start_addr=0x1d200, size=0x200) = 2c8d
read(addr=0x1d200,size=0x200)

[======================        ] 75% (202/267 pages)checksumBuffer(start_addr=0x1d400, size=0x200) = 539
read(addr=0x1d400,size=0x200)

[======================        ] 76% (203/267 pages)checksumBuffer(start_addr=0x1d600, size=0x200) = b8b
read(addr=0x1d600,size=0x200)

[======================        ] 76% (204/267 pages)checksumBuffer(start_addr=0x1d800, size=0x200) = 62e1
read(addr=0x1d800,size=0x200)

[=======================       ] 76% (205/267 pages)checksumBuffer(start_addr=0x1da00, size=0x200) = 4bf8
read(addr=0x1da00,size=0x200)

[=======================       ] 77% (206/267 pages)checksumBuffer(start_addr=0x1dc00, size=0x200) = b7d5
read(addr=0x1dc00,size=0x200)

[=======================       ] 77% (207/267 pages)checksumBuffer(start_addr=0x1de00, size=0x200) = 1b6d
read(addr=0x1de00,size=0x200)

[=======================       ] 77% (208/267 pages)checksumBuffer(start_addr=0x1e000, size=0x200) = e93c
read(addr=0x1e000,size=0x200)

[=======================       ] 78% (209/267 pages)checksumBuffer(start_addr=0x1e200, size=0x200) = 2b7d
read(addr=0x1e200,size=0x200)

[=======================       ] 78% (210/267 pages)checksumBuffer(start_addr=0x1e400, size=0x200) = 1b75
read(addr=0x1e400,size=0x200)

[=======================       ] 79% (211/267 pages)checksumBuffer(start_addr=0x1e600, size=0x200) = 5f41
read(addr=0x1e600,size=0x200)

[=======================       ] 79% (212/267 pages)checksumBuffer(start_addr=0x1e800, size=0x200) = 470a
read(addr=0x1e800,size=0x200)

[=======================       ] 79% (213/267 pages)checksumBuffer(start_addr=0x1ea00, size=0x200) = abb8
read(addr=0x1ea00,size=0x200)

[========================      ] 80% (214/267 pages)checksumBuffer(start_addr=0x1ec00, size=0x200) = 955b
read(addr=0x1ec00,size=0x200)

[========================      ] 80% (215/267 pages)checksumBuffer(start_addr=0x1ee00, size=0x200) = aa22
read(addr=0x1ee00,size=0x200)

[========================      ] 80% (216/267 pages)checksumBuffer(start_addr=0x1f000, size=0x200) = dfd0
read(addr=0x1f000,size=0x200)

[========================      ] 81% (217/267 pages)checksumBuffer(start_addr=0x1f200, size=0x200) = 4626
read(addr=0x1f200,size=0x200)

[========================      ] 81% (218/267 pages)checksumBuffer(start_addr=0x1f400, size=0x200) = 9c0b
read(addr=0x1f400,size=0x200)

[========================      ] 82% (219/267 pages)checksumBuffer(start_addr=0x1f600, size=0x200) = 9d9e
read(addr=0x1f600,size=0x200)

[========================      ] 82% (220/267 pages)checksumBuffer(start_addr=0x1f800, size=0x200) = 7484
read(addr=0x1f800,size=0x200)

[========================      ] 82% (221/267 pages)checksumBuffer(start_addr=0x1fa00, size=0x200) = c31f
read(addr=0x1fa00,size=0x200)

[========================      ] 83% (222/267 pages)checksumBuffer(start_addr=0x1fc00, size=0x200) = ec2f
read(addr=0x1fc00,size=0x200)

[=========================     ] 83% (223/267 pages)checksumBuffer(start_addr=0x1fe00, size=0x200) = a99b
read(addr=0x1fe00,size=0x200)

[=========================     ] 83% (224/267 pages)checksumBuffer(start_addr=0x20000, size=0x200) = 54f1
read(addr=0x20000,size=0x200)

[=========================     ] 84% (225/267 pages)checksumBuffer(start_addr=0x20200, size=0x200) = baf
read(addr=0x20200,size=0x200)

[=========================     ] 84% (226/267 pages)checksumBuffer(start_addr=0x20400, size=0x200) = 1a13
read(addr=0x20400,size=0x200)

[=========================     ] 85% (227/267 pages)checksumBuffer(start_addr=0x20600, size=0x200) = 233a
read(addr=0x20600,size=0x200)

[=========================     ] 85% (228/267 pages)checksumBuffer(start_addr=0x20800, size=0x200) = 9af5
read(addr=0x20800,size=0x200)

[=========================     ] 85% (229/267 pages)checksumBuffer(start_addr=0x20a00, size=0x200) = c07d
read(addr=0x20a00,size=0x200)

[=========================     ] 86% (230/267 pages)checksumBuffer(start_addr=0x20c00, size=0x200) = e91e
read(addr=0x20c00,size=0x200)

[=========================     ] 86% (231/267 pages)checksumBuffer(start_addr=0x20e00, size=0x200) = e2f9
read(addr=0x20e00,size=0x200)

[==========================    ] 86% (232/267 pages)checksumBuffer(start_addr=0x21000, size=0x200) = 7fb8
read(addr=0x21000,size=0x200)

[==========================    ] 87% (233/267 pages)checksumBuffer(start_addr=0x21200, size=0x200) = 2f1
read(addr=0x21200,size=0x200)

[==========================    ] 87% (234/267 pages)checksumBuffer(start_addr=0x21400, size=0x200) = aca7
read(addr=0x21400,size=0x200)

[==========================    ] 88% (235/267 pages)checksumBuffer(start_addr=0x21600, size=0x200) = a88d
read(addr=0x21600,size=0x200)

[==========================    ] 88% (236/267 pages)checksumBuffer(start_addr=0x21800, size=0x200) = 4037
read(addr=0x21800,size=0x200)

[==========================    ] 88% (237/267 pages)checksumBuffer(start_addr=0x21a00, size=0x200) = 3cab
read(addr=0x21a00,size=0x200)

[==========================    ] 89% (238/267 pages)checksumBuffer(start_addr=0x21c00, size=0x200) = cbff
read(addr=0x21c00,size=0x200)

[==========================    ] 89% (239/267 pages)checksumBuffer(start_addr=0x21e00, size=0x200) = 51f6
read(addr=0x21e00,size=0x200)

[==========================    ] 89% (240/267 pages)checksumBuffer(start_addr=0x22000, size=0x200) = 3085
read(addr=0x22000,size=0x200)

[===========================   ] 90% (241/267 pages)checksumBuffer(start_addr=0x22200, size=0x200) = e3cd
read(addr=0x22200,size=0x200)

[===========================   ] 90% (242/267 pages)checksumBuffer(start_addr=0x22400, size=0x200) = dff8
read(addr=0x22400,size=0x200)

[===========================   ] 91% (243/267 pages)checksumBuffer(start_addr=0x22600, size=0x200) = abe9
read(addr=0x22600,size=0x200)

[===========================   ] 91% (244/267 pages)checksumBuffer(start_addr=0x22800, size=0x200) = 824c
read(addr=0x22800,size=0x200)

[===========================   ] 91% (245/267 pages)checksumBuffer(start_addr=0x22a00, size=0x200) = 4584
read(addr=0x22a00,size=0x200)

[===========================   ] 92% (246/267 pages)checksumBuffer(start_addr=0x22c00, size=0x200) = 4b7b
read(addr=0x22c00,size=0x200)

[===========================   ] 92% (247/267 pages)checksumBuffer(start_addr=0x22e00, size=0x200) = 43a2
read(addr=0x22e00,size=0x200)

[===========================   ] 92% (248/267 pages)checksumBuffer(start_addr=0x23000, size=0x200) = cdb3
read(addr=0x23000,size=0x200)

[===========================   ] 93% (249/267 pages)checksumBuffer(start_addr=0x23200, size=0x200) = 7361
read(addr=0x23200,size=0x200)

[============================  ] 93% (250/267 pages)checksumBuffer(start_addr=0x23400, size=0x200) = 2f5b
read(addr=0x23400,size=0x200)

[============================  ] 94% (251/267 pages)checksumBuffer(start_addr=0x23600, size=0x200) = d5e3
read(addr=0x23600,size=0x200)

[============================  ] 94% (252/267 pages)checksumBuffer(start_addr=0x23800, size=0x200) = ca50
read(addr=0x23800,size=0x200)

[============================  ] 94% (253/267 pages)checksumBuffer(start_addr=0x23a00, size=0x200) = fa31
read(addr=0x23a00,size=0x200)

[============================  ] 95% (254/267 pages)checksumBuffer(start_addr=0x23c00, size=0x200) = b8c4
read(addr=0x23c00,size=0x200)

[============================  ] 95% (255/267 pages)checksumBuffer(start_addr=0x23e00, size=0x200) = 671f
read(addr=0x23e00,size=0x200)

[============================  ] 95% (256/267 pages)checksumBuffer(start_addr=0x24000, size=0x200) = ddab
read(addr=0x24000,size=0x200)

[============================  ] 96% (257/267 pages)checksumBuffer(start_addr=0x24200, size=0x200) = fe2f
read(addr=0x24200,size=0x200)

[============================  ] 96% (258/267 pages)checksumBuffer(start_addr=0x24400, size=0x200) = c183
read(addr=0x24400,size=0x200)

[============================= ] 97% (259/267 pages)checksumBuffer(start_addr=0x24600, size=0x200) = eb5e
read(addr=0x24600,size=0x200)

[============================= ] 97% (260/267 pages)checksumBuffer(start_addr=0x24800, size=0x200) = aefc
read(addr=0x24800,size=0x200)

[============================= ] 97% (261/267 pages)checksumBuffer(start_addr=0x24a00, size=0x200) = a67b
read(addr=0x24a00,size=0x200)

[============================= ] 98% (262/267 pages)checksumBuffer(start_addr=0x24c00, size=0x200) = 0
read(addr=0x24c00,size=0x200)

[============================= ] 98% (263/267 pages)checksumBuffer(start_addr=0x24e00, size=0x200) = 3cb1
read(addr=0x24e00,size=0x200)

[============================= ] 98% (264/267 pages)checksumBuffer(start_addr=0x25000, size=0x200) = 409b
read(addr=0x25000,size=0x200)

[============================= ] 99% (265/267 pages)checksumBuffer(start_addr=0x25200, size=0x200) = 7e22
read(addr=0x25200,size=0x200)

[============================= ] 99% (266/267 pages)checksumBuffer(start_addr=0x25400, size=0x130) = f015
read(addr=0x25400,size=0x200)

[==============================] 100% (267/267 pages)
Verify failed
Page errors: 251
Byte errors: 124485
Failed uploading: uploading error: exit status 2

Windows output:

Sketch uses 135840 bytes (26%) of program storage space. Maximum is 507904 bytes.
Global variables use 9132 bytes of dynamic memory.
Performing 1200-bps touch reset on serial port COM4
Waiting for upload port...
No upload port found, using COM4 as fallback
"C:\Users\Rick\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.9.1-arduino1/bossac.exe" -i -d -a --port=COM4 -U -e -w -v --offset=0x4000 "C:\Users\Rick\AppData\Local\arduino\sketches\6F79964E375E53952DB058595B408258/WriteDigitalOutput.ino.bin" -R
Set binary mode
version()=v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
Connected at 921600 baud
readWord(addr=0)=0x2000e430
readWord(addr=0xe000ed00)=0x410fc241
readWord(addr=0x4)=0x59d
readWord(addr=0x41002018)=0x61830303
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x80)
writeWord(addr=0x20004020,value=0x20008000)
version()=v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
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       : ATSAME53x19
Version      : v1.1 [Arduino:XYZ] Sep 14 2020 14:10:57
Address      : 0x0
Pages        : 1024
Page Size    : 512 bytes
Total Size   : 512KB
Planes       : 1
Lock Regions : 32
Locked       : none
Security     : false
BOD          : false
BOR          : true
Erase flash
chipErase(addr=0x4000)

Done in 2.354 seconds
Write 136504 bytes to flash (267 pages)

[                              ] 0% (0/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x4000, size=0x1000)
write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x5000, size=0x1000)

[=                             ] 5% (16/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x6000, size=0x1000)

[==                            ] 8% (24/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x7000, size=0x1000)

[===                           ] 11% (32/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x8000, size=0x1000)

[====                          ] 14% (40/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x9000, size=0x1000)

[=====                         ] 17% (48/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xa000, size=0x1000)

[======                        ] 20% (56/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xb000, size=0x1000)

[=======                       ] 23% (64/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xc000, size=0x1000)

[========                      ] 26% (72/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xd000, size=0x1000)

[========                      ] 29% (80/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xe000, size=0x1000)

[=========                     ] 32% (88/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0xf000, size=0x1000)

[==========                    ] 35% (96/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x10000, size=0x1000)

[===========                   ] 38% (104/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x11000, size=0x1000)

[============                  ] 41% (112/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x12000, size=0x1000)

[=============                 ] 44% (120/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x13000, size=0x1000)

[==============                ] 47% (128/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x14000, size=0x1000)

[===============               ] 50% (136/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x15000, size=0x1000)

[================              ] 53% (144/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x16000, size=0x1000)

[=================             ] 56% (152/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x17000, size=0x1000)

[=================             ] 59% (160/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x18000, size=0x1000)

[==================            ] 62% (168/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x19000, size=0x1000)

[===================           ] 65% (176/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1a000, size=0x1000)

[====================          ] 68% (184/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1b000, size=0x1000)

[=====================         ] 71% (192/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1c000, size=0x1000)

[======================        ] 74% (200/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1d000, size=0x1000)

[=======================       ] 77% (208/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1e000, size=0x1000)

[========================      ] 80% (216/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x1f000, size=0x1000)

[=========================     ] 83% (224/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x20000, size=0x1000)

[==========================    ] 86% (232/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x21000, size=0x1000)

[==========================    ] 89% (240/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x22000, size=0x1000)

[===========================   ] 92% (248/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x23000, size=0x1000)

[============================  ] 95% (256/267 pages)write(addr=0x20004034,size=0x1000)
writeBuffer(scr_addr=0x20004034, dst_addr=0x24000, size=0x1000)

[============================= ] 98% (264/267 pages)write(addr=0x20004034,size=0x600)
writeBuffer(scr_addr=0x20004034, dst_addr=0x25000, size=0x600)

[==============================] 100% (267/267 pages)
Done in 1.039 seconds
Verify 136504 bytes of flash
checksumBuffer(start_addr=0x4000, size=0x200) = 2a6c
checksumBuffer(start_addr=0x4200, size=0x200) = f86a
checksumBuffer(start_addr=0x4400, size=0x200) = eeb2
checksumBuffer(start_addr=0x4600, size=0x200) = d857
checksumBuffer(start_addr=0x4800, size=0x200) = 3469
checksumBuffer(start_addr=0x4a00, size=0x200) = 92f9
checksumBuffer(start_addr=0x4c00, size=0x200) = f49d
checksumBuffer(start_addr=0x4e00, size=0x200) = a8e
checksumBuffer(start_addr=0x5000, size=0x200) = fc6e

[=                             ] 3% (9/267 pages)checksumBuffer(start_addr=0x5200, size=0x200) = 8788

[=                             ] 3% (10/267 pages)checksumBuffer(start_addr=0x5400, size=0x200) = 1ba

[=                             ] 4% (11/267 pages)checksumBuffer(start_addr=0x5600, size=0x200) = dfd6

[=                             ] 4% (12/267 pages)checksumBuffer(start_addr=0x5800, size=0x200) = be47

[=                             ] 4% (13/267 pages)checksumBuffer(start_addr=0x5a00, size=0x200) = c43c

[=                             ] 5% (14/267 pages)checksumBuffer(start_addr=0x5c00, size=0x200) = a5c1

[=                             ] 5% (15/267 pages)checksumBuffer(start_addr=0x5e00, size=0x200) = d605

[=                             ] 5% (16/267 pages)checksumBuffer(start_addr=0x6000, size=0x200) = 34f0

[=                             ] 6% (17/267 pages)checksumBuffer(start_addr=0x6200, size=0x200) = 218d

[==                            ] 6% (18/267 pages)checksumBuffer(start_addr=0x6400, size=0x200) = f106

[==                            ] 7% (19/267 pages)checksumBuffer(start_addr=0x6600, size=0x200) = f532

[==                            ] 7% (20/267 pages)checksumBuffer(start_addr=0x6800, size=0x200) = 3ece

[==                            ] 7% (21/267 pages)checksumBuffer(start_addr=0x6a00, size=0x200) = 957e

[==                            ] 8% (22/267 pages)checksumBuffer(start_addr=0x6c00, size=0x200) = f396

[==                            ] 8% (23/267 pages)checksumBuffer(start_addr=0x6e00, size=0x200) = 39f6

[==                            ] 8% (24/267 pages)checksumBuffer(start_addr=0x7000, size=0x200) = ee7b

[==                            ] 9% (25/267 pages)checksumBuffer(start_addr=0x7200, size=0x200) = 345d

[==                            ] 9% (26/267 pages)checksumBuffer(start_addr=0x7400, size=0x200) = 44b6

[===                           ] 10% (27/267 pages)checksumBuffer(start_addr=0x7600, size=0x200) = f74d

[===                           ] 10% (28/267 pages)checksumBuffer(start_addr=0x7800, size=0x200) = 1d8b

[===                           ] 10% (29/267 pages)checksumBuffer(start_addr=0x7a00, size=0x200) = 6f8e

[===                           ] 11% (30/267 pages)checksumBuffer(start_addr=0x7c00, size=0x200) = 93a8

[===                           ] 11% (31/267 pages)checksumBuffer(start_addr=0x7e00, size=0x200) = 37d7

[===                           ] 11% (32/267 pages)checksumBuffer(start_addr=0x8000, size=0x200) = 80ca

[===                           ] 12% (33/267 pages)checksumBuffer(start_addr=0x8200, size=0x200) = 5163

[===                           ] 12% (34/267 pages)checksumBuffer(start_addr=0x8400, size=0x200) = 3825

[===                           ] 13% (35/267 pages)checksumBuffer(start_addr=0x8600, size=0x200) = 3dca

[====                          ] 13% (36/267 pages)checksumBuffer(start_addr=0x8800, size=0x200) = c4f

[====                          ] 13% (37/267 pages)checksumBuffer(start_addr=0x8a00, size=0x200) = afde

[====                          ] 14% (38/267 pages)checksumBuffer(start_addr=0x8c00, size=0x200) = a187

[====                          ] 14% (39/267 pages)checksumBuffer(start_addr=0x8e00, size=0x200) = b365

[====                          ] 14% (40/267 pages)checksumBuffer(start_addr=0x9000, size=0x200) = fa7

[====                          ] 15% (41/267 pages)checksumBuffer(start_addr=0x9200, size=0x200) = 532d

[====                          ] 15% (42/267 pages)checksumBuffer(start_addr=0x9400, size=0x200) = 20dc

[====                          ] 16% (43/267 pages)checksumBuffer(start_addr=0x9600, size=0x200) = f8ff

[====                          ] 16% (44/267 pages)checksumBuffer(start_addr=0x9800, size=0x200) = d3a3

[=====                         ] 16% (45/267 pages)checksumBuffer(start_addr=0x9a00, size=0x200) = d323

[=====                         ] 17% (46/267 pages)checksumBuffer(start_addr=0x9c00, size=0x200) = f94

[=====                         ] 17% (47/267 pages)checksumBuffer(start_addr=0x9e00, size=0x200) = 96fc

[=====                         ] 17% (48/267 pages)checksumBuffer(start_addr=0xa000, size=0x200) = 1ca3

[=====                         ] 18% (49/267 pages)checksumBuffer(start_addr=0xa200, size=0x200) = cece

[=====                         ] 18% (50/267 pages)checksumBuffer(start_addr=0xa400, size=0x200) = 86e2

[=====                         ] 19% (51/267 pages)checksumBuffer(start_addr=0xa600, size=0x200) = 54bf

[=====                         ] 19% (52/267 pages)checksumBuffer(start_addr=0xa800, size=0x200) = ba5e

[=====                         ] 19% (53/267 pages)checksumBuffer(start_addr=0xaa00, size=0x200) = 1e54

[======                        ] 20% (54/267 pages)checksumBuffer(start_addr=0xac00, size=0x200) = cbc9

[======                        ] 20% (55/267 pages)checksumBuffer(start_addr=0xae00, size=0x200) = b04b

[======                        ] 20% (56/267 pages)checksumBuffer(start_addr=0xb000, size=0x200) = 267a

[======                        ] 21% (57/267 pages)checksumBuffer(start_addr=0xb200, size=0x200) = 8e54

[======                        ] 21% (58/267 pages)checksumBuffer(start_addr=0xb400, size=0x200) = 3626

[======                        ] 22% (59/267 pages)checksumBuffer(start_addr=0xb600, size=0x200) = 7ebb

[======                        ] 22% (60/267 pages)checksumBuffer(start_addr=0xb800, size=0x200) = 5ba7

[======                        ] 22% (61/267 pages)checksumBuffer(start_addr=0xba00, size=0x200) = 9445

[======                        ] 23% (62/267 pages)checksumBuffer(start_addr=0xbc00, size=0x200) = 1911

[=======                       ] 23% (63/267 pages)checksumBuffer(start_addr=0xbe00, size=0x200) = 3890

[=======                       ] 23% (64/267 pages)checksumBuffer(start_addr=0xc000, size=0x200) = e868

[=======                       ] 24% (65/267 pages)checksumBuffer(start_addr=0xc200, size=0x200) = 173b

[=======                       ] 24% (66/267 pages)checksumBuffer(start_addr=0xc400, size=0x200) = c551

[=======                       ] 25% (67/267 pages)checksumBuffer(start_addr=0xc600, size=0x200) = a91f

[=======                       ] 25% (68/267 pages)checksumBuffer(start_addr=0xc800, size=0x200) = b894

[=======                       ] 25% (69/267 pages)checksumBuffer(start_addr=0xca00, size=0x200) = 4a44

[=======                       ] 26% (70/267 pages)checksumBuffer(start_addr=0xcc00, size=0x200) = aac6

[=======                       ] 26% (71/267 pages)checksumBuffer(start_addr=0xce00, size=0x200) = b96

[========                      ] 26% (72/267 pages)checksumBuffer(start_addr=0xd000, size=0x200) = dc6b

[========                      ] 27% (73/267 pages)checksumBuffer(start_addr=0xd200, size=0x200) = ef5f

[========                      ] 27% (74/267 pages)checksumBuffer(start_addr=0xd400, size=0x200) = db4

[========                      ] 28% (75/267 pages)checksumBuffer(start_addr=0xd600, size=0x200) = 6f1b

[========                      ] 28% (76/267 pages)checksumBuffer(start_addr=0xd800, size=0x200) = 6c16

[========                      ] 28% (77/267 pages)checksumBuffer(start_addr=0xda00, size=0x200) = e7aa

[========                      ] 29% (78/267 pages)checksumBuffer(start_addr=0xdc00, size=0x200) = 712c

[========                      ] 29% (79/267 pages)checksumBuffer(start_addr=0xde00, size=0x200) = 70e6

[========                      ] 29% (80/267 pages)checksumBuffer(start_addr=0xe000, size=0x200) = d55d

[=========                     ] 30% (81/267 pages)checksumBuffer(start_addr=0xe200, size=0x200) = dc63

[=========                     ] 30% (82/267 pages)checksumBuffer(start_addr=0xe400, size=0x200) = c818

[=========                     ] 31% (83/267 pages)checksumBuffer(start_addr=0xe600, size=0x200) = af9f

[=========                     ] 31% (84/267 pages)checksumBuffer(start_addr=0xe800, size=0x200) = 8abc

[=========                     ] 31% (85/267 pages)checksumBuffer(start_addr=0xea00, size=0x200) = 65d9

[=========                     ] 32% (86/267 pages)checksumBuffer(start_addr=0xec00, size=0x200) = c3fd

[=========                     ] 32% (87/267 pages)checksumBuffer(start_addr=0xee00, size=0x200) = dd2

[=========                     ] 32% (88/267 pages)checksumBuffer(start_addr=0xf000, size=0x200) = c4ce

[==========                    ] 33% (89/267 pages)checksumBuffer(start_addr=0xf200, size=0x200) = 2257

[==========                    ] 33% (90/267 pages)checksumBuffer(start_addr=0xf400, size=0x200) = db41

[==========                    ] 34% (91/267 pages)checksumBuffer(start_addr=0xf600, size=0x200) = 2fea

[==========                    ] 34% (92/267 pages)checksumBuffer(start_addr=0xf800, size=0x200) = df76

[==========                    ] 34% (93/267 pages)checksumBuffer(start_addr=0xfa00, size=0x200) = 2106

[==========                    ] 35% (94/267 pages)checksumBuffer(start_addr=0xfc00, size=0x200) = 6a03

[==========                    ] 35% (95/267 pages)checksumBuffer(start_addr=0xfe00, size=0x200) = a5c2

[==========                    ] 35% (96/267 pages)checksumBuffer(start_addr=0x10000, size=0x200) = 758f

[==========                    ] 36% (97/267 pages)checksumBuffer(start_addr=0x10200, size=0x200) = 79a0

[===========                   ] 36% (98/267 pages)checksumBuffer(start_addr=0x10400, size=0x200) = bfed

[===========                   ] 37% (99/267 pages)checksumBuffer(start_addr=0x10600, size=0x200) = f3ee

[===========                   ] 37% (100/267 pages)checksumBuffer(start_addr=0x10800, size=0x200) = 457

[===========                   ] 37% (101/267 pages)checksumBuffer(start_addr=0x10a00, size=0x200) = cf3e

[===========                   ] 38% (102/267 pages)checksumBuffer(start_addr=0x10c00, size=0x200) = 98d

[===========                   ] 38% (103/267 pages)checksumBuffer(start_addr=0x10e00, size=0x200) = 60ae

[===========                   ] 38% (104/267 pages)checksumBuffer(start_addr=0x11000, size=0x200) = 3e72

[===========                   ] 39% (105/267 pages)checksumBuffer(start_addr=0x11200, size=0x200) = 3276

[===========                   ] 39% (106/267 pages)checksumBuffer(start_addr=0x11400, size=0x200) = 5a7b

[============                  ] 40% (107/267 pages)checksumBuffer(start_addr=0x11600, size=0x200) = 5a35

[============                  ] 40% (108/267 pages)checksumBuffer(start_addr=0x11800, size=0x200) = 770f

[============                  ] 40% (109/267 pages)checksumBuffer(start_addr=0x11a00, size=0x200) = dcbe

[============                  ] 41% (110/267 pages)checksumBuffer(start_addr=0x11c00, size=0x200) = e8e7

[============                  ] 41% (111/267 pages)checksumBuffer(start_addr=0x11e00, size=0x200) = 2395

[============                  ] 41% (112/267 pages)checksumBuffer(start_addr=0x12000, size=0x200) = 75e3

[============                  ] 42% (113/267 pages)checksumBuffer(start_addr=0x12200, size=0x200) = 5dcd

[============                  ] 42% (114/267 pages)checksumBuffer(start_addr=0x12400, size=0x200) = 4292

[============                  ] 43% (115/267 pages)checksumBuffer(start_addr=0x12600, size=0x200) = 86f4

[=============                 ] 43% (116/267 pages)checksumBuffer(start_addr=0x12800, size=0x200) = ba6c

[=============                 ] 43% (117/267 pages)checksumBuffer(start_addr=0x12a00, size=0x200) = 48e5

[=============                 ] 44% (118/267 pages)checksumBuffer(start_addr=0x12c00, size=0x200) = af26

[=============                 ] 44% (119/267 pages)checksumBuffer(start_addr=0x12e00, size=0x200) = 78a

[=============                 ] 44% (120/267 pages)checksumBuffer(start_addr=0x13000, size=0x200) = eb8e

[=============                 ] 45% (121/267 pages)checksumBuffer(start_addr=0x13200, size=0x200) = 3b9c

[=============                 ] 45% (122/267 pages)checksumBuffer(start_addr=0x13400, size=0x200) = 2e93

[=============                 ] 46% (123/267 pages)checksumBuffer(start_addr=0x13600, size=0x200) = 2076

[=============                 ] 46% (124/267 pages)checksumBuffer(start_addr=0x13800, size=0x200) = 656

[==============                ] 46% (125/267 pages)checksumBuffer(start_addr=0x13a00, size=0x200) = d15e

[==============                ] 47% (126/267 pages)checksumBuffer(start_addr=0x13c00, size=0x200) = 1fc7

[==============                ] 47% (127/267 pages)checksumBuffer(start_addr=0x13e00, size=0x200) = b7e5

[==============                ] 47% (128/267 pages)checksumBuffer(start_addr=0x14000, size=0x200) = ddb9

[==============                ] 48% (129/267 pages)checksumBuffer(start_addr=0x14200, size=0x200) = 1ac4

[==============                ] 48% (130/267 pages)checksumBuffer(start_addr=0x14400, size=0x200) = a046

[==============                ] 49% (131/267 pages)checksumBuffer(start_addr=0x14600, size=0x200) = d828

[==============                ] 49% (132/267 pages)checksumBuffer(start_addr=0x14800, size=0x200) = 1317

[==============                ] 49% (133/267 pages)checksumBuffer(start_addr=0x14a00, size=0x200) = 7781

[===============               ] 50% (134/267 pages)checksumBuffer(start_addr=0x14c00, size=0x200) = 353b

[===============               ] 50% (135/267 pages)checksumBuffer(start_addr=0x14e00, size=0x200) = e8be

[===============               ] 50% (136/267 pages)checksumBuffer(start_addr=0x15000, size=0x200) = 7146

[===============               ] 51% (137/267 pages)checksumBuffer(start_addr=0x15200, size=0x200) = e793

[===============               ] 51% (138/267 pages)checksumBuffer(start_addr=0x15400, size=0x200) = 8c2c

[===============               ] 52% (139/267 pages)checksumBuffer(start_addr=0x15600, size=0x200) = c44d

[===============               ] 52% (140/267 pages)checksumBuffer(start_addr=0x15800, size=0x200) = 7c2e

[===============               ] 52% (141/267 pages)checksumBuffer(start_addr=0x15a00, size=0x200) = 4957

[===============               ] 53% (142/267 pages)checksumBuffer(start_addr=0x15c00, size=0x200) = e614

[================              ] 53% (143/267 pages)checksumBuffer(start_addr=0x15e00, size=0x200) = 2d03

[================              ] 53% (144/267 pages)checksumBuffer(start_addr=0x16000, size=0x200) = 7252

[================              ] 54% (145/267 pages)checksumBuffer(start_addr=0x16200, size=0x200) = de7c

[================              ] 54% (146/267 pages)checksumBuffer(start_addr=0x16400, size=0x200) = 8e39

[================              ] 55% (147/267 pages)checksumBuffer(start_addr=0x16600, size=0x200) = 778e

[================              ] 55% (148/267 pages)checksumBuffer(start_addr=0x16800, size=0x200) = a9e3

[================              ] 55% (149/267 pages)checksumBuffer(start_addr=0x16a00, size=0x200) = 5252

[================              ] 56% (150/267 pages)checksumBuffer(start_addr=0x16c00, size=0x200) = a1eb

[================              ] 56% (151/267 pages)checksumBuffer(start_addr=0x16e00, size=0x200) = 72bb

[=================             ] 56% (152/267 pages)checksumBuffer(start_addr=0x17000, size=0x200) = 35af

[=================             ] 57% (153/267 pages)checksumBuffer(start_addr=0x17200, size=0x200) = d9e2

[=================             ] 57% (154/267 pages)checksumBuffer(start_addr=0x17400, size=0x200) = 5a18

[=================             ] 58% (155/267 pages)checksumBuffer(start_addr=0x17600, size=0x200) = 2ba0

[=================             ] 58% (156/267 pages)checksumBuffer(start_addr=0x17800, size=0x200) = 9cf7

[=================             ] 58% (157/267 pages)checksumBuffer(start_addr=0x17a00, size=0x200) = 7d1d

[=================             ] 59% (158/267 pages)checksumBuffer(start_addr=0x17c00, size=0x200) = c219

[=================             ] 59% (159/267 pages)checksumBuffer(start_addr=0x17e00, size=0x200) = 8a5

[=================             ] 59% (160/267 pages)checksumBuffer(start_addr=0x18000, size=0x200) = 41f0

[==================            ] 60% (161/267 pages)checksumBuffer(start_addr=0x18200, size=0x200) = e52d

[==================            ] 60% (162/267 pages)checksumBuffer(start_addr=0x18400, size=0x200) = 6c5f

[==================            ] 61% (163/267 pages)checksumBuffer(start_addr=0x18600, size=0x200) = ba4c

[==================            ] 61% (164/267 pages)checksumBuffer(start_addr=0x18800, size=0x200) = 4f34

[==================            ] 61% (165/267 pages)checksumBuffer(start_addr=0x18a00, size=0x200) = 1cac

[==================            ] 62% (166/267 pages)checksumBuffer(start_addr=0x18c00, size=0x200) = 7ec

[==================            ] 62% (167/267 pages)checksumBuffer(start_addr=0x18e00, size=0x200) = e6c2

[==================            ] 62% (168/267 pages)checksumBuffer(start_addr=0x19000, size=0x200) = d79c

[==================            ] 63% (169/267 pages)checksumBuffer(start_addr=0x19200, size=0x200) = 298a

[===================           ] 63% (170/267 pages)checksumBuffer(start_addr=0x19400, size=0x200) = 33cf

[===================           ] 64% (171/267 pages)checksumBuffer(start_addr=0x19600, size=0x200) = 4cb3

[===================           ] 64% (172/267 pages)checksumBuffer(start_addr=0x19800, size=0x200) = 5073

[===================           ] 64% (173/267 pages)checksumBuffer(start_addr=0x19a00, size=0x200) = 73c1

[===================           ] 65% (174/267 pages)checksumBuffer(start_addr=0x19c00, size=0x200) = 3980

[===================           ] 65% (175/267 pages)checksumBuffer(start_addr=0x19e00, size=0x200) = 8b86

[===================           ] 65% (176/267 pages)checksumBuffer(start_addr=0x1a000, size=0x200) = db10

[===================           ] 66% (177/267 pages)checksumBuffer(start_addr=0x1a200, size=0x200) = 90b5

[====================          ] 66% (178/267 pages)checksumBuffer(start_addr=0x1a400, size=0x200) = 314

[====================          ] 67% (179/267 pages)checksumBuffer(start_addr=0x1a600, size=0x200) = b622

[====================          ] 67% (180/267 pages)checksumBuffer(start_addr=0x1a800, size=0x200) = 880c

[====================          ] 67% (181/267 pages)checksumBuffer(start_addr=0x1aa00, size=0x200) = 4380

[====================          ] 68% (182/267 pages)checksumBuffer(start_addr=0x1ac00, size=0x200) = a208

[====================          ] 68% (183/267 pages)checksumBuffer(start_addr=0x1ae00, size=0x200) = 6844

[====================          ] 68% (184/267 pages)checksumBuffer(start_addr=0x1b000, size=0x200) = 8d08

[====================          ] 69% (185/267 pages)checksumBuffer(start_addr=0x1b200, size=0x200) = 595e

[====================          ] 69% (186/267 pages)checksumBuffer(start_addr=0x1b400, size=0x200) = 8e63

[=====================         ] 70% (187/267 pages)checksumBuffer(start_addr=0x1b600, size=0x200) = d7cb

[=====================         ] 70% (188/267 pages)checksumBuffer(start_addr=0x1b800, size=0x200) = 694b

[=====================         ] 70% (189/267 pages)checksumBuffer(start_addr=0x1ba00, size=0x200) = 1c58

[=====================         ] 71% (190/267 pages)checksumBuffer(start_addr=0x1bc00, size=0x200) = 9a39

[=====================         ] 71% (191/267 pages)checksumBuffer(start_addr=0x1be00, size=0x200) = bbdf

[=====================         ] 71% (192/267 pages)checksumBuffer(start_addr=0x1c000, size=0x200) = 5907

[=====================         ] 72% (193/267 pages)checksumBuffer(start_addr=0x1c200, size=0x200) = 31cd

[=====================         ] 72% (194/267 pages)checksumBuffer(start_addr=0x1c400, size=0x200) = eb2e

[=====================         ] 73% (195/267 pages)checksumBuffer(start_addr=0x1c600, size=0x200) = fa1e

[======================        ] 73% (196/267 pages)checksumBuffer(start_addr=0x1c800, size=0x200) = 4321

[======================        ] 73% (197/267 pages)checksumBuffer(start_addr=0x1ca00, size=0x200) = ee07

[======================        ] 74% (198/267 pages)checksumBuffer(start_addr=0x1cc00, size=0x200) = 9e5e

[======================        ] 74% (199/267 pages)checksumBuffer(start_addr=0x1ce00, size=0x200) = 92c0

[======================        ] 74% (200/267 pages)checksumBuffer(start_addr=0x1d000, size=0x200) = 6be9

[======================        ] 75% (201/267 pages)checksumBuffer(start_addr=0x1d200, size=0x200) = 2fbe

[======================        ] 75% (202/267 pages)checksumBuffer(start_addr=0x1d400, size=0x200) = 396c

[======================        ] 76% (203/267 pages)checksumBuffer(start_addr=0x1d600, size=0x200) = b861

[======================        ] 76% (204/267 pages)checksumBuffer(start_addr=0x1d800, size=0x200) = 7bbf

[=======================       ] 76% (205/267 pages)checksumBuffer(start_addr=0x1da00, size=0x200) = 4654

[=======================       ] 77% (206/267 pages)checksumBuffer(start_addr=0x1dc00, size=0x200) = 53fc

[=======================       ] 77% (207/267 pages)checksumBuffer(start_addr=0x1de00, size=0x200) = 5297

[=======================       ] 77% (208/267 pages)checksumBuffer(start_addr=0x1e000, size=0x200) = eecc

[=======================       ] 78% (209/267 pages)checksumBuffer(start_addr=0x1e200, size=0x200) = feca

[=======================       ] 78% (210/267 pages)checksumBuffer(start_addr=0x1e400, size=0x200) = 453b

[=======================       ] 79% (211/267 pages)checksumBuffer(start_addr=0x1e600, size=0x200) = ee7f

[=======================       ] 79% (212/267 pages)checksumBuffer(start_addr=0x1e800, size=0x200) = f767

[=======================       ] 79% (213/267 pages)checksumBuffer(start_addr=0x1ea00, size=0x200) = 9f31

[========================      ] 80% (214/267 pages)checksumBuffer(start_addr=0x1ec00, size=0x200) = 2167

[========================      ] 80% (215/267 pages)checksumBuffer(start_addr=0x1ee00, size=0x200) = 4ed0

[========================      ] 80% (216/267 pages)checksumBuffer(start_addr=0x1f000, size=0x200) = d88f

[========================      ] 81% (217/267 pages)checksumBuffer(start_addr=0x1f200, size=0x200) = fcdb

[========================      ] 81% (218/267 pages)checksumBuffer(start_addr=0x1f400, size=0x200) = 20dd

[========================      ] 82% (219/267 pages)checksumBuffer(start_addr=0x1f600, size=0x200) = 1659

[========================      ] 82% (220/267 pages)checksumBuffer(start_addr=0x1f800, size=0x200) = 405

[========================      ] 82% (221/267 pages)checksumBuffer(start_addr=0x1fa00, size=0x200) = 54fd

[========================      ] 83% (222/267 pages)checksumBuffer(start_addr=0x1fc00, size=0x200) = 32d0

[=========================     ] 83% (223/267 pages)checksumBuffer(start_addr=0x1fe00, size=0x200) = f912

[=========================     ] 83% (224/267 pages)checksumBuffer(start_addr=0x20000, size=0x200) = 493c

[=========================     ] 84% (225/267 pages)checksumBuffer(start_addr=0x20200, size=0x200) = 647d

[=========================     ] 84% (226/267 pages)checksumBuffer(start_addr=0x20400, size=0x200) = 2cb7

[=========================     ] 85% (227/267 pages)checksumBuffer(start_addr=0x20600, size=0x200) = a3b9

[=========================     ] 85% (228/267 pages)checksumBuffer(start_addr=0x20800, size=0x200) = 1888

[=========================     ] 85% (229/267 pages)checksumBuffer(start_addr=0x20a00, size=0x200) = 7f28

[=========================     ] 86% (230/267 pages)checksumBuffer(start_addr=0x20c00, size=0x200) = 8f44

[=========================     ] 86% (231/267 pages)checksumBuffer(start_addr=0x20e00, size=0x200) = 2b02

[==========================    ] 86% (232/267 pages)checksumBuffer(start_addr=0x21000, size=0x200) = 4760

[==========================    ] 87% (233/267 pages)checksumBuffer(start_addr=0x21200, size=0x200) = 68e0

[==========================    ] 87% (234/267 pages)checksumBuffer(start_addr=0x21400, size=0x200) = 1cf4

[==========================    ] 88% (235/267 pages)checksumBuffer(start_addr=0x21600, size=0x200) = a0d2

[==========================    ] 88% (236/267 pages)checksumBuffer(start_addr=0x21800, size=0x200) = 6f36

[==========================    ] 88% (237/267 pages)checksumBuffer(start_addr=0x21a00, size=0x200) = 545e

[==========================    ] 89% (238/267 pages)checksumBuffer(start_addr=0x21c00, size=0x200) = 74b3

[==========================    ] 89% (239/267 pages)checksumBuffer(start_addr=0x21e00, size=0x200) = 534d

[==========================    ] 89% (240/267 pages)checksumBuffer(start_addr=0x22000, size=0x200) = b0b0

[===========================   ] 90% (241/267 pages)checksumBuffer(start_addr=0x22200, size=0x200) = 665e

[===========================   ] 90% (242/267 pages)checksumBuffer(start_addr=0x22400, size=0x200) = 25be

[===========================   ] 91% (243/267 pages)checksumBuffer(start_addr=0x22600, size=0x200) = 81df

[===========================   ] 91% (244/267 pages)checksumBuffer(start_addr=0x22800, size=0x200) = ee36

[===========================   ] 91% (245/267 pages)checksumBuffer(start_addr=0x22a00, size=0x200) = c29f

[===========================   ] 92% (246/267 pages)checksumBuffer(start_addr=0x22c00, size=0x200) = 9dfc

[===========================   ] 92% (247/267 pages)checksumBuffer(start_addr=0x22e00, size=0x200) = 3c36

[===========================   ] 92% (248/267 pages)checksumBuffer(start_addr=0x23000, size=0x200) = 38ab

[===========================   ] 93% (249/267 pages)checksumBuffer(start_addr=0x23200, size=0x200) = 92e0

[============================  ] 93% (250/267 pages)checksumBuffer(start_addr=0x23400, size=0x200) = 7f46

[============================  ] 94% (251/267 pages)checksumBuffer(start_addr=0x23600, size=0x200) = d2cc

[============================  ] 94% (252/267 pages)checksumBuffer(start_addr=0x23800, size=0x200) = 249f

[============================  ] 94% (253/267 pages)checksumBuffer(start_addr=0x23a00, size=0x200) = 688c

[============================  ] 95% (254/267 pages)checksumBuffer(start_addr=0x23c00, size=0x200) = df9e

[============================  ] 95% (255/267 pages)checksumBuffer(start_addr=0x23e00, size=0x200) = 7bb7

[============================  ] 95% (256/267 pages)checksumBuffer(start_addr=0x24000, size=0x200) = a42f

[============================  ] 96% (257/267 pages)checksumBuffer(start_addr=0x24200, size=0x200) = 2dc8

[============================  ] 96% (258/267 pages)checksumBuffer(start_addr=0x24400, size=0x200) = 9170

[============================= ] 97% (259/267 pages)checksumBuffer(start_addr=0x24600, size=0x200) = 9405

[============================= ] 97% (260/267 pages)checksumBuffer(start_addr=0x24800, size=0x200) = d23f

[============================= ] 97% (261/267 pages)checksumBuffer(start_addr=0x24a00, size=0x200) = e08e

[============================= ] 98% (262/267 pages)checksumBuffer(start_addr=0x24c00, size=0x200) = 79c0

[============================= ] 98% (263/267 pages)checksumBuffer(start_addr=0x24e00, size=0x200) = 4093

[============================= ] 98% (264/267 pages)checksumBuffer(start_addr=0x25000, size=0x200) = b2fd

[============================= ] 99% (265/267 pages)checksumBuffer(start_addr=0x25200, size=0x200) = b6a3

[============================= ] 99% (266/267 pages)checksumBuffer(start_addr=0x25400, size=0x138) = a712

[==============================] 100% (267/267 pages)
Verify successful
Done in 0.240 seconds
writeWord(addr=0xe000ed0c,value=0x5fa0004)

Okay I found a solution. This BOSSA PR fixes the issue, although it’s out of date. I added tcflush to the flush routine on the main branch (and left the delay in), and it now seems to program reliably. It’s not clear to me why it fails so miserably (instead of just failing to write the last few bytes), but it seems to work.

Unfortunately, that PR has been sitting there for nearly four years (and the last commit to main was four years ago), so I don't know if BOSSA is getting any more maintenance.

Nice work finding a solution @jetforme. Thanks for taking the time to post an update with your findings!

Arduino maintains a fork of BOSSA. I see that Arduino made a modification to the same code that was changed in the upstream PR you found:

I believe that change was made after the time of the "1.9.1-arduino1" version of bossac you were using (I can't be certain because, frustratingly, the developers didn't push a 1.9.1-arduino1 tag to the repository so who knows what the heck is in that "1.9.1-arduino1" version). If you would like to give it a try, the download links for the binaries are listed here:

Whoa. I already have a 1.9.1-arduino2 in the tools directory, but the IDE isn't choosing it. I'm not sure how the tool gets selected.

The developers of the "ClearCore" boards platform specified that version should be used when uploading to boards of that platform:

Reference:

https://arduino.github.io/arduino-cli/latest/package_index_json-specification/#how-a-tools-path-is-determined-in-platformtxt

Okay, so I just modified my tools installation in place to refer to -arduino2, which didn’t work. I check the sources for the -arduino2 release, and it implements flush like this:

void
PosixSerialPort::flush()
{
    fsync(_devfd);
}

I used tcdrain(). I cloned the Arduino BOSSA repo, checked out 1.9.1-arduino2, and modified flush:

void
PosixSerialPort::flush()
{
    tcdrain(_devfd);
}

This works. So, Arduino needs to change this, I think, no? Is there a formal bug I should submit? I'm not sure where.

Unfortunately the issue tracker isn't enabled on the arduino/BOSSA repository (GitHub disables the issue tracker by default on forks), so there isn't any way to submit a bug report to Arduino's fork. You are welcome to submit a pull requests, but I see now that someone already submitted one:

You can use GitHub's "Reactions" feature to add a :+1: to the pull request message to express support for the proposal.

Wow, that's been there for over three years. What does it take to get something this trivial merged?

Hi,

on my machine, a bossac version 1.8-66-g52e0a4a got installed.
Exchanging that with the current 1.9.1 resolved the problem.

1.9.1 does not work for me without modification. The flush call is insufficient. There's a PR for it, but it seems the repo is no longer maintained.