platformio / platform-atmelsam

Atmel SAM: development platform for PlatformIO
https://registry.platformio.org/platforms/platformio/atmelsam
Apache License 2.0
82 stars 108 forks source link

Switch to BOSSA 1.9 #78

Open aurror opened 5 years ago

aurror commented 5 years ago

https://github.com/shumatech/BOSSA


Hey,

it seems like there is a bug related to the arduino due in the current version. The upload works, but the uploaded code does not execute and I can't open the serial console. If I upload the same code from arduino IDE it works. It also works with an older option of atmelsam: platform = atmelsam@3.1.2

I'm using platformio version 4.0.3

valeros commented 5 years ago

Were there any issues with uploading? Could you please provide upload log?

aurror commented 5 years ago

There were no issues while uploading. I noticed this error when uploading from a raspberry pi 3B with a clean installation. Unfortunately I can't provide the log since it works with the old version and I currently have no time to do testing.

ivankravets commented 5 years ago

Do you use USB or Programming port?

aurror commented 5 years ago

I used the programming port.

aurror commented 4 years ago

Just tested it again on a new raspberry pi 3b / arduino due, still got the same issue. Used version: Atmel SAM 3.9.0

Log:

Processing due (platform: atmelsam; board: sainSmartDue; framework: arduino)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelsam/sainSmartDue.html
PLATFORM: Atmel SAM 3.9.0 > SainSmart Due (Programming Port)
HARDWARE: AT91SAM3X8E 84MHz, 96KB RAM, 512KB Flash
DEBUG: Current (atmel-ice) External (atmel-ice, blackmagic, jlink, stlink)
PACKAGES: toolchain-gccarmnoneeabi 1.70201.0 (7.2.1), framework-arduinosam 4.4.191002, tool-bossac 1.10700.190624 (1.7.0)
Converting Repetier.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 3 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <SPI> 1.0
Building in release mode
Compiling .pio/build/due/src/BedLeveling.cpp.o
Compiling .pio/build/due/src/Commands.cpp.o
Compiling .pio/build/due/src/Communication.cpp.o
Compiling .pio/build/due/src/Distortion.cpp.o
Compiling .pio/build/due/src/Drivers.cpp.o
Compiling .pio/build/due/src/Eeprom.cpp.o
Compiling .pio/build/due/src/Endstops.cpp.o
Compiling .pio/build/due/src/Extruder.cpp.o
Compiling .pio/build/due/src/HAL.cpp.o
src/Commands.cpp: In static member function 'static void Commands::executeGCode(GCode*)':
src/Commands.cpp:2922:29: warning: 'actSource' may be used uninitialized in this function [-Wmaybe-uninitialized]
   GCodeSource::activeSource = actSource;
   ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
Compiling .pio/build/due/src/Printer.cpp.o
Compiling .pio/build/due/src/Repetier.ino.cpp.o
src/HAL.cpp: In static member function 'static void HAL::i2cSetClockspeed(uint32_t)':
src/HAL.cpp:543:58: warning: 'dwClDiv' may be used uninitialized in this function [-Wmaybe-uninitialized]
     TWI_INTERFACE->TWI_CWGR = (dwCkDiv << 16) | (dwClDiv << 8) | dwClDiv;
                                                 ~~~~~~~~~^~~~~
Compiling .pio/build/due/src/SDCard.cpp.o
Compiling .pio/build/due/src/SdFat.cpp.o
Compiling .pio/build/due/src/gcode.cpp.o
Compiling .pio/build/due/src/motion.cpp.o
Compiling .pio/build/due/src/ui.cpp.o
Compiling .pio/build/due/src/uilang.cpp.o
Compiling .pio/build/due/libe6e/SPI/SPI.cpp.o
Compiling .pio/build/due/FrameworkArduinoVariant/variant.cpp.o
Archiving .pio/build/due/libe6e/libSPI.a
Indexing .pio/build/due/libe6e/libSPI.a
Compiling .pio/build/due/FrameworkArduino/IPAddress.cpp.o
Compiling .pio/build/due/FrameworkArduino/Print.cpp.o
Archiving .pio/build/due/libFrameworkArduinoVariant.a
Indexing .pio/build/due/libFrameworkArduinoVariant.a
Compiling .pio/build/due/FrameworkArduino/Reset.cpp.o
Compiling .pio/build/due/FrameworkArduino/RingBuffer.cpp.o
Compiling .pio/build/due/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/due/FrameworkArduino/UARTClass.cpp.o
Compiling .pio/build/due/FrameworkArduino/USARTClass.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/CDC.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/PluggableUSB.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/USBCore.cpp.o
Compiling .pio/build/due/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/due/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/due/FrameworkArduino/WString.cpp.o
Compiling .pio/build/due/FrameworkArduino/abi.cpp.o
/home/pi/.platformio/packages/framework-arduinosam/cores/sam/USB/USBCore.cpp: In function 'void USB_ISR()':
/home/pi/.platformio/packages/framework-arduinosam/cores/sam/USB/USBCore.cpp:688:21: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
                     else
                     ^~~~
/home/pi/.platformio/packages/framework-arduinosam/cores/sam/USB/USBCore.cpp:690:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
         UDD_Send8(EP0, 0);
         ^~~~~~~~~
Compiling .pio/build/due/FrameworkArduino/avr/dtostrf.c.o
Compiling .pio/build/due/FrameworkArduino/cortex_handlers.c.o
Compiling .pio/build/due/FrameworkArduino/hooks.c.o
Compiling .pio/build/due/FrameworkArduino/iar_calls_sam3.c.o
Compiling .pio/build/due/FrameworkArduino/itoa.c.o
Compiling .pio/build/due/FrameworkArduino/main.cpp.o
Compiling .pio/build/due/FrameworkArduino/new.cpp.o
Compiling .pio/build/due/FrameworkArduino/syscalls_sam3.c.o
Compiling .pio/build/due/FrameworkArduino/watchdog.cpp.o
Compiling .pio/build/due/FrameworkArduino/wiring.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_pulse.cpp.o
Compiling .pio/build/due/FrameworkArduino/wiring_pulse_asm.S.o
Compiling .pio/build/due/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/due/libFrameworkArduino.a
Indexing .pio/build/due/libFrameworkArduino.a
Linking .pio/build/due/firmware.elf
Checking size .pio/build/due/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
DATA:    [=         ]  13.7% (used 13492 bytes from 98304 bytes)
PROGRAM: [==        ]  22.2% (used 116604 bytes from 524288 bytes)
Building .pio/build/due/firmware.bin
Configuring upload protocol...
AVAILABLE: atmel-ice, blackmagic, jlink, sam-ba, stlink
CURRENT: upload_protocol = sam-ba
Looking for upload port...
Use manually specified: /dev/ttyACM0
Forcing reset using 1200bps open/close on port /dev/ttyACM0
Uploading .pio/build/due/firmware.bin
Atmel SMART device 0x285e0a60 found
Erase flash
done in 0.041 seconds

Write 119836 bytes to flash (469 pages)
[==============================] 100% (469/469 pages)
done in 28.769 seconds

Verify 119836 bytes of flash
[==============================] 100% (469/469 pages)
Verify successful
done in 24.837 seconds
Set boot flash true
CPU reset.
========================= [SUCCESS] Took 78.37 seconds =========================

With the older version it still works. Here's the output of uploading with the older version:

