Die PlatformIO Entwicklungsumgebung gefällt mir sehr gut, und ich
benutze sie nun für alle Arduino-Projekte (ESP32 und ESP8266). Der
Umstieg von AVR-Studio zu PlatformIO war jedoch ernüchternd:
Zuerst habe ich ein PlatformIO "Leerprojekt" erzeugt, und dann habe ich
aus einem vorhandenen AVR-Studio Projekt alle Quelldateien (*.c) unter
Ordner "src" und alle Header-Dateien (*.h) unter "include" kopiert.
Die platformio-ini sieht so aus:
1 | [env:ATmega328]
|
2 | platform = atmelavr
|
3 | board = nanoatmega328
|
4 | board_build.mcu = atmega328p
|
5 | board_build.f_cpu = 16000000L
|
6 | build_flags =
|
7 | -Wextra -Wall -std=gnu99 -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wextra -Wstrict-aliasing=1
|
PlatformIO meckert Konstrukte wie "pgm_read_byte" und "__flash" an, aber
es kompiliert ohne Fehler (!). Jedoch ist das Compilat ca. 30% kleiner
als unter AVR-Studio. Auch die RAM-Daten sind kleiner. Zwar sind wohl
die Toolchains unterschiedlich, aber so krass dürfte sich die Ergebnisse
nicht unterscheiden. Irgendetwas läßt wohl PlatformIO aus.
Während das AVR-Studio läuft, kommt das PlatformIO-Projekt noch nicht
einmal aus der Initilisierung heraus.
Leider erzeugt PlatformIO keine lss-Datei, an der man den generierten
Assemblercode sehen kann.
Weiß jemand auf Anhieb, was man bei der Portierung beachten muß?
Und wie könnte PlatformIO eine Assemblerdatei generieren?
Harald