Lazarus embedded mit fpcupdeluxe geht nicht

Mathias
Beiträge: 6160
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 »

Heißt das "Infodwrf" (mit großen i) oder "lnfodwrf" (mit kleinem L)? Hier sieht es aus wie letzteres, aber "info" würde mehr Sinn machen. Vielleicht ist da irgendwo ein Tippfehler...

Von mir sicher ein Tippfehler. :oops: oder auch nicht ! :roll:

In meine fpc-sourcen gibt es eine lnfodwrf Unit, mit kleinem L geschrieben.

Anscheinend sehen im Forum die IIIIllll gleich aus. :roll:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DonAlfredo
Beiträge: 74
Registriert: Do 28. Sep 2017, 10:26

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von DonAlfredo »

Build without debugging !
Unit lnfodwrf is needed by the debugger ... any help on this subject would be appreciated.

Mathias
Beiträge: 6160
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 »

DonAlfredo hat geschrieben:Build without debugging !
Unit lnfodwrf is needed by the debugger ... any help on this subject would be appreciated.

Ohne die Debuggerinfo, kann ich ein einfaches "Hello World" kompilieren. Bei MSDOS bekomme ich eine exe und bei AVR eine HEX, wie erwartet.


Betrifft AVR:

Jetzt muss ich es nur noch hinkriegen die HEX auf den Arduino-Nano zu laden.
Nur das habe ich mit avrdude noch nicht hingekriegt. so wie ich es hier schon geschrieben habe, bevor du dein erstes Post gemacht hast. viewtopic.php?f=15&t=11044&start=30

Irgendwie werde ich dies schon noch hinkriegen. :wink:
Wen dies mal läuft kann man sicher in Lazarus so etwas ähnliches machen:

Code: Alles auswählen

/usr/bin/averude -bla -bla $(TargetCmdLine)




Betrifft MSDOS:

Unter Startprogramm noch folgendes reinschreiben "/usr/bin/dosbox $(TargetCmdLine)", dann wird einem sogar noch die DOSBox geöffnet.
Bei Ziel-Dateiname (-o) noch ein .exe hinter die Datei.
Nur habe ich da trotzdem noch ein Problem.
Ich habe ein altes Turbo-Pascal-Programm welches den Paramter "-WmLarge" braucht.

Mit dem Cross-Compiler musste ich dies so kompilieren:

Code: Alles auswählen

c:\FPC\3.0.2\bin\i386-win32\ppcross8086.exe pacman.lpr -WmLarge
pause
C:\Programme\DOSBox-0.74\DOSBox.exe pacman.exe

Der Cross-Compiler hatte ich von hier: https://www.freepascal.org/down/i386/win32-austria.var

Ich habe versucht unter Lazarus folgendes einzustellen, siehe Anhang.
Nur dann kann er die Unit system nicht finden.

Code: Alles auswählen

Projekt kompilieren, OS: msdos, CPU: i8086, Ziel: PACMAN: Exit code 256, Fehler: 1
Fatal: Can't find unit system used by pacman
Dateianhänge
Bildschirmfoto vom 2017-10-01 18-19-02.png
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 »

Brennen kannst Du mit avrdude, wenn Du eine grafische Oberfläche willst: Ich nehm den AVR8 Burn-O-Mat. Läuft auch auf dem Raspi und die Fuses lassen sich sehr bequem einstellen.

Mathias
Beiträge: 6160
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 »

Timm Thaler hat geschrieben:Brennen kannst Du mit avrdude, wenn Du eine grafische Oberfläche willst: Ich nehm den AVR8 Burn-O-Mat. Läuft auch auf dem Raspi und die Fuses lassen sich sehr bequem einstellen.

Irgendwas ist total Faul.
Ich habe bewusst bei beiden Varianten die gleiche HEX genommen, somit ist ausgeschlossen, das es an dieser liegt.
Wen ich mit slober (Arduino Eclipse) mein sketch hochlade, kommt folgende Meldung:

Code: Alles auswählen

Starting upload
using arduino loader
Starting reset using DTR toggle process
Toggling DTR
Continuing to use/dev/ttyUSB0
Ending reset
 
 
Launching/home/tux/Programme/sloeber//arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C/home/tux/Programme/sloeber//arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/home/tux/sloeber/nano_test/Release/nano_test.hex:i
Output:
 
avrdude: AVR device initialized and ready to accept instructions
 
Reading | ################################################## | 100% 0.00s
 
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/home/tux/sloeber/nano_test/Release/nano_test.hex"
avrdude: writing flash (926 bytes):
 
Writing | ################################################## | 100% 0.30s
 
avrdude: 926 bytes of flash written
avrdude: verifying flash memory against /home/tux/sloeber/nano_test/Release/nano_test.hex:
avrdude: load data flash data from input file /home/tux/sloeber/nano_test/Release/nano_test.hex:
avrdude: input file /home/tux/sloeber/nano_test/Release/nano_test.hex contains 926 bytes
avrdude: reading on-chip flash data:
 
