Ach, man kann jetzt mit FPC Arduino Programmieren? Z.B. den Tiny85-20 oder den atMega328?Inzwischen läuft er auch einigermassen
FPC fit für PIC & AVR
-
- Lazarusforum e. V.
- Beiträge: 7192
- 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
MFG
Michael Springwald
Michael Springwald
-
- 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
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.

Schön zu hören, und danke das du dran arbeitest.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
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/
Re: FPC fit für PIC & AVR
Jein und Jeinpluto hat geschrieben:Ach, man kann jetzt mit FPC Arduino Programmieren? Z.B. den Tiny85-20 oder den atMega328?Inzwischen läuft er auch einigermassen

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
Da findet make den fpc des Host-Systems nicht.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
Re: FPC fit für PIC & AVR
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.

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.
-
- 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
Danke Florian, lässt sich zumindest erstmal compilieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- 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
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
compiliert. und die avr.s dann durch den Assembler gejagt.
Edit:atmega8 ist avr3 und nicht avr2 behoben.
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.
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
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 7192
- 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
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.
Ich such noch im Datenblatt die Beschreibung der Register....
Nachtrag: habe sie gefunden... Also sieht nicht kompliziert aus.... Erst einmal.
MFG
Michael Springwald
Michael Springwald
-
- 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
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.
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/
-
- Lazarusforum e. V.
- Beiträge: 7192
- 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
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.Aber wäre natürlich gut wenn du sie fertig machst, bezweifel nur das das beim Vorwissen klappt.
MFG
Michael Springwald
Michael Springwald
Re: FPC fit für PIC & AVR
Wie hast Du compiliert? Mit -Wpatmega8 ? FPC sucht standardmäßig nach avr-embedded-as etc. Ansonsten das Prefix mit -XP angebenChristian 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 Testprogrammcompiliert. und die avr.s dann durch den Assembler gejagt.Code: Alles auswählen
program test; begin writeln('test'); end.
Edit:atmega8 ist avr3 und nicht avr2 behoben.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
Write funktioniert allerdings nur mit -Wpavrsim

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._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?
-
- 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
ja gemauWie hast Du compiliert? Mit -Wpatmega8 ? FPC sucht standardmäßig nach avr-embedded-as etc. Ansonsten das Prefix mit -XP angeben
/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

Ja da hat mich eher interessiert was er daraus machtWrite funktioniert allerdings nur mit -Wpavrsim

W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 3177
- 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
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?
@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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: FPC fit für PIC & AVR
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.Christian hat geschrieben:Ja da hat mich eher interessiert was er daraus machtWrite funktioniert allerdings nur mit -Wpavrsim
Re: FPC fit für PIC & AVR
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.
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.