FPC fit für PIC & AVR

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: FPC fit für PIC & AVR

Beitrag von pluto »

Inzwischen läuft er auch einigermassen

Ach, man kann jetzt mit FPC Arduino Programmieren? Z.B. den Tiny85-20 oder den atMega328?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

Das letzte mal als ich probiert hatte war die system.pas noch zu komplex für den compiler :)
Schön zu hören, und danke das du dran arbeitest.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

Ich stell mich irgendwie gerad zu prasselig an:

Code: Alles auswählen

sudo make all crossinstall  OS_TARGET=embedded CPU_TARGET=avr CROSSBINDIR=/usr/local/bin BINUTILSPREFIX=avr- INSTALL_PREFIX=/usr/local
make: -iVSPTPSOTO: Befehl nicht gefunden
make compiler_cycle RELEASE=1
make[1]: -iVSPTPSOTO: Befehl nicht gefunden
make[1]: Verzeichnis »/media/Daten/fpc/trunk« wird betreten
make -C compiler cycle
make[2]: -iVSPTPSOTO: Befehl nicht gefunden
make[2]: Verzeichnis »/media/Daten/fpc/trunk/compiler« wird betreten
make OS_TARGET= CPU_TARGET= CROSSBINDIR= BINUTILSPREFIX= CROSSCYCLEBOOTSTRAP=1 rtlclean rtl CYCLELEVEL=1
make[3]: Verzeichnis »/media/Daten/fpc/trunk/compiler« wird betreten
make -C  clean
 
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: FPC fit für PIC & AVR

Beitrag von FPK »

pluto hat geschrieben:
Inzwischen läuft er auch einigermassen

Ach, man kann jetzt mit FPC Arduino Programmieren? Z.B. den Tiny85-20 oder den atMega328?


Jein und Jein :)
Arduinos enthalten ja erstmal einen Bootloader, es gehört die IDE dazu etc., das wird von FPC erstmal nicht direkt unterstützt, ist aber kein prinzipielles Hindernis.
Gleiches gilt für Tiny85-20 und atMega328: da fehlen momentan einfach die Units, die die Peripherie beschreiben, die existieren momentan nur für Atmega8 und Atmega128. Aber auch hier gilt: kein prinzipielles Hindernis, nur 1-2h Fleißarbeit, vgl. http://svn.freepascal.org/cgi-bin/viewv ... sion=30768

Christian hat geschrieben:Ich stell mich irgendwie gerad zu prasselig an:

Code: Alles auswählen

sudo make all crossinstall  OS_TARGET=embedded CPU_TARGET=avr CROSSBINDIR=/usr/local/bin BINUTILSPREFIX=avr- INSTALL_PREFIX=/usr/local
make: -iVSPTPSOTO: Befehl nicht gefunden
make compiler_cycle RELEASE=1
make[1]: -iVSPTPSOTO: Befehl nicht gefunden
 


Da findet make den fpc des Host-Systems nicht.

_Bernd
Beiträge: 145
Registriert: Di 13. Feb 2007, 11:16

Re: FPC fit für PIC & AVR

Beitrag von _Bernd »

Spannend :-)

Die AVRs haben ja getrennte Adressräume für RAM und FLASH (Harvard-Architektur). Ist es denn möglich, diese über Pointer zu adressieren?

Gruß, Bernd.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

Danke Florian, lässt sich zumindest erstmal compilieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

So nächste 2 Probleme:
Der Compiler findet den externen Assembler nicht der ist als avr-as standardmässig verlinkt compiliert wurde auch mit prefix avr- was muss ich tun damit er ihn findet ?

Ich hab ein Testprogramm

Code: Alles auswählen

program test;
begin
  writeln('test');
end.
 

compiliert. und die avr.s dann durch den Assembler gejagt.

Code: Alles auswählen

avr.s: Assembler messages:
avr.s:9: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:10: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:21: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:22: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:25: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:26: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:27: Error: Ungültiger Befehlscode jmp für mcu avr2
 


Edit:atmega8 ist avr3 und nicht avr2 behoben.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: FPC fit für PIC & AVR

Beitrag von pluto »

Der atMega328 ist ja Pin kompatibel zum atMega8. D.H. die Änderungen dürften also relativ wenig sein oder?
Ich such noch im Datenblatt die Beschreibung der Register....

Nachtrag: habe sie gefunden... Also sieht nicht kompliziert aus.... Erst einmal.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

Pinkompatibel heisst doch nicht das dr selbe CPU Kern enthalten ist.
Die Reihe Atmega88 /168/ 328 hat einiges an neuer Periferie, die IO Beschreibung ist dementsprechend komplexer.
Aber wäre natürlich gut wenn du sie fertig machst, bezweifel nur das das beim Vorwissen klappt.
Mal sehn wie ich nächste Woche zu komm vllt setz ich mich mal dran für ein paar mehr avrs die Registerbeschreibungen zu machen. Und n bissl zu testen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: FPC fit für PIC & AVR

