Lazarus embedded mit fpcupdeluxe geht nicht

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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:Schade, nur Windows-Versionen, ansonsten ist die Auswahl gross.


Achso, ja, aber beim Arduino sind auch einige avr-as und so dabei. Ich weiss aber nicht, ob man die einfach nehmen kann. Aber wart mal, unter Linux müsstest Du die mit apt-get install binutils bekommen, das hab ich auf dem Raspi versucht, bin dann aber auch nicht weitergekommen.

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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Ich hab jetzt die ppcrossavr.exe gefunden, die ist in fpcsrc\compiler\ gelandet. Dann hab ich die nach fpc\bin\i386-win32 kopiert, wo auch die ppcrossarm steht, die fpcupdeluxe automatisch erzeugt. Nun läuft der Compiler, bricht aber mit kann unit system nicht finden ab.

Code: Alles auswählen

Compile Project, Mode: AVRcross, OS: embedded, CPU: avr, Target: test: Exit code 1, Errors: 1
Fatal: Can't find unit system used by test


Es gibt auch unter fpc\units\avr-embedded keine system, nur eine systems.ppu und eine systems.o

Es gibt jeweils eine system.ppu und system.o unter fpc\units\arm-android\rtl\, fpc\units\arm-linux\rtl\, fpc\units\x86_64-win64\rtl\ und fpc\units\i386-win32\rtl\. Das sind die, die fpcupdeluxe da reingebastelt hat, wenn ich den Crosscompiler für ARM Linux und ARM Android mit installieren lasse.

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Guck mal in diesen Ordner, da sollten die system.* sein.
./fpcsrc/fpc/lib/fpc/3.0.2/units/avr-embedded/rtl
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Nee. da gibt es bei mir nur die systems.o und systems.pp. Ich denke nicht, dass einfach Umbenennen das Problem behebt. ;-)

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Nee. da gibt es bei mir nur die systems.o und systems.pp. Ich denke nicht, dass einfach Umbenennen das Problem behebt.

Umbenennen bringt sicher nichts.

Im Anhang meine beiden Dateien, aber ich den mit denen kommst auch nicht viel weiter.
Dateianhänge
system.tar.gz
(180.48 KiB) 125-mal heruntergeladen
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Ich habe jetzt aus dem Anhang dieses Posts http://www.lazarusforum.de/viewtopic.php?p=89132#p89132 die .o und .ppu nach lib\avr-embedded rauskopiert und die ppcrossavr.exe nach fpc\bin\i386-win32. In meine alte Laz 1.6.4 und FPC 3.0.2 Installation.

Und damit kann ich ein Programm kompilieren bis zum Hexfile.

Komischerweise steht in der entstehenden .o Datei "FPC 3.1.1 [2016/10/18] for avr"

Auch in die "trunk"-Installation mit Laz 1.9 und FPC3.1.1 kopiert funktioniert das.

Ist natürlich alles andere als eine saubere Installation. Und es fehlen die ATtinys, aber zum Rumprobieren reichts erstmal.

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Und damit kann ich ein Programm kompilieren bis zum Hexfile.

So weit bin ich leider noch nicht, da ich erst mal die "avr-embedded-as" suchen muss.
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:So weit bin ich leider noch nicht, da ich erst mal die "avr-embedded-as" suchen muss.


Ich hab grad mal auf dem Raspi geschaut: Wenn Du die binutils installiert hast, müssten die in /usr/bin liegen: avr-ar, avr-as, avr-ld, avr-objcopy, avr-objdump, avr-strip. Ausserdem noch avr-readelf und avr-nm, weiss aber nicht ob die gebraucht werden.

Also eigentlich sollte es reichen /usr/bin als Pfad anzugeben.

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Auf dem PC sind dort nur folgende avr-Dateien vorhanden:

Code: Alles auswählen

avr-addr2line  avr-c++filt  avr-gprof   avr-nm       avr-ranlib   avr-strings
avr-ar         avrdude      avr-ld      avr-objcopy  avr-readelf  avr-strip
avr-as         avr-elfedit  avr-ld.bfd  avr-objdump  avr-size
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:Auf dem PC sind dort nur folgende avr-Dateien vorhanden:

Code: Alles auswählen

avr-addr2line  avr-c++filt  avr-gprof   avr-nm       avr-ranlib   avr-strings
avr-ar         avrdude      avr-ld      avr-objcopy  avr-readelf  avr-strip
avr-as         avr-elfedit  avr-ld.bfd  avr-objdump  avr-size


Ja, sollten die sein, die Du brauchst.

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Ja, sollten die sein, die Du brauchst.

Ja es waren diese, aber man muss überall noch ein "-embedded" dazischen hängen.

Aber ich denke, das Einrichten geht irgendwie viel einfacher, wen man weis wie. :wink:

Jetzt habe ich eine HEX.

Dies hat er mit kompiliert. :shock:

Code: Alles auswählen

program test;
uses
  atmega128;
begin
  PORTC:=0;
end.
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:Aber ich denke, das Einrichten geht irgendwie viel einfacher, wen man weis wie.