Processing due (platform: atmelsam@3.1.2; board: sainSmartDue; framework: arduino)
--------------------------------------------------------------------------------
PlatformManager: Installing atmelsam @ 3.1.2
Downloading  [####################################]  100%
atmelsam @ 3.1.2 has been successfully installed!
The platform 'atmelsam@3.1.2' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.
PackageManager: Installing toolchain-gccarmnoneeabi @ >=1.40803.0,<1.40805.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%          
toolchain-gccarmnoneeabi @ 1.40803.0 has been successfully installed!
PackageManager: Installing framework-arduinosam @ ~2.10618.1
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%          
framework-arduinosam @ 2.10618.1 has been successfully installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelsam/sainSmartDue.html
PLATFORM: Atmel SAM 3.1.2 > SainSmart Due (Programming Port)
HARDWARE: AT91SAM3X8E 84MHz, 32KB RAM, 512KB Flash
DEBUG: Current (blackmagic) External (blackmagic, jlink)
PACKAGES: toolchain-gccarmnoneeabi 1.40803.0 (4.8.3), framework-arduinosam 2.10618.1 (1.6.18), tool-bossac 1.10700.190624 (1.7.0)
Converting Repetier.ino
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 3 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <SPI> 1.0
Building in release mode
Compiling .pio/build/due/src/BedLeveling.cpp.o
Compiling .pio/build/due/src/Commands.cpp.o
Compiling .pio/build/due/src/Communication.cpp.o
Compiling .pio/build/due/src/Distortion.cpp.o
Compiling .pio/build/due/src/Drivers.cpp.o
Compiling .pio/build/due/src/Eeprom.cpp.o
Compiling .pio/build/due/src/Endstops.cpp.o
Compiling .pio/build/due/src/Extruder.cpp.o
Compiling .pio/build/due/src/HAL.cpp.o
src/Commands.cpp: In static member function 'static void Commands::executeGCode(GCode*)':
src/Commands.cpp:2922:40: warning: 'actSource' may be used uninitialized in this function [-Wmaybe-uninitialized]
   GCodeSource::activeSource = actSource;
                                        ^
Compiling .pio/build/due/src/Printer.cpp.o
Compiling .pio/build/due/src/Repetier.ino.cpp.o
Compiling .pio/build/due/src/SDCard.cpp.o
Compiling .pio/build/due/src/SdFat.cpp.o
Compiling .pio/build/due/src/gcode.cpp.o
Compiling .pio/build/due/src/motion.cpp.o
Compiling .pio/build/due/src/ui.cpp.o
Compiling .pio/build/due/src/uilang.cpp.o
Compiling .pio/build/due/liba22/SPI/SPI.cpp.o
Compiling .pio/build/due/FrameworkArduinoVariant/variant.cpp.o
Compiling .pio/build/due/FrameworkArduino/IPAddress.cpp.o
Archiving .pio/build/due/liba22/libSPI.a
Indexing .pio/build/due/liba22/libSPI.a
Compiling .pio/build/due/FrameworkArduino/Print.cpp.o
Compiling .pio/build/due/FrameworkArduino/Reset.cpp.o
Archiving .pio/build/due/libFrameworkArduinoVariant.a
Indexing .pio/build/due/libFrameworkArduinoVariant.a
Compiling .pio/build/due/FrameworkArduino/RingBuffer.cpp.o
Compiling .pio/build/due/FrameworkArduino/Stream.cpp.o
Compiling .pio/build/due/FrameworkArduino/UARTClass.cpp.o
Compiling .pio/build/due/FrameworkArduino/USARTClass.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/CDC.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/PluggableUSB.cpp.o
Compiling .pio/build/due/FrameworkArduino/USB/USBCore.cpp.o
Compiling .pio/build/due/FrameworkArduino/WInterrupts.c.o
Compiling .pio/build/due/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/due/FrameworkArduino/WString.cpp.o
Compiling .pio/build/due/FrameworkArduino/abi.cpp.o
Compiling .pio/build/due/FrameworkArduino/avr/dtostrf.c.o
Compiling .pio/build/due/FrameworkArduino/cortex_handlers.c.o
Compiling .pio/build/due/FrameworkArduino/hooks.c.o
Compiling .pio/build/due/FrameworkArduino/iar_calls_sam3.c.o
Compiling .pio/build/due/FrameworkArduino/itoa.c.o
Compiling .pio/build/due/FrameworkArduino/main.cpp.o
Compiling .pio/build/due/FrameworkArduino/new.cpp.o
Compiling .pio/build/due/FrameworkArduino/syscalls_sam3.c.o
Compiling .pio/build/due/FrameworkArduino/watchdog.cpp.o
Compiling .pio/build/due/FrameworkArduino/wiring.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_analog.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_digital.c.o
Compiling .pio/build/due/FrameworkArduino/wiring_pulse.cpp.o
Compiling .pio/build/due/FrameworkArduino/wiring_pulse_asm.S.o
Compiling .pio/build/due/FrameworkArduino/wiring_shift.c.o
Archiving .pio/build/due/libFrameworkArduino.a
Indexing .pio/build/due/libFrameworkArduino.a
Linking .pio/build/due/firmware.elf
Checking size .pio/build/due/firmware.elf
Building .pio/build/due/firmware.bin
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
DATA:    [====      ]  41.1% (used 13472 bytes from 32768 bytes)
PROGRAM: [==        ]  22.7% (used 119064 bytes from 524288 bytes)
Configuring upload protocol...
AVAILABLE: blackmagic, jlink, sam-ba
CURRENT: upload_protocol = sam-ba
Looking for upload port...
Use manually specified: /dev/ttyACM0
Forcing reset using 1200bps open/close on port /dev/ttyACM0
Uploading .pio/build/due/firmware.bin
Atmel SMART device 0x285e0a60 found
Erase flash
done in 0.040 seconds

Write 122024 bytes to flash (477 pages)
[==============================] 100% (477/477 pages)
done in 29.296 seconds

Verify 122024 bytes of flash
[==============================] 100% (477/477 pages)
Verify successful
done in 25.236 seconds
Set boot flash true
CPU reset.
======================== [SUCCESS] Took 175.74 seconds ========================
tfeldmann commented 4 years ago

We had the same problem and solved it by switching back to bossac 1.10601. The newer version 1.10900.0 did not work for us. We use the native USB port.

Links: https://dl.bintray.com/platformio/dl-packages/tool-bossac-linux_armv6l-1.10601.0.tar.gz https://dl.bintray.com/platformio/dl-packages/tool-bossac-linux_armv6l-1.10700.190624.tar.gz https://dl.bintray.com/platformio/dl-packages/tool-bossac-linux_armv6l-1.10900.0.tar.gz

We are programming our Due boards via a beaglebone black gateway.

valeros commented 4 years ago

Hi @aurror ! Can you confirm that it works with 1.10601.0 for you? Just specify required version in your platformio.ini, e.g.:

[env:dueUSB]
platform = atmelsam
framework = arduino
board = dueUSB
platform_packages =
  ; use bossac 1.6.1
  tool-bossac@~1.10601.0
RudolphRiedel commented 3 years ago

I recently started playing with an Adafruit Metro M4 and quickly noticed that I can only program it once with PlatformIO. The second attempt to flash the board fails and the only way to get it back working was to flash the board with the ArduinoIDE, then I could flash it again once with PlatformIO. This is due to the included version of BOSSA. I manually replaced the bossac.exe in .platformio\packages\tool-bossac with version 1.9.1 from here: https://github.com/shumatech/BOSSA And it worked just fine untill the update from 5.0.0 to 5.0.1 of Atmel SAM "repaired" it. I just replaced the file again and manually and it is working fine again now.