Forum: Compiler & IDEs Von AVR-Studio zu PlatformIO


von Harald P. (haraldp)


Lesenswert?

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

von da und dort (Gast)


Lesenswert?

(nachdem sich bis jetzt keiner gemeldet hat ....)

Tja, scheint ein ausgereiftes Produkt zu sein. Was treibt dich
an von einer funktionierenden, einfachen und leicht zu bedien-
baren IDE wegzugehen?

PlatformIO bietet auch Support auf seiner Homepage an, wie wäre
es wenn du zuerst mal dort um Hilfe bittest? Dort kennt sich
doch am ehesten jemand aus, nicht hier.

Wenn du schon AVR Studio einigermassen beherrscht hast, warum
nutzt du dann für die Zukunft - wenn das was du machen willst
nicht mehr unterstützt wird - das Atmel Studio 7.xx?

Ich weiss, keine Antworten sondern nur weitere Fragen. Ich habe
bei "solchen" IDEs einfach Magenschmerzen. Die eierlegende
Wollmichsau muss wohl hier und da Macken haben, das haben
solche Tiere so an sich.

Also wenn PlatformIO nicht bei deinem Problem helfen kann dann
wech damit. IDEs wie Arduino machen sehr bald Probleme wenn man
etwas tiefer in die Materie einsteigen will .... Copy&Paste
von *.ino Sourcen ist die gängigste erfolgversprechende
Arbeitsweise.

von Ingo E. (ogni42)


Lesenswert?

Um es einzugrenzen, solltest Du vielleicht nicht mit baremetal sondern 
mit der Arduino IDE anfangen. Habe mal testweise das installiert und bei 
mir sieht das dann so aus:
1
 ; PlatformIO Project Configuration File
2
;
3
;   Build options: build flags, source filter
4
;   Upload options: custom upload port, speed and extra flags
5
;   Library options: dependencies, extra library storages
6
;   Advanced options: extra scripting
7
;
8
; Please visit documentation for the other options and examples
9
; https://docs.platformio.org/page/projectconf.html
10
11
[env:nanoatmega328new]
12
platform = atmelavr
13
board = nanoatmega328new
14
framework = arduino

Das "new" bezieht sich auf den Bootloader. Die entsprechenden Boards 
findest Du in den platformio Platforms. Das übersetzt bei mir ohne 
Probleme.

Hier: https://docs.platformio.org/en/latest/platforms/atmelavr.html
ist bei den frameworks auch nicht "baremetal" aufgeführt. Ich würde 
daher arduino nehmen und die main() implementieren, dann kannst Du ganz 
normal baremetal programmieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Harald P. schrieb:
> Leider erzeugt PlatformIO keine lss-Datei, an der man den generierten
> Assemblercode sehen kann.

Dann erzeuge sie doch selbst. Das ist doch weiter nichts, als ein Aufruf 
von avr-objcopy mit den Optionen -h -S.

Sinnvoller wäre es wohl für den Anfang, die Symboltabellen mal zu 
vergleichen, dafür gibt's das Tool avr-nm.

Vielleicht lässt du dir ja auch mal die Compileraufrufe zeigen, das geht 
bei PlatformIO mit pio run -v. Insbesondere der Aufruf des Linkers am 
Ende wäre interessant, ihn gegen den von Atmel Studio generierten zu 
vergleichen.

(Wie man pio run -v aus deren IDE heraus macht, habe ich keine Ahnung. 
Wir haben PlatformIO ausschließlich auf der Kommandozeile benutzt.)

von Christian J. (Gast)


Lesenswert?

Hallo,

ich habe diese IDE auch neulich mal entdeckt, hoffe sie läuft unter 
Windows 7. Da ich weg wollte von dieser unsäglich primitiven Editor 
Geschichte unter Arduino. Vielleicht geht es ja auch für STM32 etc.

Was hat es mit dieser IDE denn so auf sich? Bin da nur mal kurz durch 
geklickt. Da steht was von Microsoft VSCode etc?

Gewünscht wäre ja, dass man eine IDE hat, darunter kommt der GCC 
Compiler, ideralerweise konfiguriert der das Target gleich mit, CMSIS 
einbinden, SPL oder HAL.... Make etc muss man sich nicht drum 
kümmern.... und Debuggen wäre nett, zumindest wenn die Tools da 
einbindbar sind.

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.