Beitrag von pluto »

Aber wäre natürlich gut wenn du sie fertig machst, bezweifel nur das das beim Vorwissen klappt.

Ich habe nicht gesagt, dass ich es machen werde, ich habe es mir nur "grob" Angeschaut um einen Eindruck zu gewinnen. Mehr nicht. Ich finde das Thema halt Interessant.
MFG
Michael Springwald

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: FPC fit für PIC & AVR

Beitrag von FPK »

Christian hat geschrieben:So nächste 2 Probleme:
Der Compiler findet den externen Assembler nicht der ist als avr-as standardmässig verlinkt compiliert wurde auch mit prefix avr- was muss ich tun damit er ihn findet ?

Ich hab ein Testprogramm

Code: Alles auswählen

program test;
begin
  writeln('test');
end.
 

compiliert. und die avr.s dann durch den Assembler gejagt.

Code: Alles auswählen

avr.s: Assembler messages:
avr.s:9: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:10: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:21: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:22: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:25: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:26: Error: Ungültiger Befehlscode jmp für mcu avr2
avr.s:27: Error: Ungültiger Befehlscode jmp für mcu avr2
 


Edit:atmega8 ist avr3 und nicht avr2 behoben.


Wie hast Du compiliert? Mit -Wpatmega8 ? FPC sucht standardmäßig nach avr-embedded-as etc. Ansonsten das Prefix mit -XP angeben

Write funktioniert allerdings nur mit -Wpavrsim ;)

_Bernd hat geschrieben:Spannend :-)
Die AVRs haben ja getrennte Adressräume für RAM und FLASH (Harvard-Architektur). Ist es denn möglich, diese über Pointer zu adressieren?


Daten ganz normal, Code als Procedure-Variablen. Was nicht geht: eins in das andere zu casten. Aber das geht ja auch bei modernen OS wegen DEP nicht mehr.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: FPC fit für PIC & AVR

Beitrag von Christian »

Wie hast Du compiliert? Mit -Wpatmega8 ? FPC sucht standardmäßig nach avr-embedded-as etc. Ansonsten das Prefix mit -XP angeben

ja gemau
/usr/local/lib/fpc/3.1.1/ppcrossavr -Wpatmega8 avr.pp

warum nach -embedded ? So muss man ja immer die symlinks manuell noch erzeugen
Macht sicher aber auf anderen Plattformen Sinn was

Code: Alles auswählen

Free Pascal Compiler version 3.1.1 [2015/05/03] for avr
Copyright (c) 1993-2015 by Florian Klaempfl and others
Target OS: Embedded
Compiling avr.pp
Assembling test
Linking avr
4 lines compiled, 0.1 sec, 2354 bytes code, 122 bytes data
 

:)

Write funktioniert allerdings nur mit -Wpavrsim ;)

Ja da hat mich eher interessiert was er daraus macht ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

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: FPC fit für PIC & AVR

Beitrag von Socke »

Ich habe diesen Thead auf der Wiki-Seite verlinkt: http://wiki.freepascal.org/AVR

@Christian: kannst du vielleicht ein komplettes Beispiel beisteuern, insbesondere make-Befehl und Kompilierung des Testprogramms?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: FPC fit für PIC & AVR

Beitrag von FPK »

Christian hat geschrieben:
Write funktioniert allerdings nur mit -Wpavrsim ;)

Ja da hat mich eher interessiert was er daraus macht ;)


Im Endeffekt Aufrufe von Procedure-Variablen mit dem Wert nil. Am einfachsten könnte man die consoleio-Unit einbinden und dann dort die entsprechenden Routinen umleiten, um die Zeichen dann auf ein LCD auszugeben oder an einen beliebigen Port, wie es z.B. die avrsim-Unit macht.

_Bernd
Beiträge: 145
Registriert: Di 13. Feb 2007, 11:16

Re: FPC fit für PIC & AVR

Beitrag von _Bernd »

Hallo,

ich wollte mal den AVR compiler (trunk, Revision 31200) ausprobieren und bekomme Fehlermeldungen beim Linken eines Testprogrammes:

D:\fpc311\31200\mue\project\test>avr-embedded-fpc -Wpatmega128 test.pas -al
d:\FPC311\31200\binutils_avr\avr-embedded-ld.exe: skipping incompatible D:\fpc311\31200\src\rtl\units\avr-embedded\system.o when searching for D:\fpc311\31200\s
rc\rtl\units\avr-embedded\system.o
d:\FPC311\31200\binutils_avr\avr-embedded-ld.exe: cannot find D:\fpc311\31200\src\rtl\units\avr-embedded\system.o
test.pas(7,4) Error: Error while linking
test.pas(7,4) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted

Hat jemand eine Idee?

Gruß, Bernd.

Antworten