Go Down

Topic: Arduino Zero Standalone board - Serial communication issue (Read 6532 times) previous topic - next topic


Hi Aloyse,

Unfortunatelly it didn't work.
We changed the fuses in AS7 but when we burn the bootloader and ask AS7 to read the fuses from the board, it goes back to the old values (USER_WORD_0 = 0xD8E0C7FF & USER_WORD_1 = 0xFFFFFC5D).

The fuse values we configured in AS7 are not being really recorded in the chip.

I searched about it and I found a known bug related to that, but only when OpenOCD is used, not with Atmel Studio.

Any ideas what can I do?


Try to burn the fuse like I said and use the MKRZero bootloader. Verify the fuses before burning the bootloader.


Same thing  :(
I changed the fuses, clicked program and when I ask to read the fuses, the values of user word 0 & 1 goes back to the default value.
It's strange, because if I change other fuses, the value I choose remains after clicking program and asking to read.
Only user word 0 & 1 that change the value back to the default.

Any other suggestion?


Can you confirm the workflow please?

1. Power board, plug ICE
2. Open AS7, read fuses, modify fuses, write fuses
3. Unplug ICE, power off the board
4. Power on the board, plug ICE, read fuses using AS.

The step 3 is important.

Have you read the fuses before putting the bootloader? Are you using the Arduino IDE to burn the bootloader?


Actually we were not doing step 3, but now we did exactly what you described, step by step, and we had the same result.
We wrote the fuses, unplugged ICE and powered off the board. Then powered on the board, plugged ICE and when we ask to read the fuses it shows the default value, and not the value we had wrote some seconds ago.

Yes, we read the fuses before putting the bootloader, and user_word_0 & 1 were with the default value (USER_WORD_0 = 0xD8E0C7FF & USER_WORD_1 = 0xFFFFFC5D).

We are not using Arduino IDE to burn the bootloader, we are using AS7.
Is it wrong? Were we supposed to burn the bootloader using Arduino IDE?


Please try to use the Arduino IDE to burn the bootloader. That might be a solution. I had a similar issue once with a fake M0 compatible board. I had to change the fuse en reburn the bootloader to make it work.


Same result  :smiley-confuse:

Below you have the log of Arduino IDE burning the bootloader.
Code: [Select]
Open On-Chip Debugger 0.9.0-gd4b7679 (2015-06-10-22:24)
Licensed under GNU GPL v2
For bug reports, read
debug_level: 0
adapter speed: 500 kHz
adapter_nsrst_delay: 100
cortex_m reset_config sysresetreq
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x21000000 pc: 0x000005e8 msp: 0x20007ffc
** Programming Started **
auto erase enabled
wrote 16384 bytes from file C:\Users\Bruno\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.11/bootloaders/mkrzero/samd21_sam_ba_arduino_mkrzero.bin in 4.195087s (3.814 KiB/s)
** Programming Finished **
** Verify Started **
verified 6404 bytes in 0.562958s (11.109 KiB/s)
** Verified OK **
** Resetting Target **
shutdown command invoked

Unrecogized device on Windows.
We tried the zero, mkrzero and adafruit bootloaders.
We tried to repeat the procedure of modifying the fuses, and USER_WORD_0 & 1 always change back to the default value.

Considering the hardware design I attached on the beggining of this thread, do you think this can have something to do with the hardware? Or Clock?


The hardware looks fine, at least the schematic.
Could you try on a Mac on Linux machine? The whole procedure.


Hi Aloyse,

We are facing some issues trying to do this procedure in Linux, because we're not very familiar with Linux, but we're still trying and once we finish this I'll post here the result.

Thanks a lot for all your help.


The Arduino IDE is the same on Linux. You shouldn't have any specific issue. Make a clean install of te IDE and SAMD core, then use the IDE to burn the bootloader.




I wonder if the issue with the fuses is due to the NVM being locked, so it will not accept any updates, including setting the correct fuses when the bootloader goes up.

What I would try is:

From ATMEL Studio and the programming tool is under memory do a full chip erase.

Then in fuses change the USER_WORD_0.NVMCTRL_BOOTPROT and set to 0x07, then click Program.  Read the fuse values again and confirm it has changed.

Now make the other fuse changes and confirm they are saved this time.  Then upload the bootloader from the Arduino IDE.  I'm thinking the fuses are all set anyway by the bootloader upload process.
Has this helped get it working?



Go Up