Reading | ################################################## | 100% 0.22s
 
avrdude: verifying ...
avrdude: 926 bytes of flash verified
 
avrdude done.  Thank you.
 
avrdude finished
upload done


Rufe ich dies manuell auf, die Pfade sind somit die gleichen wie unter sloeber, somit müsste eigentlich das gleiche passieren, tut es aber nicht.
Es kommt die komische safemode Meldung. :roll:

Code: Alles auswählen

$ /home/tux/Programme/sloeber//arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C/home/tux/Programme/sloeber//arduinoPlugin/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:/home/tux/sloeber/nano_test/Release/nano_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 "/home/tux/sloeber/nano_test/Release/nano_test.hex"
avrdude: writing flash (926 bytes):
 
Writing | ################################################## | 100% 0.30s
 
avrdude: 926 bytes of flash written
avrdude: verifying flash memory against /home/tux/sloeber/nano_test/Release/nano_test.hex:
avrdude: load data flash data from input file /home/tux/sloeber/nano_test/Release/nano_test.hex:
avrdude: input file /home/tux/sloeber/nano_test/Release/nano_test.hex contains 926 bytes
avrdude: reading on-chip flash data:
 
Reading | ################################################## | 100% 0.22s
 
avrdude: verifying ...
avrdude: 926 bytes of flash verified
 
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
 
avrdude done.  Thank you.
 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
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 »

Nur habe ich da trotzdem noch ein Problem.
Ich habe ein altes Turbo-Pascal-Programm welches den Paramter "-WmLarge" braucht.

Dieses Problem konnte ich jetzt auch halbwegs lösen.
Wen ich bei "Setup+" folgendes mache, dann läuft dies einmal durch, wen ich "Install cross-compiler" drücke.
Aber nur einmal, mache ich dies ein zweites mal, dann kommt folgender Fehler:

Code: Alles auswählen

Building compiler for msdos-i8086 [CROSSOPT: -WmLarge ].
sstrings.inc(1532,13) Fatal: Code segment too large
/home/tux/fpcupdeluxe/fpcsrc/compiler/ppcross8086 -Tmsdos -Pi8086 -Ur -Xs -O2 -n -Fi../inc -Fi../i8086 -FD/home/tux/fpcupdeluxe/cross/bin/i8086-msdos -FE. -FU/home/tux/fpcupdeluxe/fpcsrc/rtl/units/msdos -vw-n-h-l-d-u-t-p-c- -di8086 -dRELEASE -WmLarge -Us -Sg system.pp
Fatal: Compilation aborted
sstrings.inc(1532,13) Fatal: Code segment too large
fpcupdeluxe: ERROR: FPCCrossInstaller (BuildModuleCustom: FPC): Running cross compiler fpc make all for i8086-msdos failed with an error code.

Aber immerhin, wen ich es das erste mal richtig mache, dann kann ich mein Turbo-Pascal-Programm fehlerfrei in Lazarus kompilieren. 8)

Bei AVR besteht diese Problem nicht, dies kann ich zig mal neu erzeugen.
Dateianhänge
Bildschirmfoto vom 2017-10-01 23-01-01.png
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DonAlfredo
Beiträge: 74
Registriert: Do 28. Sep 2017, 10:26

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von DonAlfredo »

Try this: "-WmLarge -CX -XXs"

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von kupferstecher »

Mathias hat geschrieben:Irgendwas ist total Faul.

[...] mit slober (Arduino Eclipse) [...]

Code: Alles auswählen

Starting upload
using arduino loader
Starting reset using DTR toggle process
Toggling DTR
Continuing to use/dev/ttyUSB0
Ending reset
 
[...]



Hier scheint noch ein Reset des Boards durchgefuehrt zu werden, durch die DTR-Leitung der Seriellen. Ueber die Kommandozeile hast du das vermutlich nicht gemacht. Obs was mit dem Safemode zu tun hat, k.A.

Mathias
Beiträge: 6160
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 »

Hier scheint noch ein Reset des Boards durchgefuehrt zu werden, durch die DTR-Leitung der Seriellen. Ueber die Kommandozeile hast du das vermutlich nicht gemacht. Obs was mit dem Safemode zu tun hat, k.A.

Ich denke, ich werde dieses Problem mal im www.mikrocontroller.net schildern, vielleicht kann da jemand helfen.

Try this: "-WmLarge -CX -XXs"

Mit dieser Option, scheint da Problem weg zu sein. 8)

Ich muss es mal sagen, mit fpcupdelux wurde ein super Programm entwickelt. :idea: :wink:
Danke an die Entwickler.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
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 »

Nochmals zu dem AVR-Cross-Compiler zurück.
Das einfache Hello World hatte mit der fpcupdelux erstellen wunderbar kompiliert.

