AVR Zielpozessor (-Cp) keinen Einfluss

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Kann das jemand nachvollziehen, das es FPC egal ist, was man unter Zielplattform/Zielprozessor einstellt ?
Betrifft nur AVR-Embedded.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Timm Thaler »

Ich hätte jetzt gesagt, das hat sehr wohl Einfluss. Aber Du hast recht, offenbar interessiert es den Compiler nicht, solange der richtige Controllertyp und der richtige Pfad zu den rtl eingetragen ist. Komisch.

Ich würde aber behaupten, das war mal anders, denn ich hab da lange dran rumprobiert die richtigen Einstellungen für -CpAVRx zu finden.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Ich denke, das nur auf den -Wp Parameter geguckt wird.
Was ganz gut wäre, wen das fpc Team es hinkriegen würde, das alle avr mit den gleichen Crosscompiler funktionieren würden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Socke »

Mathias hat geschrieben:Ich denke, das nur auf den -Wp Parameter geguckt wird.
Was ganz gut wäre, wen das fpc Team es hinkriegen würde, das alle avr mit den gleichen Crosscompiler funktionieren würden.

Soweit ich weiß, ist der Compiler für alle AVR-Subarchitekturen identisch. Es gibt lediglich Unterschiede in der vokompilierten RTL und evtl. vorhandenen Packages. Insbesondere könnte es passieren, dass die controller-spezifischen Units mit einem falschen Befehlssatz übersetzt werden und dann nicht funktionisfähig sind.

Einen Anfrage zur Anpassung der Unit-Pfade hatte ich einmal im Bugtracker gepostet: https://bugs.freepascal.org/view.php?id=30294
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Was ich die beste Lösung finde, wäre, das ist die -Wp Parameter nicht mehr geben würde.
Da -Cp angeblich unwirksam ist, könnte man dies für den AVR-Typ nehmen.

Das würde dann in etwa so aussehen: fpc -T embedded -P avr -Cp atmega328
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Socke »

Mathias hat geschrieben:Was ich die beste Lösung finde, wäre, das ist die -Wp Parameter nicht mehr geben würde.
Da -Cp angeblich unwirksam ist, könnte man dies für den AVR-Typ nehmen.

Das würde dann in etwa so aussehen: fpc -T embedded -P avr -Cp atmega328

Ich sehe das eher umgekehrt: Der Wert für -Wp ist von -Cp abhängig.

Hinter -Cp sind noch weitere Informationen hinterlegt, die für das Linken des Programms erforderlich sind: Speicheradressen für den Programmstart, verfügbarer Programmspeicher, RAM etc. Damit kann der FPC nach der Kompilierung z.B. auch ausgeben, wie viel des Programmspeichers von deinem Programm und wie viele Flashspeicher durch Daten belegt wird.

Der Parameter -Cp wirkt sich hingegen "nur" auf die Programmgenerierung, d.h. auf den erzeugten Assemblercode aus.

Nachtrag: In der Datei fpcsrc\compiler\<CPU-Typ>\cpuinfo.pas sind die Definitionen der verschiedenen Controller frü den Compiler enthalten. Dort ist auch für jeden Controller der "CPU-Type" aus -Cp enthalten. Daher müsste -Cp beim Kompilieren eines Projeks nicht mehr erforderlich sein. Zum erstellen der RTL hingegen schon, da dort der Controller-Typ (-Wp) nicht angegeben werden kann bzw. die Controller-Unit noch kompiliert werden muss.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Am benutzerfreudlichsten wäre, wen man über -Cp direkt den AVR-Typ eingeben könnte. In Lazarus wäre das einfach Zielprozessor.
Man könnte sicher in fpc einbauen, das er anhand von -Cp die richtigen Bibliotheken nimmt. Bei i386 funktioniert dies auch.
Oder ist die viel zu komplex ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Ich habe mal einen Versuch gemacht.
Einen neuen Compiler mit avr5 gebaut. Wen ich dann ein avr25 Project kompilieren will, motzt er, das attinyxxx Bibliotheken fehlen.
Dann habe ich einen avr25 über den avr5 Compiler gebaut.
Wen ich jetzt einen falschen avr habe, findet er die Bibliotheken.
Aber dafür kommen diese Fehlermeldung.

