Forum: Mikrocontroller und Digitale Elektronik macOS Atmel-ICE mit PlatformIO


von Thomas F. (tobasco)


Lesenswert?

Hallo,
nach zähem Kampf hab ich es geschafft meinen Atmel-ICE auf einem Mac 
(macOS Catalina 10.15.7) mit AVRDude zum laufen zu bekommen.
https://github.com/ThFischer/Getting-ATMEL-ICE-to-work-on-macOS
(AVRDude Ausgabe siehe unten)

Ich möchte aber eigentlich mittels VS-Code/PlatformIO den Upload und das 
Debugging durchführen. Leider wird aber dort mein Atmel-ICE nicht 
erkannt (siehe unten).

Hat vielleicht jemand ein solches Setup zum Laufen bekommen?

platformio.ini:
1
[env:megaatmega2560]
2
platform = atmelavr
3
framework=arduino
4
board = megaatmega2560
5
upload_protocol = atmelice_isp
6
upload_port = usb


Ausgabe beim Upload-Versuch:
1
> Executing task in folder Atmel-ICE Arduino MEGA 2560: pio run --target upload --environment megaatmega2560 <
2
3
Processing megaatmega2560 (platform: atmelavr; framework: arduino; board: megaatmega2560)
4
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5
Verbose mode can be enabled via `-v, --verbose` option
6
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html
7
PLATFORM: Atmel AVR (3.1.0) > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
8
HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash
9
DEBUG: Current (avr-stub) On-board (avr-stub, simavr)
10
PACKAGES: 
11
 - framework-arduino-avr 5.1.0 
12
 - tool-avrdude 1.60300.200527 (6.3.0) 
13
 - toolchain-atmelavr 1.50400.190710 (5.4.0)
14
LDF: Library Dependency Finder -> https://docs.platformio.org/en/latest/librarymanager/ldf.html
15
LDF Modes: Finder ~ chain, Compatibility ~ soft
16
Found 5 compatible libraries
17
Scanning dependencies...
18
No dependencies
19
Building in release mode
20
Checking size .pio/build/megaatmega2560/firmware.elf
21
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
22
RAM:   [          ]   0.1% (used 9 bytes from 8192 bytes)
23
Flash: [          ]   0.6% (used 1536 bytes from 253952 bytes)
24
Configuring upload protocol...
25
AVAILABLE: atmelice_isp
26
CURRENT: upload_protocol = atmelice_isp
27
Looking for upload port...
28
Use manually specified: usb
29
*** [upload] could not open port usb: [Errno 2] No such file or directory: 'usb'
30
========================================================================================================================================== [FAILED] Took 0.44 seconds ==========================================================================================================================================

Ohne "upload_port = usb" in der platformio.ini kommt der Fehler:
1
Looking for upload port...
2
Error: Please specify `upload_port` for environment or use global `--upload-port` option.

*Hier der AVR Dude output*
1
$avrdude -c atmelice_isp -p ATmega2560 -v
2
3
avrdude: Version 6.3, compiled on Oct 11 2019 at 01:39:52
4
         [...]
5
         Using Port                    : usb
6
         Using Programmer              : atmelice_isp
7
avrdude: usbdev_open(): Found Atmel-ICE CMSIS-DAP, serno: J41800033909
8
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
9
         AVR Part                      : ATmega2560
10
         Chip Erase delay              : 9000 us
11
         PAGEL                         : PD7
12
         BS2                           : PA0
13
         RESET disposition             : dedicated
14
         RETRY pulse                   : SCK
15
         serial program mode           : yes
16
         parallel program mode         : yes
17
         Timeout                       : 200
18
         StabDelay                     : 100
19
         CmdexeDelay                   : 25
20
         SyncLoops                     : 32
21
         ByteDelay                     : 0
22
         PollIndex                     : 3
23
         PollValue                     : 0x53
24
         Memory Detail                 :
25
26
                                  Block Poll               Page                       Polled
27
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
28
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
29
           eeprom        65    10     8    0 no       4096    8      0  9000  9000 0x00 0x00
30
           flash         65    10   256    0 yes    262144  256   1024  4500  4500 0x00 0x00
31
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
32
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
33
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
34
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
35
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
36
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
37
38
         Programmer Type : JTAG3_ISP
39
         Description     : Atmel-ICE (ARM/AVR) in ISP mode
40
         Vtarget         : 5.2 V
41
         SCK period      : 1.00 us
42
43
avrdude: AVR device initialized and ready to accept instructions
44
45
Reading | ################################################## | 100% 0.00s
46
47
avrdude: Device signature = 0x1e9801 (probably m2560)
48
avrdude: safemode: hfuse reads as D8
49
avrdude: safemode: efuse reads as FD
50
51
avrdude: safemode: hfuse reads as D8
52
avrdude: safemode: efuse reads as FD
53
avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF)
54
55
avrdude done.  Thank you.

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Thomas F. schrieb:
> nach zähem Kampf hab ich es geschafft meinen Atmel-ICE auf einem Mac
> (macOS Catalina 10.15.7) mit AVRDude zum laufen zu bekommen.

Homebrew oder Macports benutzt? Nein?
Schade um die Mühe. Von obdev.at gab es auch das AVR-Mac-pack, das ließ 
sich als package installieren und ging sofort.

Thomas F. schrieb:
> Leider wird aber dort mein Atmel-ICE nicht erkannt (siehe unten).

Das kann ich nicht erkennen dass da nix erkannt wurde, das Ding kann ja 
sogar was lesen...