Aber jetzt kommt das Problem.
Sobald ich die Die Unit armega328p einbinden will, wird diese nicht gefunden.
Daher habe ich diese manuell über Projekt-Einstellungen/Unit-Pfade mit dem Pfad /home/tux/fpcupdeluxe/fpcsrc/rtl/embedded/avr/ eingebunden.
Somit wird zwar anstandslos kompiliert, aber der Linker will nicht.

Code: Alles auswählen

Projekt kompilieren, OS: embedded, CPU: avr, Ziel: Project1: Exit code 256, Fehler: 1
Free Pascal Compiler version 3.1.1-r20:37407 [2017/10/08] for avr
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Embedded
Compiling Project1.pas
Assembling project1
Linking Project1
/usr/bin/avr-ld: Project1.elf section `.text' will not fit in region `text'
 
 
 
 
 
Project1.pas(32,0) Error: Error while linking


Bei dem manuellen Knorz, welcher mit FPC 3.0.2 welcher ganz oben beim Thread steht, kompiliert und linkt er anstandslos, es gibt eine *.HEX.
Obwohl die nicht die Trunk war.

Mein Test-Code sieht so aus:

Code: Alles auswählen

program Project1;
uses
  atmega328p;
 
//var
//  PORTB : byte absolute $00+$25; // Port B Data Register
//  DDRB : byte absolute $00+$24; // Port B Data Direction Register
//  PINB : byte absolute $00+$23; // Port B Input Pins
 
procedure sleep(t:integer);
var
  i:integer;
begin
  for i := 0 to t do begin
    asm
      nop;
    end;
  end;
end;
 
begin
  DDRB:=255;
  repeat
    PORTB:=0;
    sleep(101);
 
    PORTB:=255;
    sleep(100);
  until 1 = 2;
end.\0
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 »

Mit der 3.0.2 hab ich auch kompilieren können, aber da funktioniert so vieles nicht, dass ich nur noch die aktuellste 3.1.1 nehme. Unter anderem verwendet die ganz andere Libs, wie mir scheint.

Mathias
Beiträge: 6160
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 »

Mit der 3.0.2 hab ich auch kompilieren können, aber da funktioniert so vieles nicht, dass ich nur noch die aktuellste 3.1.1 nehme.

Bei mir geht mit der 3.1.1 nicht mehr. Auch dann nicht, wen man das gebastelt wie mit der 3.0.2 er macht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
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 »

Bei mir geht mit der 3.1.1 nicht mehr. Auch dann nicht, wen man das gebastelt wie mit der 3.0.2 er macht.

Das Problem ist nun auch gelöst, mit der Trunk vom 13.10 läuft es bei mir auch und dies sogar mit Lazarus. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
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 wollte den Arduino Mega probieren. Dieser ist mit dem ATmega2560 bestückt.

Somit habe ich mit fpcupdelux und folgenden Parameter kompiliert, dies lief auch fehlerfrei durch.

Code: Alles auswählen

avr-embedded
  options : -Cpavr6
  subarch : avr6


Im Lazarus habe ich da bei Benutzerdefinierten Einstellungen "-WpATMEGA2560" gewählt.

Aber wen ich kompilieren will, kommt es zu folgendem Fehler:

Code: Alles auswählen

Projekt kompilieren, OS: embedded, CPU: avr, Ziel: Project1: Exit code 256, Fehler: 1
Free Pascal Compiler version 3.1.1-r20:37517 [2017/10/25] for avr
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Embedded
Compiling Project1.pas
Assembling project1
/usr/bin/avr-ld: Inkompatible /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/system.o wird übersprungen bei der Suche nach /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/system.o
/usr/bin/avr-ld: cannot find /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/system.o
/usr/bin/avr-ld: Inkompatible /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/objpas.o wird übersprungen bei der Suche nach /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/objpas.o
/usr/bin/avr-ld: cannot find /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/objpas.o
/usr/bin/avr-ld: Inkompatible /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/atmega2560.o wird übersprungen bei der Suche nach /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/atmega2560.o
/usr/bin/avr-ld: cannot find /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/atmega2560.o
Linking Project1
 
 
 
 
 
Project1.pas(27,0) Error: Error while linking

Wieso ?

Eine Unit für den AVR ist vorhanden atmega2560.pp .
Wird der ATmega2560 noch nicht richtig unterstützt ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Lazarus embedded mit fpcupdeluxe geht nicht

Beitrag von kupferstecher »

Mathias hat geschrieben:

Code: Alles auswählen

/usr/bin/avr-ld: Inkompatible /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/system.o wird übersprungen bei der Suche nach /home/tux/fpcupdeluxe_2560/fpc/units/avr-embedded/rtl/system.o

Vielleicht musst du erst die alten Objektdateien aufräumen bevor du für den neuen Befehlsatz kompilierst?
-> Menü/Start/Aufräumen und Kompilieren

Antworten