Das ist das Problem mit den Anleitungen: Ich hab bestimmt ein Dutzend Forenthreads, Wikis, Howtos gefunden, aber teilweise sind die schon 6 Jahre alt und die angegebenen Quellen nicht mehr da, teilweise steht da halt, kopier Dir die und die Dateien, aber nicht woher, und viel schlimmer nicht wohin. Dann liegen die Daten bei Linux wild verteilt in diversen /usr und /bin und /lib Verzeichnissen. Das eine Makefile ist unvollständig, das nächste Makefile compilert Zeug was nicht zur Anleitung passt.

Ich würd ja gern ein aktuelles Tutorial machen, aber ich bin mit meiner zusammenkopierten Lösung so wenig zufrieden, dass kann man auch keinem antun. Ich muss das nochmal in Ruhe durchgehen.

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

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Mathias »

Ich habe versucht, meine HEX hochzuladen. Die Ausgabe von avrdude sieht fehlerfrei aus, nur leider sieht es so aus, wie wen es nicht geflasht wurde.
Ich habe vorhin ein blink-Sketch mit der Arduino-IDE hochgeladen, aber nach dem Aufruf von avrdude, blink die LED immer noch. :roll:
Diese müsste eigentlich jetzt ein Dauerbrenner haben.

Code: Alles auswählen

 avrdude -Cavrdude.conf -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:test.hex:i
 
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.00s
 
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "test.hex"
avrdude: writing flash (1920 bytes):
 
Writing | ################################################## | 100% 0.56s
 
avrdude: 1920 bytes of flash written
avrdude: verifying flash memory against test.hex:
avrdude: load data flash data from input file test.hex:
avrdude: input file test.hex contains 1920 bytes
avrdude: reading on-chip flash data:
 
Reading | ################################################## | 100% 0.42s
 
avrdude: verifying ...
avrdude: 1920 bytes of flash verified
 
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
 
avrdude done.  Thank you.
 


Code: Alles auswählen

program test;
uses
  atmega128;
begin
  DDRB := 255;
  PORTB := 255;
end.
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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Meine Compilereinstellungen:

Code: Alles auswählen

Verzeichnisse Units (-Fu): fpc\units\avr-embedded\;cross\lib\avr_embedded\
Unit-Ausgabe (-FU): lib\$(TargetCPU)-$(TargetOS)
Ziel-Dateiname (-o): test
Standart-Config fpc.cfg
Ziel-OS: Embedded
Ziel-CPU: avr
Zielprozessor: AVR5
Optimierung: -O2 oder -O3
Benutzerdef. Einstellungen:
-Cpavr5
-Wpatmega328p
-a


Erzeugt mir in test\lib\embedded: test.o, test.ppu, test.s <= enthält das Assembler-Listing, welches der FPC erzeugt und aus dem der avr-Compiler das hexfile macht
Erzeugt in test: test.hex, das muss etwa so aussehen (im Texteditor):

Code: Alles auswählen

Adresse..Programmcode..Prüfsumme
:100000000C9434000C94AF000C94AF000C94AF002F
:100010000C94AF000C94AF000C94AF000C94AF00A4
:100020000C94AF000C94AF000C94AF000C94AF0094
:100030000C94AF000C94AF000C94AF000C94AF0084
:100040000C94AF000C94AF000C94AF000C94AF0074
:100050000C94AF000C94AF000C94AF000C94AF0064 <= Interrupt-Einsprungpunkte
:100060000C94AF000C94AF001124EFEFEDBFE8E06B <= Dein Programm
:10007000EEBFA0E0B1E0D1E0E2E6F1E002C0059021
:100080000D92A230BD07D9F7A2E0B1E0D1E00C9407
:100090004A001D92A230BD07E1F70C94A100DF9346
:1000A000CF93CDB7DEB7C650D0400FB6F894DEBFC1
:1000B0000FBECDBF512D212D312D412D5A832B83C4
:1000C0003C834D835A814B812C813D8151504109A4
:1000D000210931095A834B832C833D833A816B81FB
:1000E0004C815D81A1E02A2F320F611D411D511D00
:1000F0003A836B834C835D83209100013091010131
:100100002150310920930001309301017A818B81C4
:100110006C819D81A0E83A2FAAE14A2FA6E05A2FD0
:10012000212D73178407650792070CF4D7CFCA5F98
:10013000DF4F0FB6F894DEBF0FBECDBFCF91DF917A
:1001400008950E94AE0027B12061206227B944982B
:100150000E944F00449A0E944F00F9CF08950C94DA
:02016000AF00EE
:0201620000009B
:00000001FF <= Endemarker


Allerdings habe ich das Projekt mit http://forum.lazarus.freepascal.org/index.php?topic=35486.0 erstellt. Dabei wird die Unit atmega328p.pp automatisch eingebunden.

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: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von Timm Thaler »

Mathias hat geschrieben:

Code: Alles auswählen

program test;
uses
  atmega128; <= das müsste atmega128p sein
begin
  DDRB := 255;
  PORTB := 255;
end.


Allerdings unterscheiden sich atmega128.pp und atmega128p.pp nur gering, sollte keinen Einfluss haben.

Antworten