Code: Alles auswählen

Projekt kompilieren, OS: embedded, CPU: avr, Ziel: Project1: Exit code 1, Fehler: 5, Hinweise: 4
Error: /home/tux/fpcupdeluxe_test/cross/bin/avr-embedded/avr-ld: inkompatibles /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/system.o wird bei der Suche nach /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/system.o übersprungen
Error: /home/tux/fpcupdeluxe_test/cross/bin/avr-embedded/avr-ld: /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/system.o kann nicht gefunden werden
Error: /home/tux/fpcupdeluxe_test/cross/bin/avr-embedded/avr-ld: inkompatibles /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/objpas.o wird bei der Suche nach /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/objpas.o übersprungen
Error: /home/tux/fpcupdeluxe_test/cross/bin/avr-embedded/avr-ld: /home/tux/fpcupdeluxe_test/fpc/units/avr-embedded/rtl/objpas.o kann nicht gefunden werden
Project1.pas(131,20) Hint: Mixing signed expressions and longwords gives a 64bit result
 
Project1.pas(120,13) Hint: Local proc "Timer0_Interrupt" is not used
Assembling project1
Linking /n4800/DATEN/Programmierung/Lazarus/Tutorials/Embedded/AVR/ATtiny2313/Zitterkoenig/Project1
 
Project1.pas(123,3) Error: Error while linking


Unterumständen fehlt nicht viele und es werden alle Plattformen unterstützt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Timm Thaler »

Das geht so nicht, Du musst in den rtl einzelne Verzeichnisse für jede AVR-Familie (AVR25, AVR4, AVR5, AVR51) anlegen.

https://www.lazarusforum.de/viewtopic.php?f=9&t=11718&p104920

Das hatten wir schonmal, und ich sehe nicht, dass sich das geändert hat. Das geht auch technisch nicht anders, weil für die verschiedenen Familien unterschiedliche Systemlibs gebaut werden.

ccrause
Beiträge: 7
Registriert: Mo 6. Jan 2020, 20:37

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von ccrause »

Mathias hat geschrieben:Kann das jemand nachvollziehen, das es FPC egal ist, was man unter Zielplattform/Zielprozessor einstellt ?
Betrifft nur AVR-Embedded.

Es gibt eine Konsistenzprüfung zwischen -Cp und -Wp:
https://svn.freepascal.org/cgi-bin/view ... rkup#l2499

Beispiel: -Cpavr5 -Wpattiny85 ist inkonsistent

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von Mathias »

Auf diesem Videoclip, wird -Cp auf default gelassen. somit ging dies schon länger.

https://www.youtube.com/watch?v=c3wwNW7BRPI
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

ccrause
Beiträge: 7
Registriert: Mo 6. Jan 2020, 20:37

Re: AVR Zielpozessor (-Cp) keinen Einfluss

Beitrag von ccrause »

Mathias hat geschrieben:Auf diesem Videoclip, wird -Cp auf default gelassen. somit ging dies schon länger.

https://www.youtube.com/watch?v=c3wwNW7BRPI
Derzeit startet der AVR-Compiler mit Standardwerten:
target = embedded
subarch = avr5
controller = ct_none (keine Startdatei eingebunden)

Wenn Sie fpc verwenden, geben Sie auch die Architektur an (-Pavr). Wenn Sie ppcrossavr verwenden, ist dies nicht erforderlich.

Optionen werden nur benötigt, wenn sie von der Standardeinstellung abweichen. In der Regel muss ein Controller angegeben werden (-Wp). Dadurch wird der Unterarchitektur bei Bedarf automatisch korrigiert.

* Entschuldigung für diese Google-Übersetzung.

Antworten