FPC fit für PIC & AVR

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Re: FPC fit für PIC & AVR

Beitragvon pluto » 3. Mai 2015, 00:45 Re: FPC fit für PIC & AVR

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon Christian » 3. Mai 2015, 07:02 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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon Christian » 3. Mai 2015, 07:14 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/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon FPK » 3. Mai 2015, 11:28 Re: FPC fit für PIC & AVR

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.
FPK
 
Beiträge: 30
Registriert: 21. Mai 2008, 18:38
Wohnort: Erlangen

Beitragvon _Bernd » 3. Mai 2015, 11:57 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.
_Bernd
 
Beiträge: 141
Registriert: 13. Feb 2007, 11:16

Beitragvon Christian » 3. Mai 2015, 12:57 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/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon Christian » 3. Mai 2015, 13:29 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
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/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon pluto » 3. Mai 2015, 13:44 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.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon Christian » 3. Mai 2015, 14:13 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.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon pluto » 3. Mai 2015, 14:19 Re: FPC fit für PIC & AVR

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
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6476
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 17.1 Rebecca | 
Nach oben

Beitragvon FPK » 3. Mai 2015, 14:50 Re: FPC fit für PIC & AVR

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.
FPK
 
Beiträge: 30
Registriert: 21. Mai 2008, 18:38
Wohnort: Erlangen

Beitragvon Christian » 3. Mai 2015, 17:43 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 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/
Christian
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon Socke » 3. Mai 2015, 18:14 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?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2385
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon FPK » 3. Mai 2015, 18:51 Re: FPC fit für PIC & AVR

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.
FPK
 
Beiträge: 30
Registriert: 21. Mai 2008, 18:38
Wohnort: Erlangen

Beitragvon _Bernd » 9. Jul 2015, 16:43 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.
_Bernd
 
Beiträge: 141
Registriert: 13. Feb 2007, 11:16

» Weitere Beiträge siehe nächste Seite »
VorherigeNächste

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried