AVR Zielpozessor (-Cp) keinen Einfluss
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
AVR Zielpozessor (-Cp) keinen Einfluss
Kann das jemand nachvollziehen, das es FPC egal ist, was man unter Zielplattform/Zielprozessor einstellt ?
Betrifft nur AVR-Embedded.
Betrifft nur AVR-Embedded.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- 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
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.
Ich würde aber behaupten, das war mal anders, denn ich hab da lange dran rumprobiert die richtigen Einstellungen für -CpAVRx zu finden.
-
- Beiträge: 6194
- 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
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.
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
Mit Java und C/C++ sehe ich rot
-
- 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
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 6194
- 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
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
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
Mit Java und C/C++ sehe ich rot
-
- 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
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 6194
- 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
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 ?
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
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6194
- 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
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.
Unterumständen fehlt nicht viele und es werden alle Plattformen unterstützt.
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
Mit Java und C/C++ sehe ich rot
-
- 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
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.
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.
Re: AVR Zielpozessor (-Cp) keinen Einfluss
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
-
- Beiträge: 6194
- 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
Auf diesem Videoclip, wird -Cp auf default gelassen. somit ging dies schon länger.
https://www.youtube.com/watch?v=c3wwNW7BRPI
https://www.youtube.com/watch?v=c3wwNW7BRPI
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: AVR Zielpozessor (-Cp) keinen Einfluss
Derzeit startet der AVR-Compiler mit Standardwerten:Mathias hat geschrieben:Auf diesem Videoclip, wird -Cp auf default gelassen. somit ging dies schon länger.
https://www.youtube.com/watch?v=c3wwNW7BRPI
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.