Thomas F. schrieb:
> Reading | ################################################## | 100%
> 0.00s
> 4647avrdude: Device signature = 0x1e9801 (probably m2560)

...also ich sehe da kein "erkennt den Programmer nicht".

mfg mf

von Thomas F. (tobasco)


Lesenswert?

Hallo Achim,
der AvrDude wurde mit brew installiert. AvrDude erkennt auch den 
Atmel-ICE. Das Problem ist, dass PlatformIO den Programmer nicht erkennt 
(er taucht auch nicht als USB device (ls /dev/tty.*) auf.

salute
Thomas

PS: So kann ich den Atmel-ICE auch "sehen", aber wie erkläre ich es 
PlatformIO?
1
$ ioreg -p IOUSB
2
+-o Root  <class IORegistryEntry, id 0x100000100, retain 22>
3
  +-o AppleUSBXHCI Root Hub Simulation@14000000  <class AppleUSBRootHubDevice, id 0x100000474, registered, matched, active, busy 0 (295 ms), retain 10>
4
    +-o Atmel-ICE CMSIS-DAP@14200000  <class AppleUSBDevice, id 0x100008ec1, registered, matched, active, busy 0 (8 ms), retain 15>

: Bearbeitet durch User
von Thomas F. (tobasco)


Lesenswert?

Zur Not wäre ich auch mit anderen Lösung glücklich, z.B.
- macOS
- VS-Code/PlatformIO
- irgend ein Programmer (inkl. Debugger)
- AVR oder ESP 8266/32

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

Aaaha. So wird ein Schuh draus.

Kannst du in Platformio irgendwo je Projekt Umgebungsvariablen 
einstellen?

Im $PATH fehlt, wo brew seine binaries hinwirft. Musste ich bei Eclipse 
CDT auch so machen, das hat auch nicht einfach den $PATH vom 
terminal.app übernommen. Andere Idee wäre alias im Standard-system-bin 
auf den avrdude im brew-bin zu setzen...

mfg mf

: Bearbeitet durch User
von Achim M. (minifloat)


Lesenswert?

PS.

Thomas F. schrieb:
> (er taucht auch nicht als USB device (ls /dev/tty.*) auf.

Äh, das tut mein USBASP auch nicht, weswegen ich mir nur dachte, dass 
Platformio den avrdude nicht findet.

Thomas F. schrieb:
> Zur Not wäre ich auch mit anderen Lösung glücklich,

Ich mache den Kram mit makefile und generischem Makefile-Projekt in 
eclipse.
Geht das in Platformio auch?

von Thomas F. (tobasco)


Lesenswert?

Das Problem ist nicht, das PlatformIO den AVRDude nicht finden würde.
Wenn ich einen Arduino via ArduinoISP als Programmer nutze (wird als 
"/dev/tty.usbmodem14201" eingebunden), gibt es keinerlei Probleme.
Das Problem ist, dass der Atmel-ICE weder von PlatformIO automatisch 
erkannt wird noch von macOS als "/dev/tty.*" eingebunden wird, so dass 
ich ihn nicht in der platformio.ini spezifizieren kann :-/

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas F. schrieb:
> Das Problem ist, dass der Atmel-ICE weder von PlatformIO automatisch
> erkannt wird noch von macOS als "/dev/tty.*" eingebunden wird, so dass
> ich ihn nicht in der platformio.ini spezifizieren kann :-/

All diese Atmel-Tools emulieren auch kein tty, daher kann man sie dort 
nicht finden. Die ursprünglichen USB-Geräte (AVRISPmkII, JTAGICEmkII, 
anfängliche Firmware der JTAGICE3) hatten alle eine vendor specific 
class, die konnte man nur über generische USB-Zugriffe ansprechen. 
Später (aktuelle Firmware vom JTAGICE3, Atmel-ICE, *EDBG) haben sie dann 
die von Keil propagierte Variante übernommen, dass die Dinger sich als 
HID melden (ist doch ganz klar und deutlich ein "Human Interface", oder? 
:-}) und das CMSIS-DAP-Protokoll implementieren. Das ist zwar erstmal 
für ARM konzipiert, aber der AVR-Teil ließ sich darin auch noch 
unterbringen.

Wir haben @Job AtmelICE (allerdings für ARMs) in platformIO benutzt, 
aber ich weiß aus'm Hut nicht, wie man denen das beibiegen musste. Durch 
die Keil-Definition der CMSIS-DAP ist das ja bei ARM an sich nicht 
ungewöhnlich.

von Thomas F. (tobasco)


Lesenswert?

Was mir nicht in den Schädel will: Weder "AVRDude" noch "MPLAB X IDE" 
haben Probleme den Atmel-ICE zu erkennen 🙄

von Achim M. (minifloat)


Lesenswert?

Thomas F. schrieb:
> Upload-Versuch:

Schau mal da...
https://community.platformio.org/t/how-to-program-atmega1284p-using-avrisp-mkii-on-macos/5977/10 
...hatte einer auch so ein Problem.

ivankravets schrieb dort:
> have you tried program target
> instead of upload?
1
 pio run -t program
> See 
https://docs.platformio.org/en/latest/platforms/atmelavr.html#upload-using-programmer

Vielleicht hilft das ja.

mfg mf

von Thomas F. (tobasco)


Lesenswert?

HEUREKA!
Kaum macht man's richtig – schon funktioniert's ™

board_upload.require_upload_port = no

siehe 
https://community.platformio.org/t/atmel-ice-with-macos-catalina/19125/2

Vielen Dank für's Mitdenken!

Beitrag #6